You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 08:54:55