TROISINH
Chuyên sâuTích hợp & Xây dựng

Xây chatbot AI

Hướng dẫn xây dựng chatbot AI từ kiến trúc hệ thống, tích hợp LLM, RAG đến triển khai production. Dành cho developer muốn master kỹ thuật xây dựng ứng dụng conversational AI.

Định nghĩa

Chatbot AI là ứng dụng phần mềm kết hợp Large Language Model (LLM) với kiến trúc hệ thống backend để xử lý hội thoại tự nhiên, duy trì ngữ cảnh đa lượt và thực thi tác vụ thông qua tích hợp công cụ bên ngoài. Khác với chatbot rule-based chỉ matching keyword, chatbot AI hiểu ý định ngữ nghĩa và có khả năng reasoning.

Giải thích chi tiết

Kiến trúc tổng quan

Xây chatbot không đơn thuần là gọi API OpenAI và trả về text. Hệ thống production cần kiến trúc phân tầng:

  • Frontend Layer: Interface chat (React/Vue/Flutter) với WebSocket hoặc SSE (Server-Sent Events) để nhận streaming response, hiển thị từng token như đang gõ thật
  • API Gateway: Xử lý authentication (JWT), rate limiting (token bucket), và load balancing
  • Orchestration Service: Quản lý state machine của hội thoại, business logic, routing giữa các module
  • LLM Adapter: Abstract layer chuẩn hóa interface giữa các provider (OpenAI, Claude, Gemini, Hugging Face) để dễ dàng switch model mà không đổi code
  • Memory Store: Redis cho session ngắn hạn (TTL 24h), Vector Database (Pinecone, Milvus, Qdrant) cho long-term memory và RAG
  • Tool Registry: Đăng ký các external functions (API tra cứu đơn hàng, Google Calendar, SQL database) để LLM có thể gọi qua function calling

Luồng xử lý tin nhắn (Message Pipeline)

Khi user gửi tin nhắn, hệ thống xử lý qua pipeline nghiêm ngặt:

  1. Preprocessing: Sanitize input (loại bỏ prompt injection cơ bản), kiểm tra toxicity, xác thực user quota
  2. Context Retrieval: Nếu dùng RAG, truy vấn vector DB để lấy top-k documents liên quan semantic nhất
  3. Prompt Assembly: Ghép system prompt (persona + constraints) + retrieved context + chat history (sliding window) + user message mới
  4. LLM Inference: Gọi API với streaming=true để giảm perceived latency, nhận từng chunk phản hồi
  5. Post-processing: Parse output, kiểm tra format (JSON mode nếu cần), lưu vào audit log
  6. Tool Execution: Nếu LLM trả về function_call, pause generation, thực thi API bên ngoài, inject kết quả vào context, gọi LLM lần 2 để diễn giải kết quả cho user

Quản lý ngữ cảnh và bộ nhớ

Phần khó nhất của chatbot AI là state management, không phải AI:

  • Window-based: Giữ 10-20 tin nhắn gần nhất, xóa cũ. Đơn giản nhưng mất ngữ cảnh xa (user hỏi "cái đó bao nhiêu tiền" sau 30 phút thì bot không nhớ "cái đó" là gì)
  • Summarization: Khi history dài, dùng model nhỏ (GPT-3.5) tóm tắt thành 200 tokens, thay thế history cũ. Tốn chi phí nhưng giữ được ý chính
  • Entity Extraction: Trích xuất thông tin quan trọng (tên, sở thích, mã đơn hàng) lưu vào relational database, query lại khi cần thay vì nhét vào prompt

Tích hợp công cụ (Function Calling)

Chatbot thông thường chỉ trả lời dựa trên kiến thức huấn luyện. Chatbot agentic có thể hành động:

# Ví dụ: Chatbot tra cứu đơn hàng TMĐT
def handle_message(user_msg, session_id):
    history = get_redis_history(session_id)
    
    response = openai.chat.completions.create(
        model="gpt-4",
        messages=[{"role": "system", "content": "Bạn là trợ lý TMĐT..."}, *history, {"role": "user", "content": user_msg}],
        functions=[{
            "name": "track_order",
            "description": "Tra cứu trạng thái đơn hàng",
            "parameters": {
                "type": "object",
                "properties": {
                    "order_id": {"type": "string", "pattern": "^[A-Z]{2}\\d[6]$"}
                },
                "required": ["order_id"]
            }
        }],
        function_call="auto"
    )
    
    if response.choices[0].finish_reason == "function_call":
        func = response.choices[0].message.function_call
        result = call_shipping_api(func.arguments)  # Thực thi thật
        # Gửi kết quả lại cho LLM để diễn giải lại cho user
        return generate_response_with_tool_result(result)
    
    return response.choices[0].message.content

Triển khai Production

  • Streaming: Dùng SSE thay vì chờ full response, giảm latency cảm nhận từ 5s xuống 0.5s
  • Rate Limiting: Token bucket giới hạn 10 requests/phút/user, tránh bill khổng lồ từ OpenAI khi bị spam
  • Semantic Caching: Cache embedding của câu hỏi, nếu user hỏi tương tự (>0.95 cosine similarity) thì trả cache thay vì gọi API, giảm 60% chi phí
  • Circuit Breaker: Nếu OpenAI timeout 3 lần liên tiếp, tự động fallback sang Claude hoặc model local, hoặc chuyển sang rule-based cơ bản
  • Monitoring: Theo dõi token usage, latency P95, hallucination rate (qua user feedback thumbs up/down)

Ví dụ thực tế

Chatbot hỗ trợ khách hàng cho sàn TMĐT Việt Nam

Tích hợp vào app Shopee/Tiki clone. Khi user hỏi "Đơn hàng SPX123 đâu rồi?", chatbot không đoán mà gọi API tra cứu thực tế từ đối tác vận chuyển (Giao Hàng Nhanh, J&T, Viettel Post), trả về trạng thái mới nhất. Nếu user đòi đổi trả, chatbot dùng RAG tra cứu chính sách từ vector DB (chứa policy mới nhất của công ty) và hướng dẫn thao tác trên app, hoặc tạo ticket chuyển CSKH nếu detect sentiment tiêu cực.

Trợ lý tuyển dụng nội bộ cho công ty công nghệ

HR chatbot nhận CV qua upload (PDF/DOCX), dùng LLM trích xuất thông tin thành structured JSON (học vấn, kinh nghiệm, kỹ năng), so sánh embedding với JD lưu trong Pinecone, đề xuất điểm matching (0-100%). Tự động gửi email mời phỏng vấn qua Google Calendar API khi matching >80%, lưu lịch sử trao đổi với từng ứng viên để recruiter nắm bắt context khi họ vào vòng sau.

Chatbot tư vấn y tế sơ bộ cho phòng khám tư nhân

Triển khai trên website phòng khám, hỏi triệu chứng bằng ngôn ngữ tự nhiên (ho, sốt, đau đầu). Dùng RAG trên cơ sở dữ liệu y khoa nội bộ và medical guidelines để đưa ra thông tin cơ bản. Không chẩn đoán (tránh liability) nhưng hướng dẫn sơ cứu ban đầu và đặt lịch khám với bác sĩ chuyên khoa phù hợp qua integration với hệ thống HIS (Hospital Information System), gửi reminder qua Zalo OA trước ngày khám.

Ứng dụng

Sinh viên CNTT và đồ án tốt nghiệp

  • Xây dựng chatbot đa năng cho trường học: tích hợp tra cứu thời khóa biểu, điểm số từ hệ thống quản lý đào tạo (UEL, UIT), trả lời FAQ về học phí, học bổng
  • Học kiến trúc hệ thống: Thiết kế microservices với message queue (RabbitMQ/Kafka), load balancing, database sharding khi scale lên 10k concurrent users

Lập trình viên và kỹ sư AI

  • Internal Tools: Chatbot query database bằng ngôn ngữ tự nhiên (text-to-SQL), giúp non-technical team tự lấy báo cáo doanh thu mà không cần biết SQL
  • DevOps Assistant: Chatbot kết nối với Slack, tra cứu log từ CloudWatch, restart server qua AWS API khi được yêu cầu bằng lệnh tự nhiên "kiểm tra server staging có vấn đề gì không"

Doanh nghiệp SME đến Enterprise

  • Customer Support: Giảm 60-70% ticket thường gặp (tra cứu thông tin, hướng dẫn sử dụng sản phẩm), chỉ escalate phức tạp lên human agent
  • Sales Assistant: Tư vấn sản phẩm 24/7, qualify leads tự động (hỏi budget, timeline), gửi báo giá personalized dựa trên yêu cầu khách hàng
  • Knowledge Management: Nhân viên mới hỏi chatbot về quy trình nội bộ, chính sách công ty, sách hướng dẫn thay vì mất 2 tiếng lục tung folder Drive hoặc làm phiền đồng nghiệp

So sánh

Đặc điểmChatbot Rule-based (If-else)Chatbot AI (LLM-based)AI Agent
Cách hiểu ý địnhPattern matching, keyword cứngSemantic understanding, ngữ cảnh mở rộngNgôn ngữ tự nhiên + planning
Xử lý ngữ cảnhKhông có memory hoặc rất hạn chếMulti-turn conversation, có short-term memoryMulti-turn + long-term memory + tool use
Khả năng họcManual update codeLearning từ dữ liệu huấn luyện của foundation modelLearning + adapt với môi trường + self-correction
Tích hợp dữ liệuHardcoded trong codeRAG để tra cứu documentsRAG + API + thao tác hệ thống phức tạp
Chi phí vận hànhThấp (dev cơ bản, server đơn giản)Trung bình-cao (API fees + vector DB + infrastructure)Cao (complex orchestration, nhiều LLM calls)
Ví dụMenu điện thoại tự động, bot đặt bàn cũChatGPT, Claude, customer support bot hiện đạiAutoGPT, Devin, hệ thống tự động hóa enterprise

Kết luận: Chatbot AI nằm giữa rule-based và AI Agent. Nó thông minh hơn chatbot truyền thống nhờ hiểu ngôn ngữ tự nhiên linh hoạt, nhưng chưa tự chủ như Agent. Điểm khác biệt cốt lõi so với rule-based là khả năng xử lý ngữ cảnh và generalization, trong khi so với Agent thì thiếu khả năng lập kế hoạch đa bước phức tạp.

Bài viết liên quan

Cùng cụm Xây dựng hệ thống AI

  • API AI là gì? — Hiểu cơ chế giao tiếp với LLM qua HTTP requests, authentication và rate limiting trước khi xây dựng chatbot
  • Cách tích hợp AI vào hệ thống — Chiến lược embedding AI vào codebase hiện có, xử lý async tasks và error handling khi triển khai
  • AI trong sản phẩm — Product mindset khi đưa chatbot vào user journey, thiết kế UI/UX conversational interface và phương pháp đo lường hiệu quả
  • AI SaaS là gì? — Mô hình kinh doanh và kiến trúc multi-tenant khi biến chatbot thành sản phẩm cho nhiều khách hàng doanh nghiệp

Đọc tiếp

  • AI trong sản phẩm — Sau khi xây xong chatbot, học cách đưa vào product roadmap và tối ưu user experience để tăng retention
  • AI SaaS là gì? — Nếu muốn commercialize chatbot thành sản phẩm cho nhiều doanh nghiệp, tìm hiểu mô hình multi-tenant và billing dựa trên usage
  • API AI là gì? — Nền tảng cơ bản về cách thức hoạt động của AI API, hữu ích nếu cần optimize cost và latency cho chatbot đã xây dựng

On this page