Код: Выделить всё
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)

Не имеет смысла существование условного ребра, указывающего от помощника к 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)

Почему по умолчаниюtools_condition маршрутизирует основной узел куда-то, кроме узла END?>
Подробнее здесь: https://stackoverflow.com/questions/790 ... ead-of-end
Мобильная версия