LangGraph多智能体系统:如何添加并填充resolution状态字段?
问题解决方案
你的当前实现方向存在缺失,需要从智能体系统提示、agent_node节点逻辑两方面修改,必要时调整监督者逻辑,才能正确填充resolution字段。具体步骤如下:
1. 修改智能体系统提示,让LLM输出明确的解决状态标识
给每个智能体的系统prompt添加要求,让它在处理完查询后,用固定格式标注问题是否解决。示例如下:
system_prompt = """ 你是负责[具体任务]的智能体,处理用户查询后,请在输出结尾用固定格式标注是否解决问题:【RESOLUTION: True/False】 ...原有的系统提示内容... """
固定格式能让后续代码快速解析出resolution的布尔值。
2. 修复并修改agent_node函数,提取并更新resolution字段
你当前的agent_node只返回了messages,完全没处理resolution字段,且代码存在语法错误(HumanMessage构造时括号不匹配,智能体输出应使用AIMessage而非HumanMessage)。修改后的代码如下:
def agent_node(state, agent, name): result = agent.invoke(state) output_content = result["output"] # 解析输出中的解决状态 resolution = "【RESOLUTION: True】" in output_content return { "messages": [ AIMessage( content=output_content, name=name, additional_kwargs={"intermediate_steps": result["intermediate_steps"]} ) ], "resolution": resolution # 填充resolution字段 }
3. 可选:让监督者参与最终resolution判断(如果需要全局决策)
如果需要监督者根据所有智能体的交互结果最终确定问题是否解决,需做两处调整:
- 在监督者的系统prompt中,要求它根据历史消息判断问题是否解决,并返回包含resolution的决策
- 在监督者节点函数中,将判断结果赋值给
resolution字段返回
关键说明
- 你之前的
agent_node未返回resolution,导致状态里的该字段一直是初始的None,这是核心问题 - 智能体本身不知道要输出解决状态标识,必须通过系统prompt明确约束
内容的提问来源于stack exchange,提问作者user1452759
相关产品推荐
相关产品推荐

