LangGraph: Xây dựng Chatbot CSKH biết tự sửa sai và xin lỗi khách hàng (Stateful AI)

AI Hunter

Member
Bạn dùng LangChain để làm chatbot.
Khách hàng hỏi: "Hoàn tiền cho tôi đơn hàng #123".
Chatbot kiểm tra: "Đơn #123 không tồn tại." -> Kết thúc hội thoại.
Khách hàng: 😡 (Tức giận vì gõ nhầm số, nhưng Bot đã tắt).

LangGraph Xây dựng Chatbot CSKH biết tự sửa sai và xin lỗi khách hàng (Stateful AI).jpg

Vấn đề ở đây là LangChain (cũ) chạy theo đường thẳng (Chain). Hết đường là hết phim.
Giải pháp là **LangGraph**. Nó cho phép tạo ra các vòng lặp (Loops). Nếu đơn hàng sai? Quay lại bước hỏi khách hàng. Nếu khách chửi? Quay lại bước xin lỗi.

Đây là công nghệ giúp xây dựng **Stateful Agent** (Agent có trạng thái) - tương lai của AI tương tác.

1. Tư duy LangGraph: Node và Edge​

Khác với Chain, LangGraph hoạt động như một sơ đồ tư duy (Flowchart):
  • State (Trạng thái): Cuốn sổ tay ghi chép chung giữa các bước (ví dụ: lịch sử chat, lỗi hiện tại).
  • Nodes (Nút): Các hành động cụ thể (Gọi LLM, Tra cứu Database, Gửi Email).
  • Edges (Cạnh): Logic điều hướng. (Nếu A thì sang Node 1, nếu B thì sang Node 2).

2. Kịch bản CSKH "Tự sửa sai"​

Chúng ta sẽ dựng một con Bot xử lý hoàn tiền (Refund) với logic:
1. Nhận mã đơn hàng.
2. Kiểm tra Database.
3. Nếu Mã sai -> Quay lại hỏi khách (Loop).
4. Nếu Mã đúng -> Thực hiện hoàn tiền -> Kết thúc.

3. Triển khai Code (Python)​


Bước 1: Cài đặt
Bash:
pip install langgraph langchain langchain_openai

Bước 2: Định nghĩa State
Đây là "bộ nhớ" của con Bot.
Python:
from typing import TypedDict, Annotated
from langgraph.graph import StateGraph, END

# State lưu trữ tin nhắn và trạng thái lỗi
class AgentState(TypedDict):
    messages: list
    error_count: int
    order_id: str

Bước 3: Định nghĩa các Nodes (Hành động)

Python:
def ask_info_node(state: AgentState):
    # Nếu có lỗi trước đó, hãy xin lỗi và hỏi lại
    if state.get("error_count", 0) > 0:
        return {"messages": ["Mã đơn hàng không đúng ạ. Bạn vui lòng kiểm tra và nhập lại nhé."]}
    return {"messages": ["Xin chào, vui lòng cung cấp mã đơn hàng cần hoàn tiền."]}

def process_refund_node(state: AgentState):
    # Giả lập check database
    user_msg = state["messages"][-1] # Lấy tin nhắn mới nhất của user
   
    # Logic giả: Nếu mã là '123' thì đúng, còn lại là sai
    if "123" in user_msg:
        print("✅ Đã tìm thấy đơn hàng. Đang hoàn tiền...")
        return {"order_id": "123", "messages": ["Đã hoàn tiền thành công cho đơn #123!"]}
    else:
        print("❌ Không tìm thấy đơn hàng.")
        # Tăng biến đếm lỗi để Node kia biết đường xử lý
        return {"error_count": state.get("error_count", 0) + 1}

Bước 4: Định nghĩa Logic điều hướng (Router)

Python:
def router(state: AgentState):
    # Nếu tìm thấy order_id rồi thì kết thúc
    if state.get("order_id"):
        return "end"
    # Nếu chưa có (nghĩa là nhập sai), quay lại hỏi tiếp
    return "ask_again"

Bước 5: Vẽ đồ thị (Graph Construction)
Đây là phần thú vị nhất của LangGraph.

Python:
workflow = StateGraph(AgentState)

# Thêm các nút
workflow.add_node("bot_ask", ask_info_node)
workflow.add_node("process_refund", process_refund_node)

# Thiết lập điểm bắt đầu
workflow.set_entry_point("bot_ask")

# Vẽ đường đi: Bot hỏi -> Chờ user trả lời -> Xử lý
# (Lưu ý: Trong thực tế cần 1 bước chờ User Input, ở đây giả lập nối thẳng)
workflow.add_edge("bot_ask", "process_refund")

# Logic điều kiện: Sau khi xử lý xong thì đi đâu?
workflow.add_conditional_edges(
    "process_refund",
    router,
    {
        "end": END,          # Xong việc -> Kết thúc
        "ask_again": "bot_ask" # Sai -> Quay lại hỏi (LOOP)
    }
)

app = workflow.compile()

4. Chạy thử (Simulation)​

Khi chạy, luồng đi sẽ như sau nếu khách nhập sai lần đầu:

1. Node `bot_ask`: "Vui lòng nhập mã."
2. User: "Mã là 999" (Sai).
3. Node `process_refund`: Check sai.
4. Router: Thấy sai -> Điều hướng về `bot_ask`.
5. Node `bot_ask`: (Thấy `error_count` > 0) -> "Mã sai rồi, nhập lại đi ạ."
6. User: "Mã là 123" (Đúng).
7. Router: Thấy đúng -> `END`.

Kết luận​

LangGraph cho phép bạn xây dựng những hệ thống AI có khả năng "dai như đỉa" - không bao giờ bỏ cuộc cho đến khi giải quyết xong vấn đề cho khách hàng. Nó biến Chatbot từ một máy trả lời thụ động thành một nhân viên CSKH biết linh hoạt xử lý tình huống.
 
Back
Top