Hiểu rõ hơn về add_conditional_edges
Chúng ta lấy 2 ví dụ để so sánh
builder.add_conditional_edges("node_1", decide_dring)
và
builder.add_conditional_edges("router", {
"coffee_node": "coffee_node",
"tea_node": "tea_node",
"fallback_node": "fallback_node"
})
Hai dòng builder.add_conditional_edges(...)
trên đều dùng để thêm điều kiện rẽ nhánh, nhưng cách dùng và mục đích của chúng có sự khác biệt rõ ràng.
Tiêu chí | builder.add_conditional_edges("node_1", decide_dring) |
builder.add_conditional_edges("router", { "coffee_node": ..., ... }) |
---|---|---|
Kiểu truyền đối số | Truyền một hàm điều kiện (condition function) | Truyền một dict ánh xạ giá trị trả về từ router đến các node tương ứng |
Ai quyết định rẽ nhánh? | Hàm decide_dring(state) sẽ quyết định đi đến node nào |
Hàm router(state) sẽ trả về một string → dict ánh xạ string đó đến node tương ứng |
Giá trị trả về của hàm | Trả về tên node dưới dạng string | Trả về tên node dưới dạng string, phải trùng với key trong dict |
Node được gắn vào | Gắn vào một node bình thường (node_1 ) |
Gắn vào một router node (router ) |
Sử dụng khi | Khi bạn muốn node đang xử lý tự quyết định rẽ nhánh tiếp theo | Khi bạn tách riêng logic định tuyến ra một router riêng biệt |
Ví dụ hàm điều kiện | def decide_dring(state): return "coffee_node" if ... else "tea_node" |
def router(state): return "coffee_node" / "tea_node" / "fallback_node" |
Thường dùng khi | Bạn muốn node_1 vừa xử lý vừa quyết định hướng đi tiếp |
Bạn muốn tách riêng xử lý (node) và định tuyến (router) một cách rõ ràng |
Dạng | Ý nghĩa |
---|---|
add_conditional_edges("node_1", decide_dring) |
Node xử lý xong rồi chọn tiếp theo đi đâu. |
add_conditional_edges("router", { ... }) |
Router chỉ quyết định hướng đi, còn xử lý nằm ở node khác. |
Khi nào dùng cái nào?
Nếu bạn muốn... | Hãy dùng... |
---|---|
Một node tự quyết định rẽ nhánh tiếp theo | add_conditional_edges("node_1", decide_dring) |
Một router chuyên dùng để rẽ nhánh | add_conditional_edges("router", { ... }) |
Tác giả: Đỗ Ngọc Tú
Công Ty Phần Mềm VHTSoft
Không có bình luận