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

So sánh Router và Node trong LangGraph

Dưới đây là bài so sánh chi tiết giữa Router và Node trong LangGraph, giúp bạn dễ phân biệt và áp dụng chính xác trong từng tình huống.

Tiêu chíNode (Nút xử lý)Router (Bộ định tuyến)
Chức năng chínhXử lý logic cụ thể và trả về dữ liệu mớiĐịnh tuyến (chọn nhánh tiếp theo dựa trên trạng thái)
Trả vềMột dictionary chứa các giá trị mới cho stateMột chuỗi (string) tên của node tiếp theo
Điều hướng tiếp theoSử dụng add_edge() hoặc add_conditional_edges()Sử dụng add_conditional_edges() để ánh xạ chuỗi → node
Tính logicChứa logic chính như gọi LLM, xử lý dữ liệu...Chứa logic quyết định hướng đi tiếp theo
Dữ liệu trả vềVí dụ: { "graph_state": "Tôi chọn trà" }Ví dụ: "coffee_node" hoặc "tea_node"
Dùng khi nào?Khi cần thực hiện một hành động/ghi nhớ dữ liệuKhi cần rẽ nhánh theo điều kiện hoặc phân luồng logic
Ví dụ minh họa

Node bình thường trả về giá trị mới cho state:

def coffee_node(state):
    print("☕ Tôi chọn coffee")
    return {"result": "Bạn sẽ có một ly coffee"}

Router trả về tên của node tiếp theo:

def my_router(state):
    if state["preference"] == "coffee":
        return "coffee_node"
    elif state["preference"] == "tea":
        return "tea_node"
    else:
        return "unknown_node"

Khi nào dùng Router thay vì Node?

  • Khi bạn cần rẽ nhánh logic theo điều kiện → dùng router.

  • Khi bạn cần thực hiện hành động cụ thể (gọi LLM, tính toán, ghi log,...) → dùng node.

Tác giả: Đỗ Ngọc Tú
Công Ty Phần Mềm VHTSoft