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

Langgraph Supervisor SDK状态异常:save_order无法获取draft_order

问题分析与解决方案

核心问题根源

  1. 子智能体未关联自定义状态Schema:订单智能体order_agent创建时未指定state_schema=AgentStateSchema,导致其内部状态更新无法同步到Supervisor维护的全局状态中。
  2. 状态更新策略导入缺失:代码中未显式导入update_dicts,可能导致draft_order字段的更新逻辑未生效。
  3. 状态同步机制未对齐:子智能体与Supervisor的状态Schema不一致,造成create_order/update_order更新的订单数据无法被save_order读取。

具体修复步骤

1. 补全状态Schema的正确定义

确保导入update_dicts并正确定义状态字段的更新策略:

from langchain.agents import AgentState
from langgraph.graph.state import update_dicts
from typing import Annotated

class AgentStateSchema(AgentState):
    draft_order: Annotated[dict, update_dicts] = {}

2. 为子智能体绑定全局状态Schema

创建order_agent时必须关联自定义状态Schema,确保子智能体的状态变更能同步到全局:

# Order Agent
order_agent = create_agent(
    model=ChatOpenAI(model="gpt-4o",temperature=0,max_completion_tokens=None,max_retries=2),
    tools=[create_order,update_order,save_order],
    system_prompt=prompt.format(),
    name="order_agent",
    state_schema=AgentStateSchema  # 关键:绑定全局状态Schema
)

3. 修正工具参数与状态访问逻辑

检查create_order/update_order的参数完整性,确保tool_call_id正确传入;同时优化save_order的状态读取方式:

# 修正create_order参数
@tool
def create_order(source: str, destination: str, items: list, tool_call_id: str):
    order = {"source": source, "destination": destination, "items": items}
    return Command(
        update={
            "draft_order": order,
            "messages": [
                ToolMessage(content="Created a Draft Order", tool_call_id=tool_call_id)
            ]
        }
    )

# 修正save_order状态读取
@tool
def save_order(runtime: ToolRuntime):
    # 直接从全局状态读取draft_order
    draft_order = runtime.state.get("draft_order", {})
    # 后续发送API的逻辑

验证逻辑

修复后执行流程:

  • create_order/update_order的更新会同步到全局状态
  • save_order可读取到最新的订单数据
  • Supervisor与子智能体的状态完全对齐,无数据隔离问题

内容的提问来源于stack exchange,提问作者Triko

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 01:28:10