Cách Tôi Xây Dựng Chatbot Riêng Mà Không Có Kinh Nghiệm Lập Trình: Bài Học Kinh Nghiệm
Tôi đã xây dựng một chatbot hoạt động từ kiến thức lập trình bằng không trong 5 tháng sử dụng GPT API và ChatGPT 4 — đây là cách tôi làm và những gì tôi học được với tư cách người hoàn toàn mới.
Cập nhật (2026): Chatbot này đã phát triển thành Sydney! Sau nhiều lần cải tiến, Sydney giờ có mặt tại /ask/ và tập trung vào nội dung blog cùng các sản phẩm.
Kể từ khi chatGPT ra mắt năm ngoái, tôi đã bị cuốn hút bởi generative AI và muốn khám phá việc xây dựng chatbot riêng sử dụng API có sẵn. Là người hoàn toàn mới không có kinh nghiệm lập trình, đây là mục tiêu đầy tham vọng. Tuy nhiên, tôi quyết tâm thúc đẩy bản thân để có được kinh nghiệm thực tế làm việc với các hệ thống AI. Động lực của tôi là vượt ra ngoài việc chỉ sử dụng các công cụ này, và bắt đầu phát triển hiểu biết sâu hơn về cách chúng được xây dựng. Tôi quyết định tận dụng nội dung hiện có bằng cách tạo chatbot có thể trả lời câu hỏi về các bài viết trên blog. Xây dựng chatbot này từ đầu là trải nghiệm học hỏi vô giá, mặc dù nó vẫn còn một chặng đường dài phía trước. Trong bài viết này, tôi sẽ chia sẻ một số bài học chính trên hành trình này với tư cách người mới học code.
Vậy thách thức của tôi là gì?
- Đầu tiên, tôi không biết lập trình. Tôi không biết nhiều (nếu có) HTML (ngoài việc dùng
<h1>hay<h2>), chứ đừng nói đến Python hay bất kỳ ngôn ngữ lập trình nào khác. - Tất nhiên, tôi không biết cách deploy ứng dụng trên cloud, chưa từng nghe đến Docker, Cloud Run, v.v...
- Tôi thậm chí không thể migrate website này từ Bluehost sang GCP vì tôi không biết về MySQL, virtual instance, v.v...
- Tôi không biết SSH, public key, private key hay bất cứ thứ gì tương tự T.T
- Tôi cũng không có nền tảng về machine learning hay toán nâng cao.
- Và tôi không còn trẻ :| Tôi 40 tuổi, có công việc toàn thời gian.
Nhưng sau khoảng 5 tháng, đây là phiên bản 0.1 của chatbot mà tôi xây dựng, sử dụng OpenAI GPT API và rất nhiều sự giúp đỡ của ChatGPT 4. Tôi không đùa khi nói phiên bản 0.1 vì nó vẫn còn xa (rất xa) so với kỳ vọng nhưng nó đang "hoạt động" (tạm được). Những gì nó có thể làm:
- Nếu bạn hỏi chatbot câu hỏi về các chủ đề tôi đã viết trước đây, chatbot có thể tổng hợp nội dung từ nhiều bài viết và đưa ra phản hồi.
- Điểm này quan trọng với tôi vì trước đây tôi viết về việc triển khai các giải pháp có sẵn nhưng vấn đề chung là những chatbot đó không tổng hợp nội dung trên các bài viết. Chatbot "cảm giác" giống chức năng tìm kiếm hơn là chatbot.
- Nó được thiết kế để trả lời câu hỏi về bài blog của tôi nên nếu bạn hỏi chủ đề khác, nó sẽ từ chối.
- Kiến thức của nó bao gồm tất cả bài viết tôi đã đăng trong 17 năm qua, đến cuối tháng 9/2023. Đó là khoảng 500 bài.
Có rất nhiều thứ chatbot CHƯA thể làm, như:
- Không thể nhớ chính xác một con số cụ thể trong bài viết tôi đã viết.
- Không thể trả lời câu hỏi về ngày xuất bản một cách chính xác.
- Tôi chắc chắn nó có rất nhiều vấn đề bảo mật T.T (buồn, buồn, buồn)
- và nhiều hơn nữa
Cập nhật tháng 2/2024:
Phiên bản 2.1 của chatbot đã có sẵn và bạn có thể xem bài viết "Chatbot v2.10 Unveiled: Elevating User Experience with Enhanced Speed, Scalability, and Simplicity."
Vậy tôi đã học được gì qua giai đoạn đầu của hành trình này?
1. ChatGPT 4 có thể hoàn thành hầu hết các tác vụ lập trình cơ bản/trung cấp
nếu bạn biết mình đang tìm gì và cụ thể với prompt/chia sẻ bối cảnh.
Chìa khóa ở đây là biết cần hỏi gì cho máy làm. Nó có thể làm "hầu hết" các tác vụ lập trình miễn là tác vụ đủ cụ thể. Tôi nói "hầu hết" có chủ đích vì nó liên tục thất bại khi làm theo một số ví dụ được đưa ra.
Code mà chatGPT 4 tạo thường modular đủ để có thể tái sử dụng sau. Máy thường bao gồm các comment cụ thể xuyên suốt code.
2. Hãy học các khóa lập trình/IT cơ bản
Nếu bạn ở vị trí của tôi, bạn sẽ không biết hỏi những gì mình không biết. Một số cách để vượt qua:
- Giải thích mục tiêu tổng thể của dự án cho chatGPT và nhờ nó đưa tổng quan về tất cả các bước. Điều này sẽ cho bạn ý tưởng sơ bộ về các lĩnh vực cần học thêm
- Nếu bạn chỉ mù quáng làm theo chatGPT, nó có thể không có nghĩa. (Tôi đã thử rồi :P)
- Các khóa học cơ bản này rất hữu ích với tôi. Chúng cho tôi kiến thức rộng (nhưng không sâu) để biết các mảnh ghép khác nhau phải khớp với nhau thế nào.
3. Hoàn thành các khóa MIỄN PHÍ, ngắn gọn về Building Systems with the ChatGPT API
Hai khóa về ChatGPT API sẽ giúp bạn tiết kiệm rất nhiều thời gian:
Mặc dù các khóa này dành cho người mới, khi tôi gặp chúng lần đầu vài tháng trước, tôi không đủ kiến thức cơ bản để theo dõi. Vì vậy tôi ngừng xem sau khoảng 10 phút. Sau đó khi tôi thử làm việc với OpenAI API và các prompt khác nhau một thời gian, bị kẹt và rồi nhớ đến các khóa này. Về cơ bản chúng cho tôi tất cả câu trả lời cần thiết để xây dựng phiên bản 0.1 này
Khóa prompt engineering đặc biệt hữu ích vì nó cho tôi thấy cách hướng dẫn chatGPT output theo một cách nhất định. Ví dụ, tôi sẽ không nghĩ đến loại system message này nếu không xem khóa:
Make sure to ask the user relevant follow-up questions."
Định dạng bullet point tương thích HTML và xuống dòng giúp người dùng chatbot dễ đọc hơn nhiều khi câu trả lời dài.
4. Tự đọc tài liệu OpenAI
Tôi lười (:D) nên ban đầu không bận tâm đọc tài liệu từ OpenAI. Tôi chỉ copy paste tài liệu vào chatGPT rồi nhờ nó dùng làm nguồn tham khảo và hướng dẫn tôi với code thực tế. Không hiệu quả lắm và tôi lãng phí khá nhiều thời gian trước khi quyết định tự đọc tài liệu rồi đưa ra yêu cầu cụ thể hơn cho chatGPT
5. ChatGPT dễ bị lạc khi cuộc hội thoại quá dài hoặc khi bạn bắt đầu/dừng sau vài giờ
Tôi đoán không nên ngạc nhiên vì tương tự con người, chatGPT dễ bị lạc khi cuộc hội thoại quá dài. Ý tôi là gì?
- Nó bắt đầu đề xuất code vô nghĩa
- Hoặc không thể nhớ một đoạn code/lời khuyên khác mà nó vừa đưa ra
Ngoài ra khi bạn ngừng làm việc vài giờ (hoặc qua đêm) rồi quay lại, ngay cả sau khi nhờ chatGPT đọc toàn bộ lịch sử hội thoại và xác nhận đã đọc, tương tự con người, tôi phải cung cấp lại rất nhiều bối cảnh gần đây và code base. Nếu không, nó dường như hoàn toàn "quên" nhiều chi tiết đã nói trước đó.
6. GPT 4 API đắt nên hãy dùng GPT 3.5 nhiều nhất có thể
Ví dụ, tôi lãng phí $20 dùng GPT 4 API cho tác vụ tóm tắt mà GPT 3.5 có thể làm tốt. Cũng hãy chắc chắn test code trên vài file trước khi "thả" nó trên hàng trăm file vì chi phí GPT API có thể tăng nhanh.
7. OpenAI Cookbook là người bạn của bạn
Một lần nữa, tôi mắc sai lầm không bận tâm (hay chính xác hơn là không biết) kiểm tra OpenAI sample cookbook trước. Ở đó, bạn có thể tìm:
- Cách đếm token sử dụng tiktoken: điều này quan trọng vì nếu chỉ hỏi chatGPT, nó sẽ dùng phương pháp cũ cho GPT 3 chứ không phải cách tiếp cận mới nhất
- Trả lời câu hỏi dựa trên embeddings: tôi cơ bản dùng cùng cách tiếp cận để xây dựng phiên bản 0.1 của chatbot.
8. Context window length khó làm việc cho người mới
Các model GPT khác nhau có giới hạn max token khác nhau và chỉnh sửa code để đảm bảo nằm trong giới hạn token không dễ cho người mới (như tôi). Tôi phải dành rất nhiều thời gian cho phần này vì tôi có nhiều bài blog rất rất dài.
Ngoài ra cho chatbot, tôi muốn nó tổng hợp nội dung từ nhiều bài viết trước khi trả lời nên thường gặp giới hạn token.
9. Version control, version control và version control
Điều này có lẽ hiển nhiên với chuyên gia nhưng với người mới code như tôi, tôi phải học theo cách khó. Và tôi cũng phải tìm tần suất git commit phù hợp cho dự án này, vì tôi là người đóng góp/coder duy nhất.
Kết luận
Tóm lại, hành trình xây dựng chatbot với tư cách người mới đã dạy tôi tầm quan trọng của việc học kiến thức cơ bản, tận dụng ChatGPT cho các tác vụ có mục tiêu, nghiên cứu tài liệu API, và sử dụng version control. Mặc dù vẫn còn nhiều chỗ cải thiện, tôi giờ đã có prototype cơ bản có thể tổng hợp thông tin từ các bài blog để trả lời câu hỏi. Trong tương lai, ưu tiên của tôi là mở rộng knowledge base cho chatbot để bao gồm nội dung mới, cải thiện khả năng truy xuất chi tiết chính xác từ bài viết, và tối ưu phản hồi để nằm trong giới hạn token. Tôi cũng dự định tiếp tục nâng cao kỹ năng trong các lĩnh vực như prompt engineering và cloud deployment.
Đó là từ tôi. Tôi sẽ tiếp tục cập nhật bài học kinh nghiệm và chia sẻ khi phiên bản mới có sẵn.
Bạn đã thử xây dựng thứ gì đó với OpenAI API với tư cách non-developer chưa? Tôi rất muốn nghe điều gì khiến bạn vấp ngã nhất — với tôi chắc chắn là giới hạn context window và version control :P
Một tuần sau
Sau 1 tuần sprint, tôi đã hoàn thành các cập nhật bổ sung cho chatbot. Để đọc thêm, xem tại đây "Evolving My Chatbot: A One-Week Sprint to Smarter Interactions."
Thân mến,
Chandler





