Die von Langgraph tools_condition vorgefertigte Methode leitet an andere Knoten statt an den END-Knoten weiterPython

Python-Programme
Anonymous
 Die von Langgraph tools_condition vorgefertigte Methode leitet an andere Knoten statt an den END-Knoten weiter

Post by Anonymous »

Ich habe mit Langgraph ein recht einfaches Diagramm erstellt. Ich habe mich für die vorgefertigte Funktion tools_condition von Langgraph entschieden. Also habe ich es importiert und wie folgt verwendet:

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)
Das resultierende Diagramm sieht wie folgt aus:
Image

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)
Die unerwünschte bedingte Kante ist jetzt weg:
Image

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

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post