Alpha Web3 & AI
Trang chủ › Trí Tuệ Nhân Tạo

Xây dựng chatbot hỗ trợ khách hàng tự động với Python và OpenAI API

Ban biên tập Alpha Web3 & AI · · Cập nhật
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ầnVai tròLựa chọn gợi ý
Giao diện chatNhận tin nhắn, hiển thị trả lờiWidget 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ờiOpenAI API qua thư viện Python chính thức
Kho tri thứcTài liệu chính sách, FAQ, hướng dẫnCơ 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átTheo dõi chất lượng, chi phí, lỗiGhi 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:

  1. Khởi tạo client từ thư viện, client tự đọc khóa từ biến môi trường.
  2. 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.
  3. Gọi API với tên mô hình đã chọn và danh sách tin nhắn.
  4. 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:

  1. 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.
  2. 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.
  3. 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.
  4. 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

  1. 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.
  2. Chạy bộ kiểm thử mỗi khi đổi prompt, mô hình hay tài liệu.
  3. 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.
  4. 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