2026-07-31T04:29:19.640Z
LangChain 多代理切换:审核状态、上下文和结果
审核 LangChain 跨路线、状态、工具协议、上下文、目的地工作、等待和验证结果的切换。
对于 LangChain 多代理切换 ,成功的转移工具调用只是第一个证据。当声明的路由被允许、控制状态移动到预期代理、工具调用周期关闭、所需上下文到达、目的地开始有用的工作并且所请求的结果被独立验证时,将切换视为健康。 这个答案很重要,因为图表可以在传输损坏后继续运行。 goto 可以命名一个节点,而 active agent 仍可以命名另一个节点。传输工具可以在没有匹配工具响应的情况下返回。新代理可以从不完整的上下文开始。当外部任务尚未完成时,它还可以生成完善的最终消息。 本指南将这些边界转化为无内容的收据,并重播八个合成案例。这些示例反映了 2026 年 7 月 30 日检索到的官方 LangChain 和 LangGraph 文档。在那次检查中,PyPI 报告LangChain 1.3.14和LangGraph 1.2.10。固定并重新检查您自己的依赖项版本,因为状态和流合同可能会发生变化。 选择切换以进行有状态的直接对话 LangChain 的交接文档通过状态定义模式。工具更新变量,例如 current step 或 active agent ;后续模型配置或图形路由读取该变量。状态在轮流中持续存在,因此当前活跃的专家可以继续直接与用户交谈。 在以下情况下,这是一个很好的选择: 对话经历连续的阶段; 能力只能在满足前提条件后才能解锁; 活跃专家需要在下一回合保持控制; 用户应该直接与该专家互动。 不要仅仅因为任务复杂就开始使用多个代理。官方多代理概述说,具有合适工具和动态指令的单个代理通常可以完成这项工作。它将切换与子代理、技能、路由器和自定义工作流程区分开来。 当“代理”的身份主要是提示、工具或阶段的变化时,合理的默认设置是一个代理加中间件。当专家需要真正不同的状态、工具、生命周期逻辑或所有权时,选择单独的代理子图。该选择会影响证据契约: 带有中间件的单一代理: 证明状态变量已更改并且下一个模型调用收到了预期的配置。 多个子图: 也证明图路由到达了目的地并且目的地接收到了正确的上下文。 切换是有状态的和多跳的。它们不是并行扇出的自然选择,并且它们本身并不能证明专家完成了用户的工作。 按顺序审核六个边界 记录的多子图示例返回带有 goto 的 Command 、 active agent 更新、 ToolMessage 和 graph=Command.PARENT 。当切换工具更新消息历史记录时,LangChain 明确要求 ToolMessage 使用匹配的 tool call id 。如果没有该响应,模型的工具请求 响应周期就会出现畸形。 这些字段定义了重要的检查,但它们并不涵盖整个操作: 边界 最低限度的证据 失败状态 安全的下一步行动 路线 声明 to agent 且 goto === to agent ROUTE REJECTED 阻止传输;恢复已声明的路线 控制 前状态命名发送者,后状态命名接收者 STALE CONTROL 在重试之前协调持久状态 工具协议 一个 ToolMessage 关闭精确的 tool call id OPEN TOOL PROTOCOL 修复另一次模型调用之前的历史记录 语境 每个必需的上下文键都存在于目的地 CONTEXT INCOMPLETE 重建最低限度转会合同 目的地 预期节点记录已承认的开始 DESTINATION NOT STARTED 检查路由和节点准入 结果 特定于任务的验证程序记录预期结果 FALSE COMPLETE 重新打开任务;不要相信最后的消息 上下文检查应该比较模式,而不是副本。例如,销售移交可能需要 request type 、 customer tier 和 consent status 。收据记录了这些关键名称,也许还记录了内容摘要;它不需要客户的消息或工具参数。 这个边界对于单独的子图尤其重要。 LangChain 警告他们的消息流需要显式上下文工程。传递所有内容可能会使上下文膨胀或暴露不相关的数据。传递太少可以让接收者自信地解决不同的任务。定义每条路线所需的密钥,并且当它们不存在时关闭失败。 目的地开始接收与控制状态更新是分开的。即使销售节点从未被接纳、立即崩溃或在队列中等待,Reducer 也可以接受 active agent: "sales agent" 。状态突变就是活动。目标事件确定接收器实际开始。 重播八箱收据 本文的工件仅使用合成结构字段: 它的分类器应用优先规则。早期的失败会阻止后来的绿色信号隐藏它们: 使用以下命令运行完整的本地装置: 重播从八个案例中产生了八个预期分类: 这不是关于 LangChain 的故障率声明。这是对决策规则的检验。有用的观察结果是,对齐的路由和状态仍然不够:仅更改工具消息 ID、上下文键集、目的地开始时间或结果接收会改变判决。 该装置还可以防止走捷径。如果最终状态为 complete 但不存在结果收据,则分类器将返回 FALSE COMPLETE ,即使每个特定于切换的字段都有效。迁移正确性和任务正确性是不同的问题。 保留合法等待 目的地代理可能需要有人批准购买、通过授权渠道披露秘密或在不可逆转的选项之间进行选择。这不会自动导致切换卡住。 使用以下命令记录有效等待: 一个负责任的 owner ; 有界 reason ; 未来的 deadlineUtc ; 耐用的 resumeTokenId ; 目标状态和所需的上下文已经保留。 当所有五个事实都存在时,将运行路由至 WAITING ON APPROVAL 。通知所有者并在截止日期或做出决定之前保留图表。重复的模型调用并不能解决权限缺失的问题;他们只花费预算并冒着重复效应的风险。 如果等待没有所有者或截止日期,请将其归类为不确定而不是健康。如果恢复令牌丢失,人工回复可能无法重新连接到正确的图形状态。如果目的地在仍在等待时声明完成,则结果验证器优先于友好的最终响应。 这种区别为操作者提供了实际的干预边界: 等待: 保留状态并将决定呈现给其所有者。 过时的控制或开放协议: 停止自动延续并协调证据。 错误完成: 重新打开任务并运行结果验证程序。 健康: 什么也不做。 默认是观察,而不是恢复。重新路由可能会重复产生副作用,而重构的消息可能会改变接收者所看到的内容。在干预可能改变外部状态之前需要明确的授权。 将收据放在图表旁边 收集其证据变得可知的每个边界: 1. 在切换创建时: 发送者、预期接收者、路由合同版本、工具调用 ID、所需的上下文键名称。 2. 状态缩减后: 观察到 active agent ,结果图范围,匹配工具消息ID。 3. 在目的地准入: 节点身份、开始时间、尝试身份、上下文合约结果。 4. 在等待检查点: 所有者、原因、截止日期和不透明的简历令牌 ID。 5. 任务验证时: 验证者姓名、结果、新鲜度和非敏感收据 ID。 不要假设私有状态通道是私有遥测。这LangGraph图API文档警告私人频道在传输值时不会自动编辑。显式限制流式传输的密钥,或发出单独的最小化运行状况事件。安全切换收据应排除提示、消息正文、工具参数、工具结果、秘密和绝对本地路径。 对路由和上下文合约进行版本控制。如果没有版本,旧的发件人在传输新目的地不再理解的字段时可能看起来很健康。在重试期间保持一个稳定的操作标识,以便第二次传输不会成为第二次外部操作。 最后,选择一个与任务相匹配的结果验证者。支持移交可能需要更改票证状态;采购交接可能需要来自目标系统的订单 ID;编码切换可能需要测试以及预期的工件。 LLM 的最终消息不是该收据。 Sidewisp 目前处于私密预览阶段。 实时早期访问站点和文章系统可用,但当前网站存储库中未提供生产代理运行状况收集、LangChain 适配器和自动恢复。上面的收据是您今天可以实施的操作员模式。如果对这些边界的一个冷静的健康视图可以帮助您的团队,那么私人预览候补名单是合适的下一步。