Registrar y gestionar agentes A2A

Agente a agente (A2A) es un protocolo de comunicación abierto y un lenguaje universal para los agentes. Permite que los agentes de diferentes creadores y plataformas se descubran entre sí, colaboren y deleguen tareas de forma segura. En este documento se explica cómo pueden conectar los administradores de Gemini Enterprise a Gemini Enterprise los agentes creados con A2A y alojados en cualquier plataforma, de modo que los usuarios puedan acceder a ellos en la aplicación web Gemini Enterprise.

Antes de empezar

Asegúrate de que tienes lo siguiente:

Configurar los detalles de la autorización

Crea credenciales de OAuth 2.0 para que el agente acceda a Google Cloud recursos, como tablas de BigQuery, en nombre de un usuario.

Obtener detalles de la autorización

Sigue estos pasos para obtener los detalles de la autorización.

  1. En la Google Cloud consola, en la página APIs & Services (APIs y servicios), ve a la página Credentials (Credenciales).

    Ir a Credenciales

  2. Selecciona el proyecto Google Cloud que contiene la fuente de datos a la que quieres que acceda el agente. Por ejemplo, selecciona el proyecto que contiene el conjunto de datos de BigQuery que quieres que consulte el agente.

  3. Haz clic en Crear credenciales y selecciona ID de cliente de OAuth.

  4. En Tipo de aplicación, selecciona Aplicación web.

  5. En la sección URIs de redirección autorizados, añade los siguientes URIs:

    • https://vertexaisearch.cloud.google.com/oauth-redirect
    • https://vertexaisearch.cloud.google.com/static/oauth/oauth.html
  6. Haz clic en Crear.

  7. En el panel Cliente de OAuth creado, haz clic en Descargar JSON. El archivo JSON descargado incluye los campos Client ID, Authorization URI, Token URI y Client secret delGoogle Cloud proyecto seleccionado. Necesitarás estos datos para crear un recurso de autorización:

Añadir un recurso de autorización a Gemini Enterprise

Ejecuta el siguiente comando para registrar un recurso de autorización con Gemini Enterprise:

REST

curl -X POST \
   -H "Authorization: Bearer $(gcloud auth print-access-token)" \
   -H "Content-Type: application/json" \
   -H "X-Goog-User-Project: PROJECT_ID" \
   "https://ENDPOINT_LOCATION-discoveryengine.googleapis.com/v1alpha/projects/PROJECT_ID/locations/LOCATION/authorizations?authorizationId=AUTH_ID" \
   -d '{
      "name": "projects/PROJECT_ID/locations/LOCATION/authorizations/AUTH_ID",
      "serverSideOauth2": {
         "clientId": "OAUTH_CLIENT_ID",
         "clientSecret": "OAUTH_CLIENT_SECRET",
         "authorizationUri": "OAUTH_AUTH_URI",
         "tokenUri": "OAUTH_TOKEN_URI"
      }
   }'

Haz los cambios siguientes:

  • PROJECT_ID: el ID de tu proyecto.
  • ENDPOINT_LOCATION: la multirregión de tu solicitud a la API. Asigna uno de los siguientes valores:
    • us- para la multirregión de EE. UU.
    • eu- para la multirregión de la UE
    • global- para la ubicación global
    Para obtener más información, consulta el artículo sobre cómo especificar una multirregión para tu almacén de datos.
  • LOCATION: la multirregión de tu almacén de datos: global, us o eu
  • AUTH_ID: ID del recurso de autorización. Se trata de un ID alfanumérico arbitrario que defines. Necesitarás hacer referencia a este ID más adelante cuando registres un agente que requiera compatibilidad con OAuth.
  • OAUTH_CLIENT_ID: el identificador de cliente de OAuth 2.0 que obtuviste al crear las credenciales de OAuth.
  • OAUTH_CLIENT_SECRET: el secreto de cliente de OAuth 2.0 que obtuviste al crear las credenciales de OAuth.
  • OAUTH_AUTH_URI: el URI de autorización que obtuviste cuando creaste las credenciales de OAuth. Tiene el siguiente formato: https://accounts.google.com/o/oauth2/v2/auth?client_id=CLIENT_ID&redirect_uri=https%3A%2F%2Fvertexaisearch.cloud.google.com%2Fstatic%2Foauth%2Foauth.html&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fbigquery&include_granted_scopes=true&response_type=code&access_type=offline&prompt=consent
  • OAUTH_TOKEN_URI: el URI del token que has obtenido al crear las credenciales de OAuth.

Registrar un agente A2A en Gemini Enterprise

Puedes registrar tu agente A2A en Gemini Enterprise mediante laGoogle Cloud consola o la API REST. De este modo, el agente estará disponible para los usuarios de una aplicación de Gemini Enterprise.

Consola

Para registrar un agente de A2A mediante la consola Google Cloud , sigue estos pasos:

  1. En la Google Cloud consola, ve a la página de Gemini Enterprise.

    Gemini Enterprise

  2. Haz clic en el nombre de la aplicación en la que quieras registrar el agente.

  3. Haz clic en Agentes > Añadir agentes.

  4. En la sección Choose an agent type (Elige un tipo de agente), haz clic en Add (Añadir) en Custom agent via A2A (Agente personalizado mediante A2A).

  5. En el campo JSON de la tarjeta del agente, introduce los detalles de la tarjeta del agente en formato JSON. Para ver una lista completa de los campos disponibles, consulta la especificación oficial del protocolo Agent2Agent (A2A). En el siguiente ejemplo solo se usan los campos obligatorios.

    Por ejemplo:

    {
      "protocolVersion": "v1.0",
      "name": "Hello World Agent",
      "description": "Just a hello world agent",
      "url": "https://example.com/myagent",
      "iconUrl": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTkiIGhlaWdodD0iOTkiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOmdyYXk7IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik0zMyAwaDMzdjMzSDMzeiBNMCAzM2gzM3YzM0gweiBNNjYgMzNoMzN2MzNINjZ6IE0zMyA2NmgzM3YzM0gzM3oiIGZpbGw9ImJsdWUiLz48L3N2Zz4=",
      "version": "1.0.0",
      "capabilities": {
      },
      "skills": [
        {
          "id": "data-analysis",
          "name": "Data Analysis",
          "description": "Data analysis",
          "tags": []
        }
      ],
      "defaultInputModes": [
        "text/plain"
      ],
      "defaultOutputModes": [
        "text/plain"
      ]
    }
    
  6. Haz clic en Ver detalles del agente > Siguiente.

  7. Completa la configuración con uno de los siguientes métodos:

    • Si quieres que el agente acceda a los recursos en tu nombre, sigue estos pasos: Google Cloud

      1. Introduce el ID de cliente, el secreto de cliente, el URI de autorización y el URI de token que has generado en la sección Obtener detalles de autorización.

      2. Introduce los ámbitos.

      3. Haz clic en Finalizar.

    • Si no quieres que el agente acceda a los recursos en tu nombre, haz clic en Omitir y finalizar. Google Cloud

REST

Para crear y registrar un agente con Gemini Enterprise, usa el método agents.create. El siguiente comando solo usa los campos obligatorios. Para ver una lista completa de los campos disponibles, consulta la especificación oficial del protocolo de agente a agente (A2A).

Ejecuta este comando para registrar tu agente A2A en Gemini Enterprise:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://ENDPOINT_LOCATION-discoveryengine.googleapis.com/v1alpha/projects/PROJECT_ID/locations/LOCATION/collections/default_collection/engines/APP_ID/assistants/default_assistant/agents \
-d '
{
  "name": "AGENT_NAME",
  "displayName": "AGENT_DISPLAY_NAME",
  "description": "AGENT_DESCRIPTION",
  "a2aAgentDefinition": {
    "jsonAgentCard": "{\"protocolVersion\":\"PROTOCOLVERSION\",\"name\":\"AGENT_NAME\",\"description\":\"AGENT_DESCRIPTION\",\"url\":\"AGENT_URL\",\"version\":\"AGENT_VERSION\",\"defaultInputModes\":[\"INPUT_MODE\"],\"defaultOutputModes\":[\"OUTPUT_MODE\"],\"capabilities\":{ CAPABILITIES },\"skills\":[SKILLS]}"
  },
  "authorizationConfig": {
    "agentAuthorization": "projects/PROJECT_ID/locations/LOCATION/authorizations/AUTH_ID"
  }
}
'

Haz los cambios siguientes:

  • ENDPOINT_LOCATION: la multirregión de tu solicitud a la API. Asigna uno de los siguientes valores:
    • us- para la multirregión de EE. UU.
    • eu- para la multirregión de la UE
    • global- para la ubicación global
    Para obtener más información, consulta el artículo sobre cómo especificar una multirregión para tu almacén de datos.
  • LOCATION: la multirregión de tu almacén de datos: global, us o eu
  • PROJECT_ID: el ID de tu proyecto.
  • APP_ID: el ID de la aplicación con la que quieres registrar el agente.
  • AGENT_NAME: identificador único del agente.
  • AGENT_DISPLAY_NAME: el nombre del agente que se muestra en la aplicación web.
  • AGENT_DESCRIPTION: la descripción de lo que puede hacer el agente.
  • PROTOCOLVERSION: la versión del protocolo A2A que admite el agente. Para obtener más información sobre las versiones admitidas, consulta las notas de la versión de A2A.
  • AGENT_URL: URL del endpoint del agente.
  • AGENT_VERSION: la versión del agente.
  • INPUT_MODE: el tipo de medio de entrada predeterminado. Por ejemplo, application/json o text/plain.
  • OUTPUT_MODE: el tipo de medio de salida predeterminado. Por ejemplo, text/plain" o image/png.
  • CAPABILITIES: un objeto JSON que contiene las funciones de A2A admitidas. Por ejemplo, \"streaming\": true o \"pushNotifications\": false.
  • SKILLS: lista del objeto AgentSkill que ofrece el agente.
  • authorizationConfig: Si has obtenido los detalles de autorización y quieres que el agente acceda a los recursos en nombre del usuario, añade el campo authorization_config a tu recurso JSON. Google Cloud

Mostrar los agentes conectados a una aplicación

En el siguiente ejemplo de código se muestra cómo obtener los detalles de todos los agentes conectados a tu aplicación:

REST

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://ENDPOINT_LOCATION-discoveryengine.googleapis.com/v1alpha/projects/PROJECT_ID/locations/LOCATION/collections/default_collection/engines/APP_ID/assistants/default_assistant/agents"

Sustituye las variables por los valores correspondientes:

  • ENDPOINT_LOCATION-: la multirregión de tu solicitud a la API. Asigna uno de los siguientes valores:
    • us- para la multirregión de EE. UU.
    • eu- para la multirregión de la UE
    • global- para la ubicación global
    Para obtener más información, consulta el artículo sobre cómo especificar una multirregión para tu almacén de datos.
  • PROJECT_ID: el ID de tu proyecto de Google Cloud .
  • LOCATION: la multirregión de tu aplicación: global, us o eu.
  • APP_ID: el ID de tu aplicación de Gemini Enterprise.

Si Google no ha precompilado tu agente, la respuesta incluye un campo name en las primeras líneas. El valor de este campo contiene el ID del agente al final de la ruta. Por ejemplo, en la siguiente respuesta, el ID de agente es 12345678901234567890:

{
"name": "projects/123456/locations/global/collections/default_collection/engines/my-app/assistants/default_assistant/agents/12345678901234567890",
...
}

Ver los detalles de un agente A2A

En el siguiente código de ejemplo se muestra cómo puedes obtener los detalles de un agente que se ha registrado en Gemini Enterprise:

REST

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://ENDPOINT_LOCATION-discoveryengine.googleapis.com/v1alpha/projects/PROJECT_ID/locations/LOCATION/collections/default_collection/engines/APP_ID/assistants/default_assistant/agents/AGENT_ID"

Sustituye las variables por los valores correspondientes:

  • ENDPOINT_LOCATION-: la multirregión de tu solicitud a la API. Asigna uno de los siguientes valores:
    • us- para la multirregión de EE. UU.
    • eu- para la multirregión de la UE
    • global- para la ubicación global
    Para obtener más información, consulta el artículo sobre cómo especificar una multirregión para tu almacén de datos.
  • PROJECT_ID: el ID de tu proyecto de Google Cloud .
  • LOCATION: la multirregión de tu aplicación: global, us o eu.
  • APP_ID: el ID de tu aplicación de Gemini Enterprise.
  • AGENT_ID: el ID del agente. Puedes encontrar el ID del agente consultando la lista de agentes conectados a tu aplicación.

Actualizar un agente A2A

Puedes modificar los detalles de un agente de A2A registrado en Gemini Enterprise mediante la Google Cloud consola o la API REST.

Consola

Para actualizar un agente de A2A mediante la Google Cloud consola, sigue estos pasos:

  1. En la Google Cloud consola, ve a la página de Gemini Enterprise.

    Gemini Enterprise

  2. Haz clic en el nombre de la aplicación que incluye el agente que quieres actualizar.

  3. Haz clic en Agentes.

  4. Haga clic en el nombre del agente A2A (Custom) que quiera actualizar y, a continuación, haga clic en Editar.

  5. En el campo JSON de la tarjeta de agente, actualiza los detalles de la tarjeta de agente en formato JSON. Para ver una lista completa de los campos disponibles, consulta la especificación oficial del protocolo Agent2Agent (A2A). En el siguiente ejemplo solo se usan los campos obligatorios.

    Por ejemplo:

    {
      "protocolVersion": "v3.0",
      "name": "Hello World Agent",
      "description": "Just a hello world agent",
      "url": "https://example.com/myagent",
      "iconUrl": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTkiIGhlaWdodD0iOTkiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOmdyYXk7IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik0zMyAwaDMzdjMzSDMzeiBNMCAzM2gzM3YzM0gweiBNNjYgMzNoMzN2MzNINjZ6IE0zMyA2NmgzM3YzM0gzM3oiIGZpbGw9ImJsdWUiLz48L3N2Zz4=",
      "version": "1.1.0",
      "capabilities": {
      },
      "skills": [
        {
          "id": "data-analysis",
          "name": "Data Analysis",
          "description": "Data analysis",
          "tags": []
        }
      ],
      "defaultInputModes": [
        "text/plain"
      ],
      "defaultOutputModes": [
        "text/plain"
      ]
    }
    
  6. Haz clic en Guardar.

REST

Para actualizar los detalles de un agente de A2A registrado en Gemini Enterprise, usa el método agents.patch. El siguiente comando solo usa los campos obligatorios. Para ver una lista completa de los campos disponibles, consulta la especificación oficial del protocolo Agent2Agent (A2A).

Ejecuta este comando para actualizar tu agente A2A con Gemini Enterprise:

curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://ENDPOINT_LOCATION-discoveryengine.googleapis.com/v1alpha/projects/PROJECT_ID/locations/LOCATION/collections/default_collection/engines/APP_ID/assistants/default_assistant/agents/AGENT_ID \
-d '
{
  "name": "AGENT_NAME",
  "displayName": "AGENT_DISPLAY_NAME",
  "description": "AGENT_DESCRIPTION",
  "a2aAgentDefinition": {
    "jsonAgentCard": "{\"protocolVersion\":\"PROTOCOLVERSION\",\"name\":\"AGENT_NAME\",\"description\":\"AGENT_DESCRIPTION\",\"url\":\"AGENT_URL\",\"version\":\"AGENT_VERSION\",\"defaultInputModes\":[\"INPUT_MODE\"],\"defaultOutputModes\":[\"OUTPUT_MODE\"],\"capabilities\":{ CAPABILITIES },\"skills\":[SKILLS]}"
  },
  "authorizationConfig": {
    "agentAuthorization": "projects/PROJECT_ID/locations/LOCATION/authorizations/AUTH_ID"
  }
}
'

Haz los cambios siguientes:

  • ENDPOINT_LOCATION: la multirregión de tu solicitud a la API. Asigna uno de los siguientes valores:
    • us- para la multirregión de EE. UU.
    • eu- para la multirregión de la UE
    • global- para la ubicación global
    Para obtener más información, consulta el artículo sobre cómo especificar una multirregión para tu almacén de datos.
  • LOCATION: la multirregión de tu almacén de datos: global, us o eu.
  • PROJECT_ID: el ID de tu proyecto.
  • APP_ID: el ID de la aplicación en la que quieres registrar el agente.
  • AGENT_ID: el ID del agente. Puedes encontrar el ID del agente consultando la lista de agentes conectados a tu aplicación.
  • AGENT_NAME: identificador único del agente.
  • AGENT_DISPLAY_NAME: el nombre del agente que se muestra en la aplicación web.
  • AGENT_DESCRIPTION: la descripción de lo que puede hacer el agente.
  • PROTOCOLVERSION: la versión del protocolo A2A que admite el agente. Para obtener más información sobre las versiones admitidas, consulta las notas de la versión de A2A.
  • AGENT_URL: URL del endpoint del agente.
  • AGENT_VERSION: la versión del agente.
  • INPUT_MODE: el tipo de medio de entrada predeterminado. Por ejemplo, application/json o text/plain.
  • OUTPUT_MODE: el tipo de medio de salida predeterminado. Por ejemplo, text/plain o image/png.
  • CAPABILITIES: un objeto JSON que contiene las funciones de A2A admitidas. Por ejemplo, \"streaming\": true o \"pushNotifications\": false.
  • SKILLS: lista del objeto AgentSkill que ofrece el agente.
  • authorizationConfig: Si has obtenido los detalles de autorización y quieres que el agente acceda a los recursos en nombre del usuario, añade el campo authorization_config a tu recurso JSON. Google Cloud

Eliminar un agente de A2A

En el siguiente ejemplo de código se muestra cómo puedes eliminar un agente que esté conectado a tu aplicación:

REST

curl -X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://ENDPOINT_LOCATION-discoveryengine.googleapis.com/v1alpha/projects/PROJECT_ID/locations/LOCATION/collections/default_collection/engines/APP_ID/assistants/default_assistant/agents/AGENT_ID"

Sustituye las variables por los valores correspondientes:

  • ENDPOINT_LOCATION-: la multirregión de tu solicitud a la API. Asigna uno de los siguientes valores:
    • us- para la multirregión de EE. UU.
    • eu- para la multirregión de la UE
    • global- para la ubicación global
    Para obtener más información, consulta el artículo sobre cómo especificar una multirregión para tu almacén de datos.
  • PROJECT_ID: el ID de tu proyecto de Google Cloud .
  • LOCATION: la multirregión de tu aplicación: global, us o eu
  • APP_ID: el ID de tu aplicación de Gemini Enterprise.
  • AGENT_ID: el ID del agente. Puedes encontrar el ID del agente consultando la lista de agentes conectados a tu aplicación.

Siguientes pasos

  • Usa el agente que has registrado en Gemini Enterprise en la aplicación web.