您可以透過代理登錄,手動註冊符合 A2A 標準和標準 REST 代理,這些代理託管於 Google Cloud外部、在不支援的執行階段上執行,或部署於不同 Google Cloud 專案。為這些代理建立 Service 資源後,整個 AI 生態系統就能探索其端點和功能。
Agent Registry 使用中央 Google Cloud 管理專案。在本文件中,「遠端」一詞是指託管於管理專案外部的代理,例如在獨立的 Google Cloud 專案、地端部署環境或外部雲端中,或是在不支援的執行階段上執行的代理。自動註冊功能只會探索部署在已啟用代理程式登錄檔的控管專案中,且受支援的資源,因此您必須手動將遠端代理程式註冊到控管專案的登錄檔。
代理類型和限制
您可以手動註冊兩種代理:
- 符合 A2A 規範的代理:採用 Agent2Agent (A2A) 規格和
A2A_AGENT_CARD類型的代理。登錄檔會掃描其agent-card.json代理資訊卡端點,為其 A2A 技能建立索引。 - 標準 REST 代理:未實作 A2A 規格且使用
NO_SPEC類型的遠端代理,例如公開 REST API 端點的代理。
us 和 eu 多區域位置不支援手動註冊,您必須使用支援的區域或 global 位置。詳情請參閱「代理程式登錄檔位置」。
事前準備
- 設定 Agent Registry。
如要使用本文件中的 Google Cloud CLI 指令,請設定 gcloud CLI 環境。
必要的角色
如要取得在代理登錄中手動註冊代理所需的權限,請要求管理員在啟用代理登錄的管理專案中,授予您下列 IAM 角色:
-
如要在 Agent Registry 註冊代理,請使用 Agent Registry API 編輯者 (
roles/agentregistry.editor) 角色 -
如要跨專案註冊,並存取其他 Google Cloud 專案中的代理中繼資料:
Agent Registry API 檢視者 (
roles/agentregistry.viewer)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
如果代理的端點或代理資訊卡可透過標準公開網址存取,或透過預先設定的憑證進行驗證,則不需要任何額外權限。
註冊符合 A2A 規範的代理
如果遠端代理實作 A2A 規格,請將代理註冊導向代理的 agent-card.json 酬載。登錄檔會自動同步處理代理資訊卡,並為代理可用的 A2A 技能建立索引,方便搜尋。
請按照下列步驟註冊代理程式:
控制台
前往 Google Cloud 控制台的「Agent Registry」:
在專案挑選器中,選取設定 Agent Registry 的 Google Cloud 專案。
選取「代理」分頁標籤。
按一下「新增代理」。
在「Agent details」(代理詳細資料) 面板中,輸入下列詳細資料:
- Type:選取「A2A」。
- Region (區域):選取要註冊代理程式的地理位置。
您可以選擇下列其中一個選項:
- 如要使用代理卡網址註冊代理,請選取「From URI」(來自 URI) 分頁標籤,然後在「URI」欄位中輸入有效網址。接著,點選「Import」(匯入),從網址取得代理資訊卡。
- 如要複製及貼上代理程式資訊卡內容,請選取「Paste JSON」(貼上 JSON) 分頁標籤,然後貼上
agent-card.json檔案的完整內容。
按一下 [儲存]。
gcloud
您使用的規格旗標會決定元件所屬的資源集合。如需旗標與資源集合的完整對應關係,請參閱「[服務資源和探索資源](/agent-registry/data-model#service-resources)」。
如要註冊 A2A 代理,請將代理的代理資訊卡儲存為本機 JSON 檔案 (例如 agent-card.json),然後執行 gcloud agent-registry services create 指令:
gcloud agent-registry services create AGENT_NAME \
--project=PROJECT_ID \
--location=REGION \
--display-name="DISPLAY_NAME" \
--agent-spec-type=a2a-agent-card \
--agent-spec-content=agent-card.json
規格檔案的大小上限為 10 KB。
更改下列內容:
AGENT_NAME:要指派給代理程式的 ID,例如my-support-agent。ID 必須介於 4 到 63 個字元之間,且只能包含小寫英文字母、數字和連字號。PROJECT_ID:專案 ID。REGION:要註冊代理程式的區域。如果不想使用特定區域,請使用global值。DISPLAY_NAME:您要為代理指定的名稱,例如Support Agent。
Terraform
您設定的規格區塊會決定元件所屬的資源集合。如需規格與資源集合的完整對應關係,請參閱「[服務資源和探索資源](/agent-registry/data-model#service-resources)」。
如要註冊符合 A2A 規範的代理,請設定 google_agent_registry_service 資源。指定 agent_spec 區塊,其中包含 A2A_AGENT_CARD 類型和代表代理資訊卡 JSON 酬載的 content:
resource "google_agent_registry_service" "a2a_agent" {
location = "REGION"
service_id = "AGENT_NAME"
display_name = "DISPLAY_NAME"
agent_spec {
type = "A2A_AGENT_CARD"
content = jsonencode({
name = "AGENT_NAME"
description = "A custom support agent registered using Terraform."
version = "1.0.0"
capabilities = {}
defaultInputModes = ["text/plain"]
defaultOutputModes = ["text/plain"]
supportedInterfaces = [
{
url = "https://api.example.com/v1/agents/support"
protocolBinding = "JSONRPC"
protocolVersion = "1.0"
}
]
skills = [
{
id = "customer_lookup"
name = "customer_lookup"
description = "Looks up customer info by email address."
tags = ["support", "customer"]
}
]
})
}
}
output "agent_resource_name" {
description = "The generated read-only Agent resource name."
value = google_agent_registry_service.a2a_agent.registry_resource
}
更改下列內容:
REGION:註冊代理程式的區域。AGENT_NAME:要指派給代理的專屬 ID,例如my-support-agent。ID 必須介於 4 到 63 個字元之間,且只能包含小寫英文字母、數字和連字號。DISPLAY_NAME:您要為代理指定的名稱,例如Support Agent。
註冊標準 REST 代理
標準 REST 代理可透過名稱和說明搜尋,但除非採用 A2A 通訊協定,否則不具備可搜尋的 A2A 技能。
如要註冊未實作 A2A 規格的遠端代理,請建立非 A2A Service 資源。Agent Registry 會在 agents 集合中,為非 A2A 代理產生唯讀的 Agent 資源,包括其端點網址,以便協調器、其他代理和 Agent Gateway 探索及連線至該代理。
在 Google Cloud 控制台中將代理類型設為「Non-A2A」,或在 gcloud CLI 指令中使用 --agent-spec-type=no-spec 旗標,即可註冊 AI 代理。請勿將該代理程式另外註冊為 Endpoint 資源。只有在您想控管代理輸出連線,連至非代理 REST API 或網路服務 (例如資料庫 API、第三方 SaaS API 或 Google API) 時,才需要註冊 Endpoint 資源。如要瞭解如何註冊非代理 API 目的地,請參閱「註冊端點」。
請按照下列步驟註冊代理程式:
控制台
前往 Google Cloud 控制台的「Agent Registry」:
在專案挑選器中,選取設定 Agent Registry 的 Google Cloud 專案。
選取「代理」分頁標籤。
按一下「新增代理」。
在「Agent details」(代理詳細資料) 面板中,輸入下列詳細資料:
- 類型:選取「非 A2A」。
- Name:輸入人類可讀的代理顯示名稱,例如
Travel Agent。 - 說明:輸入代理功能說明,例如
A test agent that plans travel itineraries. - Region (區域):選取要註冊代理程式的地理位置。
- 端點:輸入代理的託管端點。
按一下 [儲存]。
gcloud
您使用的規格旗標會決定元件所屬的資源集合。如需旗標與資源集合的完整對應關係,請參閱「[服務資源和探索資源](/agent-registry/data-model#service-resources)」。
如要註冊標準 REST 代理,並指定託管代理的端點網址,請執行 gcloud agent-registry services create 指令,並加上 --agent-spec-type=no-spec 和 --interfaces 旗標:
gcloud agent-registry services create AGENT_NAME \
--project=PROJECT_ID \
--location=REGION \
--display-name="DISPLAY_NAME" \
--agent-spec-type=no-spec \
--interfaces=url=ENDPOINT_URL,protocolBinding=PROTOCOL
更改下列內容:
AGENT_NAME:要指派給代理程式的 ID,例如my-remote-rest-agent。ID 必須介於 4 到 63 個字元之間,且只能包含小寫英文字母、數字和連字號。PROJECT_ID:專案 ID。REGION:登錄檔區域。DISPLAY_NAME:您要為代理指定的名稱,例如Remote REST Agent。ENDPOINT_URL:代理程式的 API 端點網址,例如https://api.example.com/v1/agents/1234。PROTOCOL:端點的通訊協定繫結。有效值為http-json、grpc或jsonrpc。
Terraform
您設定的規格區塊會決定元件所屬的資源集合。如需規格與資源集合的完整對應關係,請參閱「[服務資源和探索資源](/agent-registry/data-model#service-resources)」。
如要註冊標準 REST 代理,請設定 google_agent_registry_service 資源,並將 agent_spec 設為 NO_SPEC 類型,然後定義端點介面連線:
resource "google_agent_registry_service" "rest_agent" {
location = "REGION"
service_id = "AGENT_NAME"
display_name = "DISPLAY_NAME"
description = "A standard REST agent registered using Terraform."
agent_spec {
type = "NO_SPEC"
}
interfaces {
url = "ENDPOINT_URL"
protocol_binding = "PROTOCOL"
}
}
output "agent_resource_name" {
description = "The generated read-only Agent resource name."
value = google_agent_registry_service.rest_agent.registry_resource
}
更改下列內容:
REGION:註冊代理程式的區域。AGENT_NAME:要指派給代理的專屬 ID,例如my-remote-rest-agent。ID 必須介於 4 到 63 個字元之間,且只能包含小寫英文字母、數字和連字號。DISPLAY_NAME:您要為代理指定的名稱,例如Remote REST Agent。ENDPOINT_URL:代理程式的 API 端點網址,例如https://api.example.com/v1/agents/1234。PROTOCOL:端點的通訊協定繫結。有效值為HTTP_JSON、GRPC或JSONRPC。
註冊其他專案的代理
如果貴組織在多個 Google Cloud 專案中部署代理,並使用中央 Agent Gateway (Agent-to-Anywhere 輸出模式) 管理流量,則必須手動將其他 Google Cloud 專案中的每個遠端代理,註冊到中央管理專案的登錄檔。如要進一步瞭解這個架構,請參閱「部署模式範例」。
跨專案註冊的注意事項
跨專案註冊代理程式前,請先詳閱下列事項:
- 相容位置:Agent Registry 執行個體、Agent Gateway 和 Agent Endpoint 必須位於相同地理區域或
global位置。 - 自動探索限制:不支援自動跨專案探索。您必須手動註冊每個遠端代理。
- 生命週期管理:如果代理執行的其他Google Cloud 專案發生變更,代理註冊資料庫中的手動項目不會自動更新或刪除。修改或移除遠端代理時,您必須在中央註冊資料庫中管理這些項目的生命週期。
- 僅限輸出模式:只有 Agent-to-Anywhere 輸出閘道,才支援透過 Agent Gateway 跨專案管理。用戶端對代理輸入閘道要求代理和閘道位於相同專案。
註冊遠端代理程式
如要手動註冊其他專案的代理,請按照下列步驟操作:
控制台
前往 Google Cloud 控制台的「Agent Registry」:
在專案挑選器中,選取要註冊代理的中央管理專案。
選取「代理」分頁標籤。
按一下「新增代理」。
在「Agent details」(代理詳細資料) 面板中,輸入下列詳細資料:
- Type:如果遠端代理實作 A2A 通訊協定,請選取「A2A」;如果是標準 REST 端點,請選取「Non-A2A」。
- Region (區域):選取與中央閘道和遠端代理部署作業相符的區域。
提供代理端點:
- 如果是 A2A 代理,請選取「From URI」(從 URI),然後輸入遠端代理的代理資訊卡網址,或選取「Paste JSON」(貼上 JSON),然後貼上
agent-card.json內容。 - 如果不是 A2A 代理,請輸入遠端代理的端點網址。
- 如果是 A2A 代理,請選取「From URI」(從 URI),然後輸入遠端代理的代理資訊卡網址,或選取「Paste JSON」(貼上 JSON),然後貼上
按一下 [儲存]。
gcloud
您使用的規格旗標會決定元件所屬的資源集合。如需旗標與資源集合的完整對應關係,請參閱「[服務資源和探索資源](/agent-registry/data-model#service-resources)」。
- A2A 代理:如要註冊其他專案的 A2A 代理,請執行
gcloud agent-registry services create指令:
gcloud agent-registry services create AGENT_NAME \
--project=CENTRAL_PROJECT_ID \
--location=REGION \
--display-name="DISPLAY_NAME" \
--agent-spec-type=a2a-agent-card \
--agent-spec-content=agent-card.json
- REST 代理:如要從其他專案註冊標準 REST 代理,請執行
gcloud agent-registry services create指令:
gcloud agent-registry services create AGENT_NAME \
--project=CENTRAL_PROJECT_ID \
--location=REGION \
--display-name="DISPLAY_NAME" \
--agent-spec-type=no-spec \
--interfaces=url=REMOTE_ENDPOINT_URL,protocolBinding=PROTOCOL
更改下列內容:
AGENT_NAME:代理在中央登錄檔中的 ID,例如remote-support-agent。ID 必須介於 4 到 63 個半形字元之間,且只能使用小寫英文字母、數字和連字號。CENTRAL_PROJECT_ID:中央管理專案的專案 ID。REGION:註冊代理程式的區域,以及中央閘道和遠端代理程式所在的區域,例如us-central1。DISPLAY_NAME:人類可讀的代理名稱,例如Remote Support Agent。REMOTE_ENDPOINT_URL:在其他 Google Cloud 專案中執行的遠端代理端點網址,例如https://remote-support-agent-abc123.us-central1.run.app或https://api.example.com/v1/agents/support。PROTOCOL:端點的通訊協定繫結。有效值為http-json、grpc或jsonrpc。
Terraform
您設定的規格區塊會決定元件所屬的資源集合。如需規格與資源集合的完整對應關係,請參閱「[服務資源和探索資源](/agent-registry/data-model#service-resources)」。
如要使用 Terraform 在中央管理專案中註冊遠端代理,請設定 google_agent_registry_service 資源並指定中央專案:
resource "google_agent_registry_service" "remote_agent" {
project = "CENTRAL_PROJECT_ID"
location = "REGION"
service_id = "AGENT_NAME"
display_name = "DISPLAY_NAME"
description = "Remote agent registered from project AGENT_PROJECT_ID."
agent_spec {
type = "NO_SPEC"
}
interfaces {
url = "REMOTE_ENDPOINT_URL"
protocol_binding = "PROTOCOL"
}
}
output "agent_resource_name" {
description = "The generated read-only Agent resource name."
value = google_agent_registry_service.remote_agent.registry_resource
}
更改下列內容:
CENTRAL_PROJECT_ID:中央管理專案的專案 ID。REGION:註冊代理程式的區域,以及中央閘道和遠端代理程式所在的區域,例如us-central1。AGENT_NAME:代理在登錄檔中的專屬 ID,例如remote-support-agent。ID 必須介於 4 到 63 個字元之間,且只能包含小寫英文字母、數字和連字號。DISPLAY_NAME:人類可讀的代理名稱,例如Remote Support Agent。AGENT_PROJECT_ID:託管遠端代理的獨立 Google Cloud 專案 ID。REMOTE_ENDPOINT_URL:在其他 Google Cloud 專案中執行的遠端代理端點網址,例如https://remote-support-agent-abc123.us-central1.run.app或https://api.example.com/v1/agents/support。PROTOCOL:端點的通訊協定繫結。有效值為HTTP_JSON、GRPC或JSONRPC。
驗證註冊
註冊代理後,請確認 Agent Registry 已成功處理 Service 資源,並建立對應的唯讀 Agent 資源:
控制台
前往 Google Cloud 控制台的「Agent Registry」:
在專案挑選器中,選取設定 Agent Registry 的 Google Cloud 專案。
選取「代理」分頁標籤。
頁面會列出所有已註冊的代理程式和詳細資料。
gcloud
使用 gcloud agent-registry agents list 指令,列出登錄檔中已註冊的代理:
gcloud agent-registry agents list \
--project=PROJECT_ID \
--location=REGION
如果您有多個代理程式,或想確認單一代理程式的註冊狀態,可以依據代理程式的中繼資料篩選清單:
gcloud agent-registry agents list \
--project=PROJECT_ID \
--location=REGION \
--filter="FILTER_EXPRESSION"
更改下列內容:
Terraform
使用 google_agent_registry_agent 資料來源,在其他 Terraform 設定中參照已註冊的代理:
data "google_agent_registry_agent" "my_agent" {
location = "REGION"
filter = "displayName=\"DISPLAY_NAME\""
}
output "agent_urn" {
value = data.google_agent_registry_agent.my_agent.urn
}
更改下列內容:
REGION:登錄檔區域。DISPLAY_NAME:人類可讀的代理顯示名稱。