Đọc thêm: Thinking in LangGraph
Nguồn: Dịch và chú thích từ tài liệu chính thức Thinking in LangGraph
Khi xây dựng agent với LangGraph, bạn sẽ:
- Chia bài toán thành các bước rời rạc — gọi là nodes.
- Mô tả các quyết định và luồng chuyển tiếp gi ữa các nodes — gọi là edges.
- Kết nối chúng qua một state dùng chung mà mọi node đều có thể đọc và ghi.
Bài toán ví dụ: Agent xử lý email khách hàng
Giả sử bạn nhận được yêu cầu từ product team:
Agent phải:
- Đọc email đến từ khách hàng
- Phân loại theo mức độ khẩn cấp và chủ đề
- Tìm kiếm tài liệu liên quan để trả lời câu hỏi
- Soạn thảo phản hồi phù hợp
- Chuyển lên human agent nếu vấn đề phức tạp
- Lên lịch follow-up khi cần thiết
Các tình huống cần xử lý:
1. Câu hỏi đơn giản: "Làm sao reset mật khẩu?"
2. Bug report: "Tính năng export bị crash khi chọn PDF"
3. Vấn đề billing: "Tôi bị charge 2 lần!"
4. Feature request: "Cho tôi xin dark mode"
5. Vấn đề kỹ thuật phức tạp: "API tích hợp của chúng tôi bị lỗi 504 không liên tục"
Bước 1: Map out your workflow as discrete steps
Bắt đầu bằng cách xác định các bước rời rạc trong quy trình. Mỗi bước sẽ trở thành một node (một function làm một việc cụ thể). Sau đó phác thảo cách các bước kết nối với nhau.
Các nodes cần có:
readEmail— Trích xuất và parse nội dung email.classifyIntent— Dùng LLM phân loại mức độ khẩn cấp và chủ đề, sau đó route đến action phù hợp.searchDocumentation— Query knowledge base để tìm thông tin liên quan.lookupCustomerHistory— Lấy thông tin lịch sử của khách hàng (dành cho vấn đề billing/account).bugTracking— Tạo hoặc cập nhật issue trong hệ thống tracking.draftResponse— Sinh ra phản hồi phù hợp.humanReview— Chuyển lên human agent để phê duyệt hoặc xử lý trực tiếp.sendReply— Gửi email phản hồi.
Flowchart (Agent Architecture):
Execution Graph (State Transfer):
💡 Note - Giải phẫu Execution Graph:
- State Mutation:
State(khối màu vàng) không bao giờ bị xóa đi mà chỉ được "nhồi thêm" dữ liệu. Các đường nét đứt đại diện cho việc truyền State vào Node.- Dynamic Routing: Các mũi tên nét đôi (
===) đại diện cho việc Node tự động định tuyến rẽ nhánh (Decision) bằng cách trả vềCommand, thay vì dùng Conditional Edge cứng nhắc từ bên ngoài.- Interrupt:
humanReviewlà một trạm dừng chân. State được lưu an toàn xuống Checkpointer và luồng sẽ tạm ngưng tại đây cho đến khi có can thiệp của con người.