使用手动注册

对于托管在Google Cloud 之外或在不受支持的运行时上运行的代理,您需要在代理注册表中手动注册。本文档介绍了如何在代理注册表中手动注册代理。

准备工作

开始之前,请先设置代理注册表。您需要项目 ID 才能执行这些任务。

如需使用本文档中的 Google Cloud CLI 命令,请确保您已设置 gcloud CLI 环境

所需的角色

如需获得在代理注册表中手动注册代理所需的权限,请让您的管理员为您授予项目的 Agent Registry API Editor (roles/agentregistry.editor) IAM 角色。 如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

您也可以通过自定义角色或其他预定义角色来获取所需的权限。

注册符合 A2A 标准的代理

如果您的远程代理实现了 Agent2Agent (A2A) 规范,请将代理注册表直接指向代理的 agent-card.json 载荷。注册表会自动同步智能体卡片,并为发现功能编入智能体的可用技能索引。

请按照以下步骤注册代理:

控制台

  1. 在 Google Cloud 控制台中,前往 Agent Registry

    前往 Agent Registry

  2. 在项目选择器中,选择设置代理注册表的 Google Cloud 项目。

  3. 选择代理标签页。

  4. 点击添加智能体

  5. 代理详情面板中,输入以下详细信息:

    • 类型:选择 A2A
    • 区域:选择您要注册代理的地理位置。
  6. 请从下列选项中选择一项:

    • 如需使用代理的资源 URI 注册代理,请选择来自 URI 标签页,然后在 URI 字段中输入有效的网址。然后,点击导入以从网址获取代理卡片。
    • 如需复制并粘贴代理卡片内容,请选择粘贴 JSON 标签页,然后粘贴 agent-card.json 文件的完整内容。
  7. 点击保存

gcloud

如需注册 A2A 代理,请将代理的代理卡片保存为本地 JSON 文件(例如 agent-card.json),然后执行以下操作:

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:您要为代理指定的名称,例如 my-support-agent
  • PROJECT_ID:项目 ID。
  • REGION:您要注册代理的区域。如果您不想使用特定区域,请使用值 global
  • DISPLAY_NAME:您要为代理提供的易读名称,例如 Support Agent

Terraform

如需注册符合 A2A 标准的代理,请配置 google_agent_registry_service 资源。使用 A2A_AGENT_CARD 类型和表示代理卡片 JSON 载荷的 content 指定 agent_spec 块:

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({
      schemaVersion = "v1"
      displayName   = "DISPLAY_NAME"
      description   = "A custom support agent registered using Terraform."
      skills = [
        {
          name        = "customer_lookup"
          description = "Looks up customer info by email address."
        }
      ]
    })
  }
}

output "agent_resource_name" {
  description = "The generated read-only Agent resource name."
  value       = google_agent_registry_service.a2a_agent.registry_resource
}

替换以下内容:

  • REGION:注册代理的区域。
  • AGENT_NAME:您要为代理提供的唯一名称,例如 my-support-agent
  • DISPLAY_NAME:您要为代理提供的易读名称,例如 Support Agent

注册标准 REST 代理

标准 REST 代理可通过名称和说明进行发现,但除非采用 A2A 协议,否则不具备可搜索的技能

如果您想注册未实现 A2A 规范的远程代理(例如标准 REST 或 SaaS API 端点),Agent Registry API 会创建一个没有代理协议规范的 Service 资源。

请按照以下步骤注册代理:

控制台

  1. 在 Google Cloud 控制台中,前往 Agent Registry

    前往 Agent Registry

  2. 在项目选择器中,选择设置代理注册表的 Google Cloud 项目。

  3. 选择代理标签页。

  4. 点击添加智能体

  5. 代理详情面板中,输入以下详细信息:

    • 类型:选择 Non-A2A
    • 名称:为代理输入一个直观易懂的显示名称,例如 Travel Agent
    • 说明:输入代理的功能说明,例如 A test agent that plans travel itineraries.
    • 区域:选择您要注册代理的地理位置。
    • 端点:输入代理的托管端点。
  6. 点击保存

gcloud

您可以选择使用 --interfaces 标志提供已定义的 HTTP/JSON 端点接口,以便注册表与代理建立连接。

如需注册标准 REST 代理,请执行以下操作:

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:您要为代理指定的名称,例如 my-remote-rest-agent
  • PROJECT_ID:项目 ID。
  • REGION:注册区域。
  • DISPLAY_NAME:您要为代理提供的易读名称,例如 Remote REST Agent
  • ENDPOINT_URL:代理的 API 端点网址,例如 https://api.remote-service.com/v1/agents/1234
  • PROTOCOL:端点的协议绑定。 有效值为 HTTP_JSONGRPCJSONRPC

Terraform

如需注册标准 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:您要为代理提供的唯一名称,例如 my-remote-rest-agent
  • DISPLAY_NAME:您要为代理提供的易读名称,例如 Remote REST Agent
  • ENDPOINT_URL:代理的 API 端点网址,例如 https://api.remote-service.com/v1/agents/1234
  • PROTOCOL:端点的协议绑定。 有效值为 HTTP_JSONGRPCJSONRPC

验证注册

注册代理后,验证代理注册表是否已成功处理 Service 并创建相应的 Agent 资源:

控制台

  1. 在 Google Cloud 控制台中,前往 Agent Registry

    前往 Agent Registry

  2. 在项目选择器中,选择设置代理注册表的 Google Cloud 项目。

  3. 选择代理标签页。

    该页面必须显示所有已注册代理及其详细信息的列表。

gcloud

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'。如需按全局唯一标识符 (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:智能体的直观易懂的显示名称。

后续步骤