Mở Đầu: Tại Sao Cần State Machine Trong AI Agent?
Trong quá trình xây dựng AI agent, tôi đã gặp rất nhiều trường hợp where code trở nên rối loạn khi xử lý logic phức tạp. Khi conversation agent của tôi cần handle 15 loại intent khác nhau, if-else chain dài 200 dòng là cơn ác mộng. Đó là lý do tôi chuyển sang **LangGraph StateGraph** - một paradigm thay đổi cách tôi nghĩ về AI workflow.
Nhưng trước khi đi vào kỹ thuật, hãy xem bức tranh chi phí để hiểu tại sao việc tối ưu số lượng LLM calls lại quan trọng:
| Model | Giá Output/MTok | 10M Token/Tháng | Tiết kiệm vs Claude |
| Claude Sonnet 4.5 | $15.00 | $150 | Baseline |
| GPT-4.1 | $8.00 | $80 | 47% |
| Gemini 2.5 Flash | $2.50 | $25 | 83% |
| DeepSeek V3.2 | $0.42 | $4.20 | 97% |
Với HolySheep AI, bạn có thể truy cập **tất cả các model trên với cùng một API endpoint**. Đăng ký tại đây để nhận tín dụng miễn phí và bắt đầu xây dựng agent ngay hôm nay.
StateGraph Là Gì?
**StateGraph** là một đồ thị có hướng (Directed Graph) nơi mỗi node đại diện cho một trạng thái (state) và mỗi cạnh đại diện cho một transition. Điểm khác biệt so với chain thông thường:
Chain tuyến tính - hạn chế
user -> classify -> respond -> end
StateGraph - linh hoạt
user -> classify
├── intent=order -> process_order -> payment -> confirm -> end
├── intent=refund -> verify_refund -> process_refund -> end
├── intent=support -> route_support -> ... -> end
└── intent=unknown -> clarify -> classify (loop back)
Ưu điểm tôi thấy khi sử dụng StateGraph:
- **Debug dễ dàng**: Có thể trace exact path agent đã đi qua
- **State persistence**: Lưu trạng thái giữa các lần gọi, hỗ trợ multi-turn conversation
- **Conditional routing**: Rẽ nhánh logic dựa trên state hiện tại
- **Loop support**: Xử lý các trường hợp cần retry hoặc clarification
Cài Đặt Và Cấu Hình
Cài đặt các thư viện cần thiết
pip install langgraph langchain-core langchain-holysheep
Hoặc cài đặt riêng lẻ
pip install langgraph
pip install langchain-core
Ví Dụ Thực Chiến: Customer Support Agent
Đây là production agent tôi đã deploy cho một startup e-commerce. Agent này xử lý 3 loại request chính: đơn hàng, khiếu nại, và thông tin sản phẩm.
import os
from typing import TypedDict, Literal
from langgraph.graph import StateGraph, END
from langchain_holysheep import HolySheep
Khởi tạo client HolySheep - base_url bắt buộc là api.holysheep.ai
client = HolySheep(
api_key=os.getenv("YOUR_HOLYSHEEP_API_KEY"),
base_url="https://api.holysheep.ai/v1"
)
Định nghĩa State Schema - đây là "memory" của agent
class AgentState(TypedDict):
user_input: str
intent: str
extracted_data: dict
response: str
confidence: float
conversation_history: list
def classify_intent(state: AgentState) -> AgentState:
"""Node 1: Phân loại intent từ user input"""
messages = [
{"role": "system", "content": """Bạn là classifier. Phân loại user message thành:
- order: hỏi về đơn hàng, theo dõi, đặt hàng
- complaint: khiếu nại, hoàn tiền, phản hồi tiêu cực
- product: hỏi về sản phẩm, so sánh, tìm kiếm
- general: câu hỏi chung, greeting
Trả lời JSON format: {"intent": "...", "confidence": 0.xx}"""},
{"role": "user", "content": state["user_input"]}
]
response = client.chat.completions.create(
model="deepseek-v3.2", # Model giá rẻ, đủ cho classification
messages=messages,
temperature=0.1,
response_format={"type": "json_object"}
)
result = eval(response.choices[0].message.content)
state["intent"] = result["intent"]
state["confidence"] = result["confidence"]
return state
def route_intent(state: AgentState) -> Literal["handle_order", "handle_complaint", "handle_product", "general"]:
"""Node 2: Route đến handler phù hợp dựa trên intent"""
intent = state["intent"]
if state["confidence"] < 0.6:
return "general" # Fallback nếu không chắc chắn
intent_map = {
"order": "handle_order",
"complaint": "handle_complaint",
"product": "handle_product"
}
return intent_map.get(intent, "general")
def handle_order(state: AgentState) -> AgentState:
"""Node 3a: Xử lý yêu cầu liên quan đến đơn hàng"""
messages = [
{"role": "system", "content": """Bạn là order assistant. Trích xuất order_id từ message.
Nếu không có order_id,
Tài nguyên liên quan
Bài viết liên quan