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:
ModelGiá Output/MTok10M Token/ThángTiết kiệm vs Claude
Claude Sonnet 4.5$15.00$150Baseline
GPT-4.1$8.00$8047%
Gemini 2.5 Flash$2.50$2583%
DeepSeek V3.2$0.42$4.2097%
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,