paint-brush
Cách tôi phát triển ứng dụng AI du lịch với ChatGPT với tư cách là Người quản lý sản phẩm và Người không phải là lập trình viêntừ tác giả@dinpd
4,645 lượt đọc
4,645 lượt đọc

Cách tôi phát triển ứng dụng AI du lịch với ChatGPT với tư cách là Người quản lý sản phẩm và Người không phải là lập trình viên

từ tác giả NPD PM8m2023/08/24
Read on Terminal Reader

dài quá đọc không nổi

Tôi không chỉ có thể xây dựng (những gì tôi nghĩ là) một ứng dụng hữu ích mà còn bắt tay vào các khuôn khổ hiện đại và có thời gian thực hành mà không bị chìm đắm trong việc học cú pháp và khuôn khổ, đó chính xác là những gì tôi muốn. Tôi nghĩ đó là một vấn đề lớn và mở ra cơ hội phát triển phần mềm cho nhiều người hơn.
featured image - Cách tôi phát triển ứng dụng AI du lịch với ChatGPT với tư cách là Người quản lý sản phẩm và Người không phải là lập trình viên
NPD PM HackerNoon profile picture
0-item
1-item

Tôi đã làm nó! Tôi mất khoảng 100 giờ nhưng tôi đã có thể viết và triển khai một ứng dụng thực sự với sự trợ giúp của ChatGPT.


Kể từ đó, tôi đã dành thêm khoảng 100 giờ nữa để duy trì và bổ sung các tính năng, vì vậy đã biến thành một dự án đầy đam mê.


Tiền đề của thử nghiệm là "Tôi, với tư cách là người quản lý sản phẩm, người đã không tích cực viết mã trong một thời gian dài, có thể thiết kế, xây dựng và triển khai một ứng dụng bằng ChatGPT không?"


Tôi có nền tảng vững chắc, đã có bằng Cử nhân CS và nghiên cứu về nhiều khía cạnh khác nhau của công nghệ (thiết kế hệ thống, phát triển, nhà phát triển, lưu trữ) nhưng tôi đã không bắt tay vào phát triển trong hơn 10 năm qua.


Tôi có ý thức khá tốt về sản phẩm, chuyển sang hiểu biết về cách xây dựng sản phẩm lặp đi lặp lại và cách kiểm tra chức năng, điều mà tôi nghĩ là đã giúp ích.


Như thường lệ với quá trình phát triển SW, hơn 80% thời gian dành cho việc khắc phục sự cố và gỡ lỗi.

Tại sao du lịch AI

Trong nỗ lực kết hợp thứ gì đó hữu ích xung quanh API ChatGPT, tôi nghĩ rằng GPT có đủ điều kiện duy nhất để giải quyết vấn đề lập kế hoạch du lịch - tìm ra địa điểm để đi, điểm tham quan cần đến, hành trình, v.v. Có rất nhiều quyết định cần phải đưa ra được thực hiện khi đi du lịch và nhờ ai đó tổng hợp tất cả những thứ này lại cho bạn dựa trên sở thích hoặc hoàn cảnh riêng biệt, là điều mà tôi nghĩ sẽ có giá trị.

Mã hóa bằng ChatGPT

Tôi đã dành khoảng 6 tuần để làm việc vào ban đêm và một vài ngày cuối tuần, có thể tổng cộng là 100 giờ. Tôi đã có tài khoản ChatGPT+ nên tôi ổn định hơn khi truy cập bot và truy cập GPT4.


Đây là những phát hiện của tôi thông qua quá trình này:


  • ChatGPT đã giúp tôi chọn các công cụ phù hợp cho công việc (khung Vue.js cho ứng dụng một trang) và tạo ra mã theo các lần lặp lại. Tôi chắc chắn không thể làm được nếu không có nó. Như đã nói, chắc chắn đã có sự phức tạp:


    1. Các giới hạn mà giao diện người dùng ChatGPT áp đặt (4k mã thông báo trên đầu vào và đầu ra và xung quanh khoảng 15k ngữ cảnh) khá hạn chế và cuối cùng bạn phải thực hiện nhiều phân đoạn trong câu hỏi của mình. Điều này ít hơn lý tưởng và cần nhiều nỗ lực hơn. Tôi chưa thử truy cập qua CLI - chỉ cần đọc ở đâu đó rằng nó không áp đặt các giới hạn tương tự - đáng để kiểm tra.

    2. Chất lượng của việc "hiểu mã" không nhất quán - đôi khi nó hoạt động tốt hơn và đôi khi nó kém hơn. Tôi không chắc nó có liên quan gì.

    3. Cùng với đó, lời khuyên của tôi là hãy bắt đầu cấu trúc mã sớm (chia mã thành các hàm nhỏ hơn) vì ChatGPT sẽ không tự động thực hiện việc đó cho bạn nhưng sẽ làm được nếu bạn yêu cầu. Nó làm cho việc khắc phục sự cố dễ dàng hơn.

    4. GPT4 bị loại bỏ sau 25 truy vấn trong hơn 3 giờ và chuyển bạn sang mô hình "mặc định", mà tôi đoán là 3,5 - Điều thú vị là nó hoạt động khá tốt và tôi gần như muốn nói rằng nó hoạt động tốt hơn GPT4, nhưng vì tôi chưa bắt đầu với 3,5, đây không phải là sự so sánh táo với táo.


      Cập nhật: giới hạn gần đây đã được nâng lên thành 50 truy vấn trong 3 giờ.


Môi trường phát triển và triển khai

  • Tôi đã sử dụng Replit cho IDE thời đại mới. Đó là một khái niệm hay và có lẽ là tương lai, đặc biệt nếu họ có thể kết hợp nó với sự tích hợp Codex/ChatGPT có ý nghĩa. AI mà họ hiện có không hữu ích lắm vì nó không sử dụng mã từ dự án và yêu cầu tất cả các thao tác tương tự như tôi đã làm với ChatGPT. Tuy nhiên, tôi thực sự thích cách Replit tích hợp với Github để kiểm soát nguồn và cách nó xử lý quá trình dàn dựng.


  • Tôi đã triển khai với Cloudflare vì tôi muốn triển khai dưới dạng đám mây gốc. Tôi đã sử dụng các trang CF cho giao diện người dùng và một công nhân cho phần phụ trợ (cổng API). Tôi thích cách các trang tích hợp với Github cho CICD - điều đó thực sự thú vị - về cơ bản ứng dụng sẽ tự triển khai lại trên bất kỳ cam kết nào đối với nhánh chính.


    Nói chung, CF rất hiệu quả vì nó đơn giản hóa rất nhiều vấn đề liên quan đến mạng lưới.

Lời nhắc

Tôi đã dành khá nhiều thời gian và thực hiện nhiều lần lặp lại lời nhắc, loại bỏ nó và cố gắng giải quyết các đặc điểm riêng. Một trong những điểm quyết định ban đầu là liệu có nên yêu cầu API ChatGPT trả về một danh sách văn bản mà sau đó tôi sẽ cố gắng hiểu và phân loại hay để nó trả về JSON đã có cấu trúc được tích hợp sẵn trong đó. Viễn cảnh cần phải diễn giải dữ liệu văn bản thành một cấu trúc khiến tôi sợ hãi vì các cấu trúc ngày càng phức tạp hơn khi tôi yêu cầu ngày càng nhiều dữ liệu từ ChatGPT (như được chứng minh bằng đoạn trích này)


Lịch Trình Du Lịch Thụy Sĩ 10 Ngày


Vì lý do này, tôi đã quyết định tiến hành nhắc ChatGPT cho JSON. Tuy nhiên, điều này có tác dụng phụ riêng là JSON không phải lúc nào cũng có cấu trúc tốt hoặc có quá nhiều sự mơ hồ trong lời nhắc, trong đó ChatGPT sẽ trả về kết quả mà tôi không mong đợi. Tôi có thể nói rằng tôi đã dành gần 25% thời gian cho việc tinh chỉnh nhanh chóng và xử lý lỗi JSON. Đó thực sự là một trải nghiệm học hỏi. Cuối cùng, đây là lời nhắc tôi đã kết thúc:


 SYSTEM_PROMPT = `You are a helpful travel assistant. You perform the requests with diligence and make the best attempt to answer the questions, never refusing due to complexity etc. Reset the conversation if I mention a new location in my user prompt. Return the results in JSON format as an array of objects. Make sure JSON format is complete and valid and does not include unescaped special characters. Please avoid escaping double quotes and instead use single quotes or another method to prevent JSON parsing issues. Do not use "\n" newline symbols in the middle of element text. Each object in the array should have the following keys: - "title" - "description" - "airportCode" (for the destination airport) - "poi" (array of points of interest) - "lodging" (array of lodging options) - "itinerary" (array of objects, each representing a day) - "considerations" - "history" (history related to the destination) - "key_local_phrases" (array of common local phrases) - "cost" The "itinerary" key should contain an array of objects, each object representing a day with the key "activities", which is itself an array of objects. Each activity object should have the following keys: - "description" - "waypoint" (name of the location, not coordinates) - "cost" - "travelTime" - "travelOptions" If travel is involved within the itinerary, include "Travel To" as part of the daily activity and provide the travel time, travel options, and associated cost. Each step in the itinerary should also suggest representative local "food" to try. Focus on most interesting points of interest, lodging, and activities. Consider activities that are popular, affordable, and recommended by the travelers. Make sure you cover the entire duration of the trip or outing. If it says "week-long", it has to cover the entire week. It's OK to group multiple days or weeks together if it's a longer trip. If it doesn't give a timeframe, take a guess based on the nature of a trip. Considerations should include travel restrictions and visa requirements, typical weather, criminogenic conditions including which areas to avoid, recommendations on visit timing, parking situation, and ways to save on travel costs. Here is an example of the desired output format: [ { "title": "Sample Title", "description": "Sample Description", "airportCode": "XYZ", "poi": ["Sample POI1", "Sample POI2"], "lodging": ["Sample Lodging1", "Sample Lodging2"], "itinerary": [ { "day": "Sample Day 1-2 - City or Place", "location": "Wikipedia identifiable name of the place in city,_country or city,_state format", "activities": [ { "description": "Sample Activity1", "waypoint": "Sample Waypoint1 connected to the activity", "cost": "$100", "travelTime": "30 minutes", "travelOptions": "Taxi or Bus" }, { "description": "Sample Activity2", "waypoint": "Sample Waypoint2 connected to the activity", "cost": "$50", "travelTime": "1 hour", "travelOptions": "Ferry or Bus" } ], "food": ["Sample Food1 with short description", "Sample Food2 with short description"] }, { "day": "Sample Day 3 - City or Place", ... }, { "week": "Sample Week 2 - City or Place", ... } ], "considerations": "Sample considerations text", "history": "Sample history text", "key_local_phrases": ["Sample phrase 1 - translation", "Sample phrase 2 - translation"], "cost": "Sample total cost" } ]`;


Lưu ý: Tính đến thời điểm viết bài này, OpenAI vừa phát hành các cải tiến tinh chỉnh mà tôi nghĩ có thể rất hữu ích để làm cho dữ liệu có cấu trúc JSON trở nên mạnh mẽ và nhất quán hơn.

Danh sách mong muốn

Mục lớn nhất trong danh sách mong muốn của tôi tại thời điểm này là tích hợp gen môi trường nhà phát triển / mã AI. Dán đi dán lại mọi thứ, cố gắng không làm rối cấu trúc mã (đặc biệt là khi cơ sở mã ngày càng lớn hơn) chắc chắn để lại nhiều điều đáng mong đợi.


Tôi nghĩ rằng bước tiến lớn tiếp theo trong thế hệ mã AI sẽ là tích hợp các trình soạn thảo mã thông minh để phân tích mã thành các phần bên trong và có thể cung cấp cũng như chấp nhận đầu vào có liên quan đến/từ mô hình mà không yêu cầu người dùng thực hiện việc này theo cách thủ công.


Bước tiếp theo sau đó sẽ là tích hợp với trình duyệt cho mục đích gỡ lỗi, cuối cùng là tạo ra một chu trình gỡ lỗi lặp đi lặp lại khép kín.


Đó sẽ là một dự án thú vị để thực hiện!


Lưu ý: Tôi tò mò muốn biết Google sẽ làm gì với dự án IDX - có thể chỉ có vậy thôi.

Bản tóm tắt

Nhìn chung, tôi không chỉ có thể xây dựng (những gì tôi nghĩ là) một ứng dụng hữu ích mà còn bắt tay vào các khung công tác hiện đại và có thời gian thực hành mà không bị chìm đắm trong việc học cú pháp và khung, đó chính xác là những gì tôi muốn. Tôi nghĩ đó là một vấn đề lớn và mở ra cơ hội phát triển phần mềm cho nhiều người hơn.


Bạn có thể tìm thấy ứng dụng tại VoyageAI.app . Ứng dụng này đang và sẽ được sử dụng miễn phí, không có quảng cáo và không cần đăng nhập (do đó không sử dụng dữ liệu cá nhân).