Langgraph Tools_condition предварительно созданный метод маршрутизации к другим узлам вместо конечного узлаPython

Программы на Python
Anonymous
Langgraph Tools_condition предварительно созданный метод маршрутизации к другим узлам вместо конечного узла

Сообщение Anonymous »

Я строил довольно простой график с помощью Langgraph. Я решил использовать встроенную функцию Tools_condition из langgraph. Поэтому я импортировал его и использовал следующим образом:

Код: Выделить всё

graph_builder = StateGraph(State)
graph_builder.add_node("chatbot", assistant)
graph_builder.add_node("tools", lambda state: run_tool(state, tools={"athena_query":athena_query}))
graph_builder.add_node("report_checker", report_check)

graph_builder.add_edge(START, "chatbot")
graph_builder.add_conditional_edges(
"chatbot",
tools_condition
)
# graph_builder.add_edge("chatbot", "tools")
graph_builder.add_edge("tools", "chatbot")
graph_builder.add_edge("chatbot", "report_checker")

graph = graph_builder.compile(checkpointer=memory)
Результирующий график выглядит следующим образом:
[img]https://i.sstatic. net/82PcHv1T.png[/img]

Не имеет смысла существование условного ребра, указывающего от помощника к report_checker, когда я указываю, что это обычное ребро. Почему по умолчаниюtools_condition создает условные ребра для всего остального, если это не вызов инструмента, а не просто переход к END?
Я знаю это, потому что если я передам аргументы маршрутизации, указывающие, куда он должен идти, лишние условные ребра исчезнут:

Код: Выделить всё

graph_builder = StateGraph(State)
graph_builder.add_node("chatbot", assistant)
graph_builder.add_node("tools", lambda state: run_tool(state, tools={"athena_query":athena_query}))
graph_builder.add_node("report_checker", report_check)

graph_builder.add_edge(START, "chatbot")
graph_builder.add_conditional_edges(
"chatbot",
tools_condition,
{
"END": END,
"tools": "tools",
}
)
graph_builder.add_edge("tools", "chatbot")
graph_builder.add_edge("chatbot", "report_checker")

graph = graph_builder.compile(checkpointer=memory)
Нежелательный условный край теперь исчез:
[img]https://i.sstatic .net/261ANI2M.png[/img]

Почему по умолчаниюtools_condition маршрутизирует основной узел куда-то, кроме узла END?

Подробнее здесь: https://stackoverflow.com/questions/790 ... ead-of-end

Вернуться в «Python»