手動註冊代理

您可以透過代理登錄,手動註冊符合 A2A 標準和標準 REST 代理,這些代理託管於 Google Cloud外部、在不支援的執行階段上執行,或部署於不同 Google Cloud 專案。為這些代理建立 Service 資源後,整個 AI 生態系統就能探索其端點和功能。

Agent Registry 使用中央 Google Cloud 管理專案。在本文件中,「遠端」一詞是指託管於管理專案外部的代理,例如在獨立的 Google Cloud 專案、地端部署環境或外部雲端中,或是在不支援的執行階段上執行的代理。自動註冊功能只會探索部署在已啟用代理程式登錄檔的控管專案中,且受支援的資源,因此您必須手動將遠端代理程式註冊到控管專案的登錄檔。

代理類型和限制

您可以手動註冊兩種代理:

us 和 eu 多區域位置不支援手動註冊,您必須使用支援的區域或 global 位置。詳情請參閱「代理程式登錄檔位置」。

事前準備

  1. 設定 Agent Registry。
  2. 取得已啟用 Agent Registry 的管理專案專案 ID。

  3. 如要使用本文件中的 Google Cloud CLI 指令,請設定 gcloud CLI 環境。

必要的角色

如要取得在代理登錄中手動註冊代理所需的權限,請要求管理員在啟用代理登錄的管理專案中,授予您下列 IAM 角色:

如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

您或許也能透過自訂角色或其他預先定義的角色,取得必要權限。

如果代理的端點或代理資訊卡可透過標準公開網址存取,或透過預先設定的憑證進行驗證,則不需要任何額外權限。

註冊符合 A2A 規範的代理

如果遠端代理實作 A2A 規格,請將代理註冊導向代理的 agent-card.json 酬載。登錄檔會自動同步處理代理資訊卡,並為代理可用的 A2A 技能建立索引,方便搜尋。

請按照下列步驟註冊代理程式:

控制台

  1. 前往 Google Cloud 控制台的「Agent Registry」:

    前往代理程式註冊頁面

  2. 在專案挑選器中,選取設定 Agent Registry 的 Google Cloud 專案。

  3. 選取「代理」分頁標籤。

  4. 按一下「新增代理」。

  5. 在「Agent details」(代理詳細資料) 面板中,輸入下列詳細資料:

    • Type:選取「A2A」。
    • Region (區域):選取要註冊代理程式的地理位置。
  6. 您可以選擇下列其中一個選項:

    • 如要使用代理卡網址註冊代理,請選取「From URI」(來自 URI) 分頁標籤,然後在「URI」欄位中輸入有效網址。接著,點選「Import」(匯入),從網址取得代理資訊卡。
    • 如要複製及貼上代理程式資訊卡內容,請選取「Paste JSON」(貼上 JSON) 分頁標籤,然後貼上 agent-card.json 檔案的完整內容。
  7. 按一下 [儲存]。

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 目的地,請參閱「註冊端點」。

請按照下列步驟註冊代理程式:

控制台

  1. 前往 Google Cloud 控制台的「Agent Registry」:

    前往代理程式註冊頁面

  2. 在專案挑選器中,選取設定 Agent Registry 的 Google Cloud 專案。

  3. 選取「代理」分頁標籤。

  4. 按一下「新增代理」。

  5. 在「Agent details」(代理詳細資料) 面板中,輸入下列詳細資料:

    • 類型:選取「非 A2A」。
    • Name:輸入人類可讀的代理顯示名稱,例如 Travel Agent。
    • 說明:輸入代理功能說明,例如 A test agent that plans travel itineraries.
    • Region (區域):選取要註冊代理程式的地理位置。
    • 端點:輸入代理的託管端點。
  6. 按一下 [儲存]。

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 跨專案管理。用戶端對代理輸入閘道要求代理和閘道位於相同專案。

註冊遠端代理程式

如要手動註冊其他專案的代理,請按照下列步驟操作:

控制台

  1. 前往 Google Cloud 控制台的「Agent Registry」:

    前往代理程式註冊頁面

  2. 在專案挑選器中,選取要註冊代理的中央管理專案。

  3. 選取「代理」分頁標籤。

  4. 按一下「新增代理」。

  5. 在「Agent details」(代理詳細資料) 面板中,輸入下列詳細資料:

    • Type:如果遠端代理實作 A2A 通訊協定,請選取「A2A」;如果是標準 REST 端點,請選取「Non-A2A」。
    • Region (區域):選取與中央閘道和遠端代理部署作業相符的區域。
  6. 提供代理端點:

    • 如果是 A2A 代理,請選取「From URI」(從 URI),然後輸入遠端代理的代理資訊卡網址,或選取「Paste JSON」(貼上 JSON),然後貼上 agent-card.json 內容。
    • 如果不是 A2A 代理,請輸入遠端代理的端點網址。
  7. 按一下 [儲存]。

gcloud

您使用的規格旗標會決定元件所屬的資源集合。如需旗標與資源集合的完整對應關係,請參閱「[服務資源和探索資源](/agent-registry/data-model#service-resources)」。

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
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 資源:

控制台

  1. 前往 Google Cloud 控制台的「Agent Registry」:

    前往代理程式註冊頁面

  2. 在專案挑選器中,選取設定 Agent Registry 的 Google Cloud 專案。

  3. 選取「代理」分頁標籤。

    頁面會列出所有已註冊的代理程式和詳細資料。

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"

更改下列內容:

  • PROJECT_ID:專案 ID。
  • REGION:要註冊代理程式的區域。如果不想使用特定區域,請使用 global 值。
  • FILTER_EXPRESSION:要篩選的代理篩選運算式。舉例來說,如要依顯示名稱篩選,可以使用 displayName='DISPLAY_NAME'。如要依全球不重複的代理程式 ID (URN) 篩選,可以使用 agentId='urn:agent:AGENT_URN'。

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:人類可讀的代理顯示名稱。

後續步驟