Code: Select all
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)

Es macht keinen Sinn, dass es eine bedingte Kante gibt, die vom Assistant zum Report_checker zeigt, wenn ich spezifiziere, dass es sich um eine reguläre Kante handelt. Warum ist das Standardverhalten von tools_condition so, dass es bedingte Kanten zu allem anderen macht, wenn es sich nicht um einen Tool-Aufruf handelt, und nicht einfach zu ENDE geht?
Ich weiß das, denn wenn ich die Routing-Argumente darüber übergebe, wohin es gehen soll, verschwinden die zusätzlichen bedingten Kanten:
Code: Select all
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)

Warum leitet die Standard-tools_condition den Hauptknoten an einen anderen Ort als den END-Knoten?
Mobile version