LangGraph 监督者应如何在同一个聊天会话中路由多个代理?
摘要
一位开发者请求构建多代理 LangGraph 应用程序时的架构建议,该应用使用监督者处理动态路由、状态管理和同一聊天会话内的人机交互工作流。
我正在构建一个 LangGraph 应用程序,使用一个监督者和多个专用代理:Booking Agent、Payments Agent、Recommendations Agent、Support Agent。目前,监督者会对用户的第一条消息进行分类,并将选定的代理存储在检查点会话状态中。该聊天中的每条后续消息都会路由到同一个代理。这导致两个问题:用户可能在同一个聊天中更改主题——例如,先询问推荐,然后进行预订。一个提示可能需要多个代理:“为我推荐最好的酒店,然后预订最佳选项。” 在这里,推荐代理应首先运行并返回结构化结果。然后,预订代理接收这些结果并继续工作流。它还可以使用 LangGraph 中断暂停以进行确认。
约束条件:每个代理有自己的状态,并可能有待处理的中断。状态不得在代理之间泄露。依赖任务必须按顺序执行。独立任务可以并行运行。每次操作前必须检查权限。新消息不得意外恢复不相关的中断。代理目前在一个 Python 服务中作为子图运行。代理必须返回流式 UI 输出和结构化数据。
问题:您推荐使用什么 LangGraph 架构?应该使用路由器、监督者、编排者-工作者模式,还是子代理作为工具?代理是否应该使用单独的 thread_id 值、单独的 checkpoint_ns 值,或两者兼用?如何区分新消息和旨在响应特定中断的消息?在代理之间传递结构化结果的最佳方式是什么?监督者是否应该每轮创建一个任务 DAG,还是使用 ReAct 动态调用代理?如果所有代理都在同一个服务中运行,代理卡片、A2A 或代理网格是否有用?我正在寻找那些构建了具有人机交互工作流的持久化多代理 LangGraph 应用程序的人的可靠生产模式。
相似文章
大家如何处理代理之间的会话膨胀和状态移交?
一位用户讨论了在多代理工作流中会话膨胀和状态移交的挑战,寻求关于状态摘要、外部数据库或LangGraph和AutoGen等框架的解决方案的建议。
跨整个组织的简单多智能体架构。让一切保持循环。
本文描述了一个大规模运行的多智能体架构,使用LangGraph、CrewAI和Harbor来处理目标智能体、任务协调以及带有追踪的安全访问。
学习LangGraph:智能体、黑板与瓶颈之旅
一篇关于LangGraph的教育文章,涵盖智能体架构、黑板模式以及构建智能体系统时的常见瓶颈。
@ghumare64:我长期以来一直认为 agent harness 是一个分布式系统问题,而 chat session 从来都不是……
作者认为 agent harness 本质上是一个分布式系统问题,并引用了 DeepSeek 的 Super-agent 技术文章,该文章表明两级 Router/Worker 设计在延迟和委派可靠性方面优于单一 chat session,同时提出了长期记忆这一关键开放问题。
LangGraph 代理和其他代理框架是否正在变得过时?
作者反思了构建许多 LangGraph 代理的经历,并质疑在新生成模型下它们的必要性,主张使用更简单的单代理方案,配合 MCP 工具和受控端点,而不是复杂的预定义框架。