LangGraph 监督者应如何在同一个聊天会话中路由多个代理?

Reddit r/AI_Agents 工具

摘要

一位开发者请求构建多代理 LangGraph 应用程序时的架构建议,该应用使用监督者处理动态路由、状态管理和同一聊天会话内的人机交互工作流。

我正在构建一个 LangGraph 应用程序,使用一个监督者和多个专用代理:Booking Agent、Payments Agent、Recommendations Agent、Support Agent。目前,监督者会对用户的第一条消息进行分类,并将选定的代理存储在检查点会话状态中。该聊天中的每条后续消息都会路由到同一个代理。这导致两个问题:用户可能在同一个聊天中更改主题——例如,先询问推荐,然后进行预订。一个提示可能需要多个代理:“为我推荐最好的酒店,然后预订最佳选项。” 在这里,推荐代理应首先运行并返回结构化结果。然后,预订代理接收这些结果并继续工作流。它还可以使用 LangGraph 中断暂停以进行确认。 约束条件:每个代理有自己的状态,并可能有待处理的中断。状态不得在代理之间泄露。依赖任务必须按顺序执行。独立任务可以并行运行。每次操作前必须检查权限。新消息不得意外恢复不相关的中断。代理目前在一个 Python 服务中作为子图运行。代理必须返回流式 UI 输出和结构化数据。 问题:您推荐使用什么 LangGraph 架构?应该使用路由器、监督者、编排者-工作者模式,还是子代理作为工具?代理是否应该使用单独的 thread_id 值、单独的 checkpoint_ns 值,或两者兼用?如何区分新消息和旨在响应特定中断的消息?在代理之间传递结构化结果的最佳方式是什么?监督者是否应该每轮创建一个任务 DAG,还是使用 ReAct 动态调用代理?如果所有代理都在同一个服务中运行,代理卡片、A2A 或代理网格是否有用?我正在寻找那些构建了具有人机交互工作流的持久化多代理 LangGraph 应用程序的人的可靠生产模式。
查看原文

相似文章