资源:Task
任务是 A2A 的核心操作单元。它具有当前状态,并且当为任务创建结果时,这些结果会存储在制品中。如果任务有多个轮次,这些轮次会存储在历史记录中。
| JSON 表示法 |
|---|
{ "id": string, "contextId": string, "status": { object ( |
| 字段 | |
|---|---|
id |
任务的唯一标识符(例如 UUID),由服务器为新任务生成。 |
contextId |
交互(任务和消息)上下文集合的唯一标识符(例如 UUID)。由 A2A 服务器创建。 |
status |
任务的当前状态,包括状态和消息。 |
artifacts[] |
任务的一组输出制品。 |
history[] |
protolint:disable REPEATED_FIELD_NAMES_PLURALIZED 任务的互动历史记录。 |
metadata |
protolint:enable REPEATED_FIELD_NAMES_PLURALIZED 用于存储有关任务的自定义元数据的键值对对象。 |
TaskStatus
用于存储任务状态的容器
| JSON 表示法 |
|---|
{ "state": enum ( |
| 字段 | |
|---|---|
state |
相应任务的当前状态 |
message |
与状态关联的消息。 |
timestamp |
记录状态时的时间戳。示例:“2023-10-27T10:00:00Z” 采用 RFC 3339 标准,生成的输出将始终进行 Z 规范化(即转换为 UTC 零时区格式并在末尾附加 Z),并使用 0、3、6 或 9 个小数位。不带“Z”的偏差时间也是可以接受的。示例: |
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 |
表示需要上游客户端进行某种身份验证的状态。身份验证预计会通过带外方式进行,因此这不是中断状态或终端状态。 |
消息
消息是客户端与服务器之间的一种通信单元。它与上下文相关联,还可以选择性地与任务相关联。由于服务器负责上下文定义,因此必须始终在其消息中提供 contextId。如果客户端知道要将消息关联到的上下文,可以选择性地提供 contextId。taskId 也是如此,只不过服务器会决定是否创建任务以及是否包含 taskId。
| JSON 表示法 |
|---|
{ "messageId": string, "contextId": string, "taskId": string, "role": enum ( |
| 字段 | |
|---|---|
messageId |
消息的唯一标识符(例如 UUID)。此标识符是必需的,由消息创建者创建。 |
contextId |
消息的上下文 ID。此参数为可选参数,如果设置,消息将与给定的上下文相关联。 |
taskId |
相应消息的任务 ID。此参数为可选参数,如果设置,相应消息将与指定任务相关联。 |
role |
消息的角色。 |
content[] |
protolint:disable REPEATED_FIELD_NAMES_PLURALIZED Content 是消息内容的容器。 |
metadata |
protolint:enable REPEATED_FIELD_NAMES_PLURALIZED 要随消息一起提供的任何可选元数据。 |
extensions[] |
相应消息中存在或贡献的扩展程序的 URI。 |
角色
| 枚举 | |
|---|---|
ROLE_UNSPECIFIED |
|
ROLE_USER |
USER 角色是指从客户端到服务器的通信。 |
ROLE_AGENT |
AGENT 角色是指从服务器到客户端的通信。 |
部分
Part 表示一段通信内容的容器。内容可以是纯文本、某种类型的文件(图片、视频等)或结构化数据 blob(即 JSON)。
| JSON 表示法 |
|---|
{ "metadata": { object }, // Union field |
| 字段 | |
|---|---|
metadata |
与相应部分关联的可选元数据。 |
联合字段
|
|
text |
|
file |
|
data |
|
FilePart
FilePart 表示提供文件的不同方式。如果文件较小,则支持通过 fileWithBytes 直接提供字节。如果文件较大,代理应直接从 fileWithUri 来源读取相应的内容。
| JSON 表示法 |
|---|
{ "mimeType": string, "name": string, // Union field |
| 字段 | |
|---|---|
mimeType |
|
name |
|
联合字段
|
|
fileWithUri |
|
fileWithBytes |
使用 base64 编码的字符串。 |
DataPart
DataPart 表示结构化 blob。这通常是 JSON 载荷。
| JSON 表示法 |
|---|
{ "data": { object } } |
| 字段 | |
|---|---|
data |
|
制品
制品是用于存放已完成任务结果的容器。这些消息类似于“消息”,但旨在成为任务的产物,而不是点对点通信。
| JSON 表示法 |
|---|
{
"artifactId": string,
"name": string,
"description": string,
"parts": [
{
object ( |
| 字段 | |
|---|---|
artifactId |
相应制品的唯一标识符(例如 UUID)。在任务中必须至少是唯一的。 |
name |
制品的人类可读名称。 |
description |
制品的人类可读说明(可选)。 |
parts[] |
制品的内容。 |
metadata |
工件中包含的可选元数据。 |
extensions[] |
相应制品中存在或贡献的扩展程序的 URI。 |
方法 |
|
|---|---|
|
取消代理中的任务。 |
|
从代理获取任务的当前状态。 |
|
TaskSubscription 是一种流式调用,可返回任务更新事件流。 |