Xây dựng chatbot hỗ trợ khách hàng tự động với Python và OpenAI API
Một chatbot hỗ trợ khách hàng dùng Python và OpenAI API gồm bốn phần chính: mô hình ngôn ngữ để hiểu và trả lời, system prompt định hình vai trò và giới hạn, cơ chế truy xuất tài liệu nội bộ (RAG) để trả lời đúng thông tin của doanh nghiệp, và các công cụ để tra cứu đơn hàng hoặc chuyển cho nhân viên khi cần. Bài viết hướng dẫn kiến trúc và các bước xây dựng ở mức thiết kế, kèm những lưu ý quan trọng về chất lượng, chi phí và bảo vệ dữ liệu khách hàng.
Bước 0: Xác định phạm vi trước khi viết dòng mã nào
Chatbot thất bại thường không vì công nghệ mà vì phạm vi không rõ. Hãy trả lời:
- Chatbot trả lời những loại câu hỏi nào? Ví dụ: chính sách đổi trả, giờ mở cửa, trạng thái đơn hàng, hướng dẫn sử dụng sản phẩm.
- Câu hỏi nào bắt buộc chuyển cho người thật? Ví dụ: khiếu nại, hoàn tiền, vấn đề pháp lý, khách hàng bực bội.
- Kênh triển khai: website, Zalo, Messenger hay ứng dụng?
- Đo thành công bằng gì: tỷ lệ tự giải quyết, mức hài lòng, thời gian phản hồi?
Lấy lịch sử câu hỏi thật của khách hàng, nhóm lại theo chủ đề và bắt đầu với vài nhóm phổ biến nhất.
Kiến trúc tổng quan
| Thành phần | Vai trò | Lựa chọn gợi ý |
|---|---|---|
| Giao diện chat | Nhận tin nhắn, hiển thị trả lời | Widget web, webhook của nền tảng nhắn tin |
| Backend | Điều phối hội thoại, gọi API, lưu lịch sử | Python với FastAPI hoặc Flask |
| Mô hình ngôn ngữ | Hiểu câu hỏi, soạn trả lời | OpenAI API qua thư viện Python chính thức |
| Kho tri thức | Tài liệu chính sách, FAQ, hướng dẫn | Cơ sở dữ liệu vector như pgvector, Chroma, Qdrant |
| Công cụ nghiệp vụ | Tra đơn hàng, tạo phiếu hỗ trợ | API nội bộ được gọi qua function calling |
| Giám sát | Theo dõi chất lượng, chi phí, lỗi | Ghi log hội thoại đã ẩn danh, dashboard |
Bước 1: Gọi API cơ bản
Cài thư viện openai cho Python, tạo khóa API trong tài khoản OpenAI và lưu vào biến môi trường, không ghi trực tiếp trong mã. Luồng cơ bản:
- Khởi tạo client từ thư viện, client tự đọc khóa từ biến môi trường.
- Tạo danh sách tin nhắn gồm chỉ dẫn hệ thống và câu hỏi của khách.
- Gọi API với tên mô hình đã chọn và danh sách tin nhắn.
- Lấy nội dung trả lời từ kết quả và gửi lại cho giao diện.
OpenAI cung cấp nhiều mô hình với mức giá và năng lực khác nhau; với chatbot hỗ trợ khách hàng, mô hình cỡ nhỏ thường đủ tốt và rẻ hơn đáng kể. Kiểm tra tài liệu chính thức để biết tên mô hình và API hiện hành, vì chúng được cập nhật thường xuyên.
Ghi nhớ hội thoại
API không tự nhớ các lượt trước. Backend phải lưu lịch sử của từng phiên và gửi kèm trong mỗi lần gọi. Khi hội thoại dài, hãy cắt bớt hoặc tóm tắt các lượt cũ để kiểm soát chi phí, vì phí tính theo số token gửi đi và nhận về.
Bước 2: Viết system prompt
System prompt là "bản mô tả công việc" của chatbot. Nên bao gồm:
- Vai trò: trợ lý chăm sóc khách hàng của cửa hàng X, xưng hô thế nào.
- Phạm vi: chỉ trả lời về sản phẩm, đơn hàng, chính sách của cửa hàng.
- Nguồn thông tin: chỉ dùng thông tin trong tài liệu được cung cấp; nếu không có, nói rõ và đề nghị chuyển nhân viên.
- Giới hạn: không hứa hoàn tiền, không đưa ra cam kết ngoài chính sách, không bàn chủ đề ngoài phạm vi.
- Định dạng: câu trả lời ngắn gọn, thân thiện, có bước cụ thể.
Kỹ năng viết chỉ dẫn hiệu quả được trình bày chi tiết trong bài prompt engineering.
Bước 3: RAG, cho chatbot đọc tài liệu của bạn
Mô hình không biết chính sách đổi trả của cửa hàng bạn. Nếu không được cung cấp, nó có thể bịa ra một chính sách nghe hợp lý. RAG (Retrieval-Augmented Generation) giải quyết bằng cách:
- Chuẩn bị tài liệu: FAQ, chính sách, hướng dẫn được chia thành các đoạn nhỏ có nghĩa.
- Tạo embedding: mỗi đoạn được chuyển thành vector bằng API embedding và lưu vào cơ sở dữ liệu vector.
- Truy xuất: khi khách hỏi, câu hỏi cũng được chuyển thành vector, hệ thống tìm các đoạn tài liệu gần nghĩa nhất.
- Tạo câu trả lời: đưa các đoạn tìm được vào ngữ cảnh kèm chỉ dẫn "chỉ trả lời dựa trên tài liệu sau".
Chất lượng RAG phụ thuộc lớn vào tài liệu nguồn: tài liệu lỗi thời hoặc mâu thuẫn sẽ cho câu trả lời sai. Cần quy trình cập nhật kho tri thức mỗi khi chính sách thay đổi. Hiểu cơ chế tạo câu trả lời, được giải thích trong bài LLM hoạt động thế nào, giúp bạn biết vì sao bước này quan trọng.
Bước 4: Gọi công cụ để tra cứu dữ liệu thật
Với câu hỏi "Đơn hàng của tôi đến đâu rồi?", chatbot cần dữ liệu thời gian thực. Tính năng function calling (gọi công cụ) cho phép bạn mô tả các hàm như tra cứu trạng thái đơn hàng theo mã đơn, kèm tham số. Mô hình quyết định khi nào cần gọi và trả về yêu cầu gọi hàm với tham số; backend của bạn thực thi hàm, kiểm tra quyền, rồi gửi kết quả lại cho mô hình để soạn câu trả lời.
Nguyên tắc an toàn quan trọng: backend luôn kiểm tra quyền. Đừng để chatbot trả thông tin đơn hàng chỉ vì người dùng nhập đúng một mã đơn; cần xác thực khách hàng đã đăng nhập hoặc xác minh thông tin bổ sung.
Bước 5: Chuyển cho người thật đúng lúc
- Khi khách yêu cầu gặp nhân viên.
- Khi chatbot không tìm thấy thông tin sau một hai lần thử.
- Khi phát hiện cảm xúc tiêu cực mạnh hoặc chủ đề nhạy cảm.
- Khi yêu cầu cần quyền quyết định như hoàn tiền ngoại lệ.
Khi chuyển, gửi kèm tóm tắt hội thoại để nhân viên không phải hỏi lại từ đầu.
Bảo vệ dữ liệu khách hàng
Chatbot xử lý thông tin cá nhân như tên, số điện thoại, địa chỉ, lịch sử mua hàng, nên cần được thiết kế như mọi hệ thống xử lý dữ liệu nhạy cảm:
- Chỉ gửi lên API những dữ liệu thực sự cần cho câu trả lời; ẩn hoặc che bớt thông tin khi có thể.
- Đọc chính sách dữ liệu của nhà cung cấp API về lưu trữ và sử dụng dữ liệu; cân nhắc tùy chọn dành cho doanh nghiệp.
- Ghi log có kiểm soát quyền truy cập và thời hạn lưu giữ.
- Phòng chống prompt injection: không để nội dung người dùng nhập ghi đè quy tắc truy cập dữ liệu.
- Tuân thủ quy định bảo vệ dữ liệu cá nhân tại Việt Nam và các thị trường bạn phục vụ.
Những biện pháp trong hướng dẫn ngăn ngừa rò rỉ dữ liệu trong doanh nghiệp cũng áp dụng cho chatbot, vì đây là một kênh mới mà dữ liệu có thể đi ra ngoài.
Đánh giá và cải tiến liên tục
- Xây bộ câu hỏi kiểm thử từ câu hỏi thật, kèm câu trả lời mong đợi.
- Chạy bộ kiểm thử mỗi khi đổi prompt, mô hình hay tài liệu.
- Theo dõi các cuộc hội thoại bị chuyển cho người thật hoặc bị đánh giá thấp để tìm lỗ hổng.
- Theo dõi chi phí theo ngày và theo hội thoại.
Với triển khai, backend có thể chạy trên máy chủ hoặc nền tảng serverless; mô hình serverless như mô tả trong bài AWS Lambda phù hợp khi lượng tin nhắn biến động theo giờ.
Câu hỏi thường gặp
Chi phí vận hành chatbot dùng OpenAI API khoảng bao nhiêu?
Chi phí phụ thuộc mô hình chọn, độ dài hội thoại, lượng tài liệu đưa vào ngữ cảnh và số lượng khách hàng. Hãy ước tính bằng bảng giá theo token hiện hành, chạy thử với lưu lượng thật trong vài ngày và đặt giới hạn chi tiêu trong tài khoản.
Chatbot có trả lời tốt bằng tiếng Việt không?
Các mô hình hiện nay xử lý tiếng Việt khá tốt cho hội thoại chăm sóc khách hàng. Chất lượng phụ thuộc nhiều vào tài liệu nguồn tiếng Việt rõ ràng và system prompt quy định cách xưng hô, giọng điệu phù hợp với thương hiệu.
Làm sao để chatbot không bịa chính sách?
Dùng RAG để cung cấp tài liệu chính sách, yêu cầu chỉ trả lời dựa trên tài liệu, cho phép nói không biết và chuyển nhân viên khi thiếu thông tin. Đồng thời kiểm thử định kỳ với các câu hỏi dễ gây bịa.
Có thể dùng mô hình khác thay OpenAI không?
Có. Kiến trúc RAG và gọi công cụ áp dụng được với nhiều nhà cung cấp và cả mô hình mã nguồn mở tự triển khai. Thiết kế lớp trung gian trong mã giúp bạn đổi nhà cung cấp mà không phải viết lại toàn bộ hệ thống.
Bài liên quan

AI Tạo Sinh (Generative AI): Cuộc cách mạng sáng tạo nội dung
Generative AI là gì, tạo văn bản, hình ảnh, âm thanh, video và mã nguồn ra sao. Ứng dụng trong sáng tạo nội dung, giới hạn, rủi ro và cách dùng có trách nhiệm.

AI tạo sinh (Generative AI) thay đổi ngành thiết kế đồ họa ra sao?
AI tạo sinh thay đổi quy trình, vai trò và kỹ năng của nhà thiết kế đồ họa thế nào: từ phác ý tưởng, sản xuất biến thể đến vấn đề bản quyền và cách thích nghi.

AI trong thiết kế đồ họa: Midjourney, DALL-E và Stable Diffusion
So sánh Midjourney, DALL-E và Stable Diffusion về chất lượng hình, khả năng kiểm soát, chi phí, quyền dùng thương mại và trường hợp phù hợp với từng công cụ.

Đạo đức AI: Vấn đề bản quyền và sự thiên vị trong thuật toán
Phân tích hai vấn đề đạo đức lớn của AI: bản quyền dữ liệu huấn luyện và nội dung tạo ra, thiên vị thuật toán từ đâu mà có, hậu quả thực tế và cách giảm thiểu.