Agent 和多智能体系统都关于系统不同组件之间如何相互通信。我们花费大量时间思考促进此类通信的最佳基础设施和开发者体验。今天,我们很高兴宣布 Command
:langgraph
中的一个新工具,可以更轻松地促进多参与者(或多智能体)通信。
技术背景
我们的 智能体框架 langgraph
由事件驱动系统驱动。我们公开了一种基于图的开发者体验,深受 NetworkX
的影响,我们发现它很好地映射到开发者对智能体的思维模型。鉴于底层的事件驱动架构,我们可以轻松添加此基于图的 devX 的变体。
langgraph
图传统上表示为节点和边。这种声明式架构有助于将智能体的路径映射到可视化表示。另一方面,要求边连接节点有时会使表达更动态的逻辑变得更困难或不直观。在这些情况下,您会希望节点能够动态指定接下来要转到哪个节点。
Command:无边图
考虑到这一点,我们很高兴在 LangGraph 中发布 Command
。这是一种特殊类型,当从节点返回时,它不仅指定状态的更新(像往常一样),还指定接下来要转到哪个节点。这允许节点更直接地控制事后执行哪些节点。
用法看起来像这样(Python)
# With type hints, you can specify the possible nodes this can go to.
def agent(state: MessagesState) -> Command[Literal[..., END]]:
...
return Command(
goto=..., # The next node(s) to go to
update={"messages": [response]} # The update to apply to the state
)
这可以由任何节点返回。节点上的类型提示可以让图知道哪些节点可能接下来被执行。(这允许您仍然可视化图。)
阅读这些更技术性的指南以了解更多信息
对多智能体流程的影响
其中一个主要动机是更轻松地实现动态多智能体架构。
多智能体架构的一个新兴组件是“handoff”(移交)。handoff 涉及一个智能体将控制权移交给另一个智能体(无论是否添加任何初始响应)。OpenAI 的 swarm 框架实际上在这方面做得很好。
Command
类型使我们能够轻松执行 handoff。我们可以轻松指定图中要跳转到的任何其他节点。作为其中的一部分,我们还可以指定父图中的节点以跳转到。这允许在分层智能体架构中实现更好的通信和 handoff。
有关此的更多信息,请参阅 我们关于多智能体架构的概念指南,我们已对其进行更新以反映我们关于 handoff 的最新想法。您还可以查看我们的 关于使用 Command
构建多智能体系统的多个教程。
结论
构建智能体和多智能体系统完全关乎通信。因此,我们的目标是使 langgraph
成为智能体框架,让您可以最大程度地控制这些智能体如何通信。我们相信,这个新的 Command
类型是朝着这个方向的改进。
有关此的视频指南,请参阅 我们在 YouTube 上的演练。