索引
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(enum)Security(訊息)SecurityScheme(訊息)SendMessageConfiguration(訊息)SendMessageRequest(訊息)SendMessageResponse(訊息)StreamResponse(訊息)StringList(訊息)Task(訊息)TaskArtifactUpdateEvent(訊息)TaskPushNotificationConfig(訊息)TaskState(enum)TaskStatus(訊息)TaskStatusUpdateEvent(訊息)TaskSubscriptionRequest(訊息)
A2AService
A2AService 定義了 A2A 通訊協定的 gRPC 版本。這個版本與 JSONRPC 版本的形狀略有不同,可適當配合 AIP-127。名詞包括 AgentCard、Message、Task 和 TaskPushNotificationConfig。
- 訊息不是標準資源,因此沒有 get/delete/update/list 介面,只有 send 和 stream 自訂方法。
- 工作具有取得介面,以及自訂取消和訂閱方法。
- TaskPushNotificationConfig 是以工作為上層的資源。這些方法包括 get、list 和 create。
- AgentCard 是靜態資源,只有 get 方法。
| CancelTask |
|---|
|
取消代理程式的工作。如果支援,應該不會再收到工作更新。
|
| CreateTaskPushNotificationConfig |
|---|
|
為工作設定推播通知。
|
| DeleteTaskPushNotificationConfig |
|---|
|
刪除工作推播通知設定。
|
| GetAgentCard |
|---|
|
GetAgentCard 會傳回代理程式的代理資訊卡。
|
| GetTask |
|---|
|
從代理程式取得工作目前的狀態。
|
| GetTaskPushNotificationConfig |
|---|
|
取得工作的推播通知設定。
|
| ListTaskPushNotificationConfig |
|---|
|
取得為工作設定的推播通知清單。
|
| SendMessage |
|---|
|
傳送訊息給服務專員。這是會傳回工作 (完成時) 或 LRO (如果要求) 的封鎖呼叫。
|
| SendStreamingMessage |
|---|
|
SendStreamingMessage 是串流呼叫,會傳回一連串工作更新事件,直到工作處於中斷或終止狀態為止。
|
| TaskSubscription |
|---|
|
TaskSubscription 是串流呼叫,會傳回工作更新事件的串流。這會將串流附加至現有的處理中工作。如果工作完成,串流會傳回完成的工作 (例如 GetTask),並關閉串流。
|
APIKeySecurityScheme
| 欄位 | |
|---|---|
description |
這個安全配置的說明。 |
location |
API 金鑰的位置,有效值為「query」、「header」或「cookie」 |
name |
要使用的標頭、查詢或 Cookie 參數名稱。 |
AgentCapabilities
定義代理程式支援的 A2A 特徵集
| 欄位 | |
|---|---|
streaming |
專員是否支援串流回應 |
push_notifications |
代理程式是否可以將推播通知傳送至用戶端 Webhook |
extensions[] |
這個代理程式支援的擴充功能。 |
AgentCard
AgentCard 會傳達重要資訊:- 整體詳細資料 (版本、名稱、說明、用途) - 技能;代理程式可執行的動作/解決方案組合 - 代理程式支援的預設模式/內容類型。- 驗證需求 Next ID:19
| 欄位 | |
|---|---|
protocol_version |
這個代理支援的 A2A 通訊協定版本。 |
name |
人類可讀的代理名稱。例如:「Recipe Agent」 |
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 |
這個代理程式內的技能專屬 ID。 |
name |
使用者可解讀的技能名稱。 |
description |
使用者 (或 LLM) 可理解的技能詳細資料和行為說明。 |
tags[] |
一組技能標記,可提升分類/使用率。範例:["cooking", "customer support", "billing"] |
examples[] |
這項技能設計要處理的一組查詢範例。這些範例應有助於來電者瞭解如何向服務專員提出要求,以達成特定目標。範例:["I need a recipe for bread"] |
input_modes[] |
支援的輸入模態。 |
output_modes[] |
可能產生的輸出模態 |
security[] |
protolint:disable REPEATED_FIELD_NAMES_PLURALIZED 代理程式運用這項技能時必須使用的安全機制。如同整體 AgentCard.security,這份清單代表安全需求物件的邏輯 OR。每個物件都是一組必須一起使用的安全機制 (邏輯 AND)。protolint:enable REPEATED_FIELD_NAMES_PLURALIZED |
構件
構件是工作完成結果的容器,類似於訊息,但目的是做為工作產品,而非點對點通訊。
| 欄位 | |
|---|---|
artifact_id |
構件的專屬 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 |
要在 Authorization 標頭中使用的 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 |
訊息的專屬 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
Part 代表通訊內容區段的容器。部分可以是純文字、某種檔案 (圖片、影片等),或結構化資料 Blob (即 JSON)。
| 欄位 | |
|---|---|
metadata |
與這個部分相關聯的選填中繼資料。 |
聯集欄位
|
|
text |
|
file |
|
data |
|
PasswordOAuthFlow
| 欄位 | |
|---|---|
token_url |
這個流程要使用的權杖網址。這項資料必須是網址格式。OAuth2 標準規定必須使用 TLS。 |
refresh_url |
用於取得重新整理權杖的網址。這必須是網址形式。OAuth2 標準規定必須使用 TLS。 |
scopes |
OAuth2 安全性配置的可用範圍。範圍名稱與簡短說明之間的對應。地圖可能為空白。 |
PushNotificationConfig
設定工作更新推播通知。
| 欄位 | |
|---|---|
id |
這則推播通知的專屬 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
///////// Request Messages ///////////
| 欄位 | |
|---|---|
tenant |
選用租戶,以路徑參數形式提供。實驗性質,1.0 版發布時可能仍會變更。 |
request |
這是必要旗標,要傳送給代理的訊息。 |
configuration |
傳送要求的設定。 |
metadata |
要求的選用中繼資料。 |
SendMessageResponse
////// Response Messages ///////////
| 欄位 | |
|---|---|
聯集欄位
|
|
task |
|
msg |
|
StreamResponse
訊息的串流回應。串流應為下列其中一個序列:如果回應是訊息,串流應只包含一則訊息,然後關閉。如果回應是工作生命週期,第一個回應應為 Task 物件,後方接著零或多個 TaskStatusUpdateEvent 和 TaskArtifactUpdateEvent。如果 Task 處於中斷或終止狀態,串流應會完成。如果串流在符合這些條件前結束,則為
| 欄位 | |
|---|---|
聯集欄位
|
|
task |
|
msg |
|
status_update |
|
artifact_update |
|
StringList
protolint:disable REPEATED_FIELD_NAMES_PLURALIZED
| 欄位 | |
|---|---|
list[] |
|
工作
工作是 A2A 的核心動作單元,具有目前狀態,且工作結果會儲存在構件中。如果工作有多個回合,這些回合會儲存在記錄中。
| 欄位 | |
|---|---|
id |
工作專屬 ID (例如 UUID),由伺服器為新工作產生。 |
context_id |
互動 (工作和訊息) 脈絡集合的專屬 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 鍵/值物件,用於儲存工作相關的自訂中繼資料。 |
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 是工作上的 Delta,表示工作已變更。
| 欄位 | |
|---|---|
task_id |
變更的工作 ID |
context_id |
工作所屬的環境 ID |
status |
工作的新狀態。 |
final |
這項工作是否為最後一次狀態更新。 |
metadata |
與工作更新建立關聯的選填中繼資料。 |
TaskSubscriptionRequest
| 欄位 | |
|---|---|
tenant |
選用租戶,以路徑參數形式提供。實驗性質,1.0 版發布時可能仍會變更。 |
name |
要訂閱的工作資源名稱。格式:tasks/{task_id} |