Định tuyến(Router) trong LangGraph
Router trong LangGraph là gì?
Trong LangGraph, Router
là một Node đặc biệt (tức một bước – step
) cho phép bạn tạo ra các nhánh (branches) dựa trên dữ liệu hoặc trạng thái hiện tại.
Nói đơn giản:
Router giống như ngã ba đường — dựa trên state hiện tại, bạn chọn hướng đi tiếp theo (chuyển tới node A, B hoặc C).
Khi nào bạn cần dùng Router?
Khi bạn có logic như:
-
Nếu người dùng chọn "Coffee" → đi tới node xử lý coffee.
-
Nếu người dùng chọn "Tea" → đi tới node xử lý trà.
-
Nếu không rõ → hỏi lại hoặc kết thúc.
Bạn không muốn xử lý tất cả trong một node, mà tách nhánh theo logic, thì Router
là giải pháp.
Cách dùng Router trong LangGraph
def my_router(state):
if state["preference"] == "coffee":
return "coffee_node"
elif state["preference"] == "tea":
return "tea_node"
else:
return "unknown_preference"
Đăng ký Router node trong graph
builder = StateGraph(StateSchema)
builder.add_node("start", start_node)
builder.add_node("router", my_router)
builder.add_node("coffee_node", coffee_node)
builder.add_node("tea_node", tea_node)
# Router branching
builder.add_edge("start", "router")
builder.add_conditional_edges(
"router",
{
"coffee_node": "coffee_node",
"tea_node": "tea_node"
}
)
Ví dụ trên, Router không thực thi hành động chính mà chọn node tiếp theo dựa trên logic phân nhánh.
Lợi ích của Router
-
Tách logic phức tạp thành các bước nhỏ.
-
Tạo flow rõ ràng và dễ debug.
-
Xây dựng app agent có khả năng phân nhánh tùy theo trạng thái.
-
Dễ áp dụng trong các hệ thống có điều kiện (if/else).
Gợi ý dùng thực tế
Use case | Router logic |
---|---|
Trợ lý cá nhân | Phân nhánh theo yêu cầu người dùng: tra cứu lịch, gửi mail, hoặc dịch văn bản |
Ứng dụng học tập | Phân hướng học viên đến bài kiểm tra phù hợp trình độ |
Ứng dụng đặt hàng | Nếu sản phẩm còn → đặt hàng; nếu không → đề xuất khác |
Tác giả: Đỗ Ngọc Tú
Công Ty Phần Mềm VHTSoft