Skip to main content
Agent2Agent (A2A) 是谷歌提出的用于实现对话式 AI 智能体间通信的协议。LangSmith 实现了对 A2A 的支持,允许您的智能体通过标准化协议与其他兼容 A2A 的智能体进行通信。 A2A 端点可在 Agent Server/a2a/{assistant_id} 路径下使用。

支持的方法

Agent Server 支持以下 A2A RPC 方法:
  • message/send:向助手发送消息并接收完整响应
  • message/stream:发送消息并使用服务器发送事件 (SSE) 实时流式传输响应
  • tasks/get:检索先前创建任务的状态和结果

智能体卡片发现

每个助手会自动公开一个 A2A 智能体卡片,该卡片描述了其功能,并提供了其他智能体连接所需的信息。您可以使用以下方式检索任何助手的智能体卡片:
智能体卡片包括助手的名称、描述、可用技能、支持的输入/输出模式以及用于通信的 A2A 端点 URL。

要求

要使用 A2A,请确保已安装以下依赖项:
  • langgraph-api >= 0.4.21
使用以下命令安装:

使用概述

要启用 A2A:
  • 升级到使用 langgraph-api>=0.4.21。
  • 部署具有基于消息的状态结构的智能体。
  • 使用端点与其他兼容 A2A 的智能体连接。

创建兼容 A2A 的智能体

此示例创建一个兼容 A2A 的智能体,该智能体使用 OpenAI 的 API 处理传入消息并维护对话状态。该智能体定义了基于消息的状态结构,并处理 A2A 协议的消息格式。 为了与 A2A “text” 部分 兼容,智能体的状态中必须有一个 messages 键。 A2A 协议使用两个标识符来维护对话连续性:
  • contextId:将消息分组到一个对话线程中(类似于会话 ID)
  • taskId:标识该对话中的每个独立请求
在第一条消息中,省略 contextIdtaskId - 智能体会生成并返回它们。对于对话中的所有后续消息,包含先前响应中的 contextIdtaskId 以保持线程连续性。 LangSmith 追踪: Langsmith 部署的 A2A 端点会自动将 A2A 的 contextId 转换为 LangSmith 追踪的 thread_id,将对话中的所有消息分组到单个线程下。 例如:

智能体间通信

一旦您的智能体通过 langgraph dev 在本地运行或部署到生产环境,您就可以使用 A2A 协议促进它们之间的通信。 此示例演示了两个智能体如何通过向彼此的 A2A 端点发送 JSON-RPC 消息进行通信。该脚本模拟了一个多轮对话,其中每个智能体处理对方的响应并继续对话。
完整的可运行示例,请参见:

禁用 A2A

要禁用 A2A 端点,请在您的 langgraph.json 配置文件中将 disable_a2a 设置为 true