代理对代理(A2A)

上一页显示了如何在单个进程中编写代理, 一个代理调用另一个代理作为函数工具,框架处理其余的代理。 当所有代理都位于同一应用程序中、共享同一运行时并由同一团队维护时,该模式非常有效。

但实际代理系统通常需要跨边界通信。 代理到代理 (A2A) 是一种 开放协议 ,专为此设计。 它定义了一种标准方法,使代理能够发现彼此、交换消息,并通过 HTTP 跨任何边界、在任何语言或框架中协调任务。 代理框架提供 内置的 A2A 集成 ,使你可以以最少的设置来托管和调用符合 A2A 的代理。

何时使用此项

当代理需要跨越进程内组合无法处理的边界时,请使用 A2A:

  • 服务边界。 你的旅行预订软件代理以“微服务”形式运行,而你的费用申报软件代理作为另一个“微服务”运行。 它们不能相互调用作为进程内函数工具, 他们需要网络协议。
  • 团队边界。 合作伙伴团队拥有“合规性评审”代理。 你无权访问其代码、模型或部署 , 只需发送请求并获取响应即可。
  • 组织边界。 第三方提供商提供专门的代理(文档处理、法律审查、医疗会审)。 你需要一种标准方法来发现它,了解它可以做什么,并与它进行通信 - 不管它构建的框架或语言是什么。
  • 独立演变。 你的代理需要不同的发布周期、不同的团队或不同的语言,而无需紧密耦合其实现。

小窍门

如果代理都位于同一进程中并由同一团队维护,则 作为工具的代理 更简单,开销更低。 当跨越进程、服务或组织边界时,A2A 会提高价值。

注意事项

注意事项 详细信息
互操作性 A2A 与框架无关。 .NET代理可以调用Python代理、LangChain 代理或任何实现协议的代理。 这是 A2A 的主要价值 - 它是“代理通信的 HTTP”。
网络开销 每个 A2A 调用都是一个 HTTP 请求。 这增加了与进程内代理作为工具调用相比的延迟。 对于性能敏感的路径,请保留代理并置或使用 A2A,前提是边界真正存在。
操作复杂性 远程代理是分布式服务。 需要处理网络故障、超时、重试和版本控制 — 与任何服务到服务通信相同的问题。
运行时发现 代理卡使信息的发现更加灵活,但仍然需要知道从哪里查找。 在生产环境中,通常会配置已知的代理终结点或使用注册表。
对话状态 远程代理管理自己的会话状态(通过上下文 ID 标识)。 你的代理看不到远程代理的内部推理 , 只显示其响应。 如果远程代理重启并丢失状态,则对话上下文可能会丢失。

后续步骤

现在,代理可以跨任何边界进行通信,旅程中的最后一步是 工作流 ,即多步骤、多代理进程的显式基于图形的业务流程,需要完全控制执行顺序、状态和可恢复性。

更深入: