Nhảy đến nội dung chính

Đị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