索引
A2AService(接口)APIKeySecurityScheme(消息)AgentCapabilities(消息)AgentCard(消息)AgentCardSignature(消息)AgentExtension(消息)AgentInterface(消息)AgentProvider(消息)AgentSkill(消息)Artifact(消息)AuthenticationInfo(消息)AuthorizationCodeOAuthFlow(消息)CancelTaskRequest(消息)ClientCredentialsOAuthFlow(消息)CreateTaskPushNotificationConfigRequest(消息)DataPart(消息)DeleteTaskPushNotificationConfigRequest(消息)FilePart(消息)GetAgentCardRequest(消息)GetTaskPushNotificationConfigRequest(消息)GetTaskRequest(消息)HTTPAuthSecurityScheme(消息)ImplicitOAuthFlow(消息)ListTaskPushNotificationConfigRequest(消息)ListTaskPushNotificationConfigResponse(消息)Message(消息)MutualTlsSecurityScheme(消息)OAuth2SecurityScheme(消息)OAuthFlows(消息)OpenIdConnectSecurityScheme(消息)Part(消息)PasswordOAuthFlow(消息)PushNotificationConfig(消息)Role(枚举)Security(消息)SecurityScheme(消息)SendMessageConfiguration(消息)SendMessageRequest(消息)SendMessageResponse(消息)StreamResponse(消息)StringList(消息)Task(消息)TaskArtifactUpdateEvent(消息)TaskPushNotificationConfig(消息)TaskState(枚举)TaskStatus(消息)TaskStatusUpdateEvent(消息)TaskSubscriptionRequest(消息)
A2AService
A2AService 定义了 A2A protocol 的 gRPC 版本。此版本与 JSONRPC 版本的形状略有不同,以便在适当情况下更好地符合 AIP-127。名词包括 AgentCard、Message、Task 和 TaskPushNotificationConfig。
- 消息不是标准资源,因此没有 get/delete/update/list 接口,只有 send 和 stream 自定义方法。
- 任务具有 get 接口以及自定义的取消和订阅方法。
- TaskPushNotificationConfig 是一种资源,其父级是任务。它们具有 get、list 和 create 方法。
- AgentCard 是一种静态资源,仅包含 get 方法。
| CancelTask |
|---|
|
取消代理中的任务。如果支持,则不应再收到相应任务的任务更新。
|
| CreateTaskPushNotificationConfig |
|---|
|
为任务设置推送通知配置。
|
| DeleteTaskPushNotificationConfig |
|---|
|
删除任务的推送通知配置。
|
| GetAgentCard |
|---|
|
GetAgentCard 会返回代理的智能体卡片。
|
| GetTask |
|---|
|
从代理获取任务的当前状态。
|
| GetTaskPushNotificationConfig |
|---|
|
获取任务的推送通知配置。
|
| ListTaskPushNotificationConfig |
|---|
|
获取为任务配置的推送通知列表。
|
| SendMessage |
|---|
|
向代理发送消息。这是一个阻塞调用,将在任务完成后返回任务,如果请求了 LRO,则返回 LRO。
|
| SendStreamingMessage |
|---|
|
SendStreamingMessage 是一个流式调用,它会返回任务更新事件流,直到任务处于中断或终止状态。
|
| TaskSubscription |
|---|
|
TaskSubscription 是一种流式调用,可返回任务更新事件流。这会将流附加到正在处理的任务。如果任务已完成,则该流将返回已完成的任务(如 GetTask),并关闭该流。
|
APIKeySecurityScheme
| 字段 | |
|---|---|
description |
相应安全方案的说明。 |
location |
API 密钥的位置,有效值为“query”“header”或“cookie” |
name |
要使用的标头、查询或 Cookie 参数的名称。 |
AgentCapabilities
定义代理支持的 A2A 功能集
| 字段 | |
|---|---|
streaming |
代理是否支持流式传输响应 |
push_notifications |
如果代理可以向客户端 webhook 发送推送通知 |
extensions[] |
此代理支持的扩展服务。 |
AgentCard
AgentCard 传达关键信息:- 总体详细信息(版本、名称、说明、用途)- 技能;智能体可以执行的一组操作/解决方案 - 智能体支持的默认模态/内容类型。- 身份验证要求。下一个 ID:19
| 字段 | |
|---|---|
protocol_version |
相应代理支持的 A2A protocol 版本。 |
name |
代理的人类可读名称。示例:“食谱代理” |
description |
对代理的操作/解决方案空间的说明。示例:“可帮助用户查找食谱和烹饪的代理。” |
url |
托管代理的地址的网址。表示代理声明的首选端点。 |
preferred_transport |
首选端点的传输方式。如果为空,则默认为 JSONRPC。 |
additional_interfaces[] |
宣布新增支持的传输方式。客户端可以使用任何受支持的传输方式。 |
provider |
代理的服务提供商。 |
version |
代理的版本。示例:“1.0.0” |
documentation_url |
用于提供有关代理的其他文档的网址。 |
capabilities |
智能体支持的 A2A 功能集。 |
security_schemes |
用于对此代理进行身份验证的安全方案详细信息。 |
security[] |
protolint:disable REPEATED_FIELD_NAMES_PLURALIZED 联系客服人员的安全要求。此列表可以视为 AND 的 OR。列表中的每个对象都描述了一组必须在请求中存在的可能安全要求。这样一来,您就可以指定“调用方必须使用 OAuth 或 API 密钥和 mTLS”。示例:security { schemes { key: "oauth" value { list: ["read"] } } } security { schemes { key: "api-key" } schemes { key: "mtls" } } |
default_input_modes[] |
protolint:enable REPEATED_FIELD_NAMES_PLURALIZED 代理在所有技能中支持的一组互动模式。此设置可按技能进行替换。定义为 MIME 类型。 |
default_output_modes[] |
此代理支持的输出 MIME 类型。 |
skills[] |
技能是指智能体可以执行的能力单元。这可能有些抽象,但代表了一组更集中的行动,智能体很可能成功完成这些行动。 |
supports_authenticated_extended_card |
代理是否支持在用户通过身份验证时提供扩展代理卡,即来自 .well-known 的卡是否与来自 GetAgentCard 的卡不同。 |
signatures[] |
为相应 AgentCard 计算的 JSON Web 签名。 |
icon_url |
代理图标的可选网址。 |
AgentCardSignature
AgentCardSignature 表示 AgentCard 的 JWS 签名。此签名遵循 RFC 7515 JSON Web Signature (JWS) 的 JSON 格式。
| 字段 | |
|---|---|
protected |
必需。签名的受保护 JWS 标头。这始终是一个 base64url 编码的 JSON 对象。必填。 |
signature |
必需。计算出的签名(采用 base64url 编码)。必填。 |
header |
未受保护的 JWS 标头值。 |
AgentExtension
代理支持的扩展程序的声明。
| 字段 | |
|---|---|
uri |
扩展程序的 URI。示例:“https://developers.google.com/identity/protocols/oauth2” |
description |
对相应代理如何使用相应扩展程序的说明。示例:“Google OAuth 2.0 身份验证” |
required |
客户端是否必须遵循扩展程序的特定要求。示例:false |
params |
扩展程序的可选配置。 |
AgentInterface
为代理定义其他运输信息。
| 字段 | |
|---|---|
url |
相应接口所在的网址。 |
transport |
相应网址支持的传输协议。这是一个开放式字符串,可轻松扩展以支持多种传输协议。正式支持的核心协议包括 JSONRPC、GRPC 和 HTTP+JSON。 |
tenant |
调用代理时要在请求中设置的租户。实验性,在 1.0 版发布之前可能仍会发生变化。 |
AgentProvider
表示代理的服务提供商的相关信息。
| 字段 | |
|---|---|
url |
提供商参考网址示例:“https://ai.google.dev” |
organization |
提供方的组织名称。示例:“Google” |
AgentSkill
AgentSkill 表示智能体可以执行的操作/解决方案单元。您可以将此视为代理可以提供的一种高度可靠的解决方案。智能体有权自主选择如何以及何时使用特定技能,但客户端应确信,如果定义了技能,则可以可靠地执行该技能。
| 字段 | |
|---|---|
id |
相应代理中技能的唯一标识符。 |
name |
技能的人类可读名称。 |
description |
技能详细信息和行为的人类(或 LLM)可读说明。 |
tags[] |
技能的一组标记,用于增强分类/利用率。示例:["烹饪"、"客户支持"、"账单"] |
examples[] |
该技能旨在处理的一组示例查询。这些示例应有助于来电者了解如何向智能体提出请求以实现特定目标。示例:[“我需要一个面包食谱”] |
input_modes[] |
支持的可能输入模态。 |
output_modes[] |
可能产生的输出模态 |
security[] |
protolint:disable REPEATED_FIELD_NAMES_PLURALIZED 智能体利用此技能所需的安全方案。与整个 AgentCard.security 类似,此列表表示安全要求对象的逻辑 OR。每个对象都是一组必须一起使用的安全方案(逻辑 AND)。protolint:enable REPEATED_FIELD_NAMES_PLURALIZED |
制品
制品是用于存放已完成任务结果的容器。这些消息类似于“消息”,但旨在成为任务的产物,而不是点对点通信。
| 字段 | |
|---|---|
artifact_id |
相应制品的唯一标识符(例如 UUID)。在任务中必须至少是唯一的。 |
name |
制品的人类可读名称。 |
description |
制品的人类可读说明(可选)。 |
parts[] |
制品的内容。 |
metadata |
工件中包含的可选元数据。 |
extensions[] |
相应制品中存在或贡献的扩展程序的 URI。 |
AuthenticationInfo
定义身份验证详细信息,用于推送通知。
| 字段 | |
|---|---|
schemes[] |
支持的身份验证方案 - 例如 Basic、Bearer 等 |
credentials |
可选凭据 |
AuthorizationCodeOAuthFlow
| 字段 | |
|---|---|
authorization_url |
此流程要使用的授权网址。此网址必须采用网址形式。OAuth2 标准要求使用 TLS |
token_url |
要用于此流程的令牌网址。必须采用网址形式。OAuth2 标准要求使用 TLS。 |
refresh_url |
用于获取刷新令牌的网址。此网址必须采用网址形式。OAuth2 标准要求使用 TLS。 |
scopes |
OAuth2 安全方案的可用范围。范围名称与相应简短说明之间的映射。该映射可能为空。 |
CancelTaskRequest
| 字段 | |
|---|---|
tenant |
可选的租户,以路径参数的形式提供。此功能处于实验阶段,在 1.0 版发布后可能仍会发生变化。 |
name |
要取消的任务的资源名称。格式:tasks/{task_id} |
ClientCredentialsOAuthFlow
| 字段 | |
|---|---|
token_url |
要用于此流程的令牌网址。必须采用网址形式。OAuth2 标准要求使用 TLS。 |
refresh_url |
用于获取刷新令牌的网址。此网址必须采用网址形式。OAuth2 标准要求使用 TLS。 |
scopes |
OAuth2 安全方案的可用范围。范围名称与相应简短说明之间的映射。该映射可能为空。 |
CreateTaskPushNotificationConfigRequest
| 字段 | |
|---|---|
tenant |
可选的租户,以路径参数的形式提供。此功能处于实验阶段,在 1.0 版发布后可能仍会发生变化。 |
parent |
必需。相应配置的父任务资源。格式:tasks/{task_id} |
config_id |
必需。新配置的 ID。 |
config |
必需。要创建的配置。 |
DataPart
DataPart 表示结构化 blob。这通常是 JSON 载荷。
| 字段 | |
|---|---|
data |
|
DeleteTaskPushNotificationConfigRequest
| 字段 | |
|---|---|
tenant |
可选的租户,以路径参数的形式提供。此功能处于实验阶段,在 1.0 版发布后可能仍会发生变化。 |
name |
要删除的配置的资源名称。格式:tasks/{task_id}/pushNotificationConfigs/{config_id} |
FilePart
FilePart 表示提供文件的不同方式。如果文件较小,则支持通过 file_with_bytes 直接提供字节。如果文件较大,代理应直接从 file_with_uri 来源读取相应内容。
| 字段 | |
|---|---|
mime_type |
|
name |
|
联合字段
|
|
file_with_uri |
|
file_with_bytes |
|
GetAgentCardRequest
| 字段 | |
|---|---|
tenant |
可选的租户,以路径参数的形式提供。此功能处于实验阶段,在 1.0 版发布后可能仍会发生变化。 |
GetTaskPushNotificationConfigRequest
| 字段 | |
|---|---|
tenant |
可选的租户,以路径参数的形式提供。此功能处于实验阶段,在 1.0 版发布后可能仍会发生变化。 |
name |
要检索的配置的资源名称。格式:tasks/{task_id}/pushNotificationConfigs/{config_id} |
GetTaskRequest
| 字段 | |
|---|---|
tenant |
可选的租户,以路径参数的形式提供。此功能处于实验阶段,在 1.0 版发布后可能仍会发生变化。 |
name |
必需。任务的资源名称。格式:tasks/{task_id} |
history_length |
要检索的任务历史记录中最新消息的数量。 |
HTTPAuthSecurityScheme
| 字段 | |
|---|---|
description |
相应安全方案的说明。 |
scheme |
要在授权标头中使用的 HTTP 身份验证方案的名称,如 RFC7235 中所定义。所用的值应在 IANA 身份验证方案注册表中注册。该值不区分大小写,如 RFC7235 中所定义。 |
bearer_format |
向客户端提供提示,以确定不记名令牌的格式。不记名令牌通常由授权服务器生成,因此此信息主要用于文档记录。 |
ImplicitOAuthFlow
| 字段 | |
|---|---|
authorization_url |
此流程要使用的授权网址。此网址必须采用网址形式。OAuth2 标准要求使用 TLS |
refresh_url |
用于获取刷新令牌的网址。此网址必须采用网址形式。OAuth2 标准要求使用 TLS。 |
scopes |
OAuth2 安全方案的可用范围。范围名称与相应简短说明之间的映射。该映射可能为空。 |
ListTaskPushNotificationConfigRequest
| 字段 | |
|---|---|
tenant |
可选的租户,以路径参数的形式提供。此功能处于实验阶段,在 1.0 版发布后可能仍会发生变化。 |
parent |
父任务资源。格式:tasks/{task_id} |
page_size |
对于 AIP-158,这些字段是存在的。通常不使用/不需要。要返回的配置数量上限。如果未指定,则返回所有配置。 |
page_token |
从之前的 ListTaskPushNotificationConfigRequest 调用接收的页面令牌。提供此令牌以检索后续页面。进行分页时,提供给 |
ListTaskPushNotificationConfigResponse
| 字段 | |
|---|---|
configs[] |
推送通知配置的列表。 |
next_page_token |
可作为 |
消息
消息是客户端与服务器之间的一种通信单元。它与上下文相关联,还可以选择性地与任务相关联。由于服务器负责上下文定义,因此必须始终在其消息中提供 context_id。如果客户端知道要将消息关联到的上下文,则可以选择提供 context_id。task_id 也是如此,只不过服务器会决定是否创建任务以及是否包含 task_id。
| 字段 | |
|---|---|
message_id |
消息的唯一标识符(例如 UUID)。此标识符是必需的,由消息创建者创建。 |
context_id |
消息的上下文 ID。此参数为可选参数,如果设置,消息将与给定的上下文相关联。 |
task_id |
相应消息的任务 ID。此参数为可选参数,如果设置,相应消息将与指定任务相关联。 |
role |
消息的角色。 |
content[] |
protolint:disable REPEATED_FIELD_NAMES_PLURALIZED Content 是消息内容的容器。 |
metadata |
protolint:enable REPEATED_FIELD_NAMES_PLURALIZED 要随消息一起提供的任何可选元数据。 |
extensions[] |
相应消息中存在或贡献的扩展程序的 URI。 |
MutualTlsSecurityScheme
| 字段 | |
|---|---|
description |
相应安全方案的说明。 |
OAuth2SecurityScheme
| 字段 | |
|---|---|
description |
相应安全方案的说明。 |
flows |
一个对象,包含支持的流量类型的配置信息 |
oauth2_metadata_url |
指向 OAuth2 授权服务器元数据 RFC8414 的网址。需要使用 TLS。 |
OAuthFlows
| 字段 | |
|---|---|
联合字段
|
|
authorization_code |
|
client_credentials |
|
implicit |
|
password |
|
OpenIdConnectSecurityScheme
| 字段 | |
|---|---|
description |
相应安全方案的说明。 |
open_id_connect_url |
用于发现 [[OpenID-Connect-Discovery]] 提供方元数据的知名网址。 |
部分
Part 表示一段通信内容的容器。内容可以是纯文本、某种类型的文件(图片、视频等)或结构化数据 blob(即 JSON)。
| 字段 | |
|---|---|
metadata |
与相应部分关联的可选元数据。 |
联合字段
|
|
text |
|
file |
|
data |
|
PasswordOAuthFlow
| 字段 | |
|---|---|
token_url |
要用于此流程的令牌网址。必须采用网址形式。OAuth2 标准要求使用 TLS。 |
refresh_url |
用于获取刷新令牌的网址。此网址必须采用网址形式。OAuth2 标准要求使用 TLS。 |
scopes |
OAuth2 安全方案的可用范围。范围名称与相应简短说明之间的映射。该映射可能为空。 |
PushNotificationConfig
用于为任务更新设置推送通知的配置。
| 字段 | |
|---|---|
id |
相应推送通知的唯一标识符(例如 UUID)。 |
url |
要向其发送通知的网址 |
token |
对于相应任务/会话而言唯一的令牌 |
authentication |
有关要随通知一起发送的身份验证的信息 |
角色
| 枚举 | |
|---|---|
ROLE_UNSPECIFIED |
|
ROLE_USER |
USER 角色是指从客户端到服务器的通信。 |
ROLE_AGENT |
AGENT 角色是指从服务器到客户端的通信。 |
安全
| 字段 | |
|---|---|
schemes |
|
SecurityScheme
| 字段 | |
|---|---|
联合字段
|
|
api_key_security_scheme |
|
http_auth_security_scheme |
|
oauth2_security_scheme |
|
open_id_connect_security_scheme |
|
mtls_security_scheme |
|
SendMessageConfiguration
发送消息请求的配置。
| 字段 | |
|---|---|
accepted_output_modes[] |
智能体应采用的输出模式。 |
push_notification |
一种可用于接收更新的 Webhook 配置 |
history_length |
历史记录中包含的消息数量上限。如果为 0,则历史记录不受限制。 |
blocking |
如果为 true,则消息将处于阻塞状态,直到任务完成。如果为 false,消息将是非阻塞的,并且任务将立即返回。调用方有责任检查是否有任何任务更新。 |
SendMessageRequest
///////// 请求消息 ///////////
| 字段 | |
|---|---|
tenant |
可选的租户,以路径参数的形式提供。此功能处于实验阶段,在 1.0 版发布后可能仍会发生变化。 |
request |
必需。要发送给代理的消息。 |
configuration |
发送请求的配置。 |
metadata |
请求的可选元数据。 |
SendMessageResponse
////// 响应消息 ///////////
| 字段 | |
|---|---|
联合字段
|
|
task |
|
msg |
|
StreamResponse
消息的流式响应。该流应为以下序列之一:如果响应是消息,则该流应包含一条且仅包含一条消息,然后关闭;如果响应是任务生命周期,则第一个响应应为 Task 对象,后跟零个或多个 TaskStatusUpdateEvent 和 TaskArtifactUpdateEvent。当任务处于中断或终止状态时,该流应完成。在满足这些条件之前结束的流是
| 字段 | |
|---|---|
联合字段
|
|
task |
|
msg |
|
status_update |
|
artifact_update |
|
StringList
protolint:disable REPEATED_FIELD_NAMES_PLURALIZED
| 字段 | |
|---|---|
list[] |
|
任务
任务是 A2A 的核心操作单元。它具有当前状态,并且当为任务创建结果时,这些结果会存储在制品中。如果任务有多个轮次,这些轮次会存储在历史记录中。
| 字段 | |
|---|---|
id |
任务的唯一标识符(例如 UUID),由服务器为新任务生成。 |
context_id |
交互(任务和消息)上下文集合的唯一标识符(例如 UUID)。由 A2A 服务器创建。 |
status |
任务的当前状态,包括状态和消息。 |
artifacts[] |
任务的一组输出制品。 |
history[] |
protolint:disable REPEATED_FIELD_NAMES_PLURALIZED 任务的互动历史记录。 |
metadata |
protolint:enable REPEATED_FIELD_NAMES_PLURALIZED 用于存储有关任务的自定义元数据的键值对对象。 |
TaskArtifactUpdateEvent
TaskArtifactUpdateEvent 表示生成了制品时的任务增量。
| 字段 | |
|---|---|
task_id |
相应制品所对应任务的 ID |
context_id |
相应任务所属的上下文的 ID |
artifact |
工件本身 |
append |
是否应附加到之前生成的输出 |
last_chunk |
这是否表示工件的最后一部分 |
metadata |
与制品更新关联的可选元数据。 |
TaskPushNotificationConfig
| 字段 | |
|---|---|
name |
配置的资源名称。格式:tasks/{task_id}/pushNotificationConfigs/{config_id} |
push_notification_config |
推送通知配置详细信息。 |
TaskState
任务可以处于的状态集。
| 枚举 | |
|---|---|
TASK_STATE_UNSPECIFIED |
|
TASK_STATE_SUBMITTED |
表示确认任务已创建的状态 |
TASK_STATE_WORKING |
表示任务正在积极处理的状态 |
TASK_STATE_COMPLETED |
表示任务已完成的状态。这是终端状态 |
TASK_STATE_FAILED |
表示任务已完成但失败。这是终端状态 |
TASK_STATE_CANCELLED |
表示任务在完成之前被取消的状态。这是终端状态。 |
TASK_STATE_INPUT_REQUIRED |
表示任务需要信息才能完成的状态。这是中断状态。 |
TASK_STATE_REJECTED |
表示代理已决定不执行相应任务的状态。此状态可能在初始任务创建期间设置,也可能在代理确定无法或不会继续执行任务后设置。此状态为终止状态。 |
TASK_STATE_AUTH_REQUIRED |
表示需要上游客户端进行某种身份验证的状态。身份验证预计会通过带外方式进行,因此这不是中断状态或终端状态。 |
TaskStatus
用于存储任务状态的容器
| 字段 | |
|---|---|
state |
相应任务的当前状态 |
update |
与状态关联的消息。 |
timestamp |
记录状态时的时间戳。示例:“2023-10-27T10:00:00Z” |
TaskStatusUpdateEvent
TaskStatusUpdateEvent 是任务上的增量事件,表示任务已发生更改。
| 字段 | |
|---|---|
task_id |
已更改的任务的 ID |
context_id |
任务所属的上下文的 ID |
status |
任务的新状态。 |
final |
相应任务是否为最后一次状态更新。 |
metadata |
要与任务更新相关联的可选元数据。 |
TaskSubscriptionRequest
| 字段 | |
|---|---|
tenant |
可选的租户,以路径参数的形式提供。此功能处于实验阶段,在 1.0 版发布后可能仍会发生变化。 |
name |
要订阅的任务的资源名称。格式:tasks/{task_id} |