LangGraph中使用add_conditional_edges无法终止function1流程的问题
问题排查与解决
问题根源
你给agent节点同时配置了两条出边:
- 一条固定指向
tool节点的普通边:workflow.add_edge('agent','tool') - 一条条件指向
END的条件边:workflow.add_conditional_edges("agent", my_condition,{ "end": END})
LangGraph中,同一个节点的多条出边会并行触发执行,所以agent节点执行完成后,既会运行tool节点,又会终止流程,最终结果就包含了function2的返回内容。
解决方案
移除那条不必要的固定边,只保留条件边即可。修改后的代码如下:
import os from dotenv import load_dotenv load_dotenv() from langchain_openai import ChatOpenAI from langgraph.graph import StateGraph, END from langgraph.graph import Graph, MessagesState from typing import Annotated, Any, Dict, Optional, List,Sequence, TypedDict from langgraph.graph.message import add_messages class AgentState(TypedDict): messages: Annotated[list, add_messages] def function1(state): return {"messages": "Hi"} def function2(state): return {"messages": "Hello"} def my_condition(state): return "end" workflow=StateGraph(AgentState) workflow.add_node("agent", function1) workflow.add_node("tool", function2) # 移除这条固定边 # workflow.add_edge('agent','tool') workflow.set_entry_point("agent") workflow.add_conditional_edges("agent", my_condition,{ "end": END}) app=workflow.compile() print(app.invoke({"messages": "tell me about you"}))
执行结果
修改后执行代码,会得到你预期的结果:
{'messages': [HumanMessage(content='tell me about you', id='xxx'), HumanMessage(content='Hi', id='xxx')]}
内容的提问来源于stack exchange,提问作者Sai3554
相关产品推荐
相关产品推荐

