資源:Task
工作是 A2A 的核心動作單元,具有目前狀態,且工作結果會儲存在構件中。如果工作有多個回合,這些回合會儲存在記錄中。
| JSON 表示法 |
|---|
{ "id": string, "contextId": string, "status": { object ( |
| 欄位 | |
|---|---|
id |
工作專屬 ID (例如 UUID),由伺服器為新工作產生。 |
contextId |
互動 (工作和訊息) 脈絡集合的專屬 ID (例如 UUID)。由 A2A 伺服器建立。 |
status |
工作目前的狀態,包括狀態和訊息。 |
artifacts[] |
工作的一組輸出構件。 |
history[] |
protolint:disable REPEATED_FIELD_NAMES_PLURALIZED The history of interactions from a task. |
metadata |
protolint:enable REPEATED_FIELD_NAMES_PLURALIZED 鍵/值物件,用於儲存工作相關的自訂中繼資料。 |
TaskStatus
工作狀態的容器
| JSON 表示法 |
|---|
{ "state": enum ( |
| 欄位 | |
|---|---|
state |
這項工作的目前狀態 |
message |
與狀態相關聯的訊息。 |
timestamp |
記錄狀態的時間戳記。例如:「2023-10-27T10:00:00Z」 使用 RFC 3339,產生的輸出內容一律會經過 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 |
訊息的專屬 ID (例如 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
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 |
構件的專屬 ID (例如 UUID)。至少在工作內不得重複。 |
name |
構件的人類可讀名稱。 |
description |
構件的說明,可供使用者閱讀,為選用項目。 |
parts[] |
構件內容。 |
metadata |
隨附於構件的選用中繼資料。 |
extensions[] |
存在於或貢獻給這個構件的擴充功能 URI。 |
方法 |
|
|---|---|
|
取消代理程式中的工作。 |
|
從代理程式取得工作目前的狀態。 |
|
TaskSubscription 是串流呼叫,會傳回工作更新事件串流。 |