A2A 에이전트 등록 및 관리

Agent-to-Agent(A2A)는 에이전트를 위한 개방형 통신 프로토콜이자 범용 언어입니다. 이를 통해 다양한 빌더와 플랫폼의 에이전트가 서로를 검색하고, 공동작업하고, 작업을 안전하게 위임할 수 있습니다. 이 문서에서는 Gemini Enterprise 관리자가 A2A를 사용하여 빌드되고 모든 플랫폼에서 호스팅되는 에이전트를 Gemini Enterprise에 연결하여 Gemini Enterprise 웹 앱 사용자가 이용할 수 있도록 하는 방법을 설명합니다.

시작하기 전에

다음 항목이 있는지 확인합니다.

  • 검색 엔진 관리자 역할

  • Discovery Engine API 사용 설정 Google Cloud프로젝트에 Discovery Engine API를 사용 설정하려면 Google Cloud 콘솔에서 Discovery Engine API 페이지로 이동합니다.

    Discovery Engine API로 이동

  • 기존 Gemini Enterprise 앱. 앱을 만들려면 앱 만들기를 참조하세요.

  • A2A 프로토콜을 사용하는 에이전트입니다.

승인 세부정보 구성

에이전트가 사용자를 대신하여 BigQuery 테이블과 같은 Google Cloud 리소스에 액세스할 수 있도록 OAuth 2.0 사용자 인증 정보를 만듭니다.

승인 세부정보 가져오기

다음 단계에 따라 승인 세부정보를 가져오세요.

  1. Google Cloud 콘솔의 API 및 서비스 페이지에서 사용자 인증 정보 페이지로 이동합니다.

    사용자 인증 정보로 이동

  2. 에이전트가 액세스할 데이터 소스가 있는 Google Cloud 프로젝트를 선택합니다. 예를 들어 에이전트가 쿼리할 BigQuery 데이터 세트가 포함된 프로젝트를 선택합니다.

  3. 사용자 인증 정보 만들기를 클릭하고 OAuth 클라이언트 ID를 선택합니다.

  4. 애플리케이션 유형에서 웹 애플리케이션을 선택합니다.

  5. 승인된 리디렉션 URI 섹션에 다음 URI를 추가합니다.

    • https://vertexaisearch.cloud.google.com/oauth-redirect
    • https://vertexaisearch.cloud.google.com/static/oauth/oauth.html
  6. 만들기를 클릭합니다.

  7. OAuth 클라이언트 생성됨 패널에서 JSON 다운로드를 클릭합니다. 다운로드한 JSON에는 선택한Google Cloud 프로젝트의 Client ID, Authorization URI, Token URI, Client secret이 포함됩니다. 승인 리소스를 만들려면 이러한 세부정보가 필요합니다.

Gemini Enterprise에 승인 리소스 추가

다음 명령어를 실행하여 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"
      }
   }'

다음을 바꿉니다.

  • PROJECT_ID: 프로젝트의 ID입니다.
  • ENDPOINT_LOCATION: API 요청의 멀티 리전입니다. 다음 값 중 하나를 할당합니다.
    • 미국 멀티 리전의 경우 us-
    • EU 멀티 리전의 경우 eu-
    • 전역 위치의 경우 global-
    자세한 내용은 데이터 스토어의 멀티 리전 지정을 참조하세요.
  • LOCATION: 데이터 스토어의 멀티 리전입니다(global, us 또는 eu).
  • AUTH_ID: 승인 리소스의 ID입니다. 이는 사용자가 정의하는 임의의 영숫자 ID입니다. OAuth 지원이 필요한 에이전트를 등록할 때 이 ID를 나중에 참조해야 합니다.
  • OAUTH_CLIENT_ID: OAuth 사용자 인증 정보를 만들 때 획득한 OAuth 2.0 클라이언트 식별자입니다.
  • OAUTH_CLIENT_SECRET: OAuth 사용자 인증 정보를 만들 때 획득한 OAuth 2.0 클라이언트 보안 비밀번호입니다.
  • OAUTH_AUTH_URI: OAuth 사용자 인증 정보를 만들 때 획득한 승인 URI입니다. 형식은 다음과 같습니다. 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: OAuth 사용자 인증 정보를 만들 때 획득한 토큰 URI입니다.

Gemini Enterprise에 A2A 에이전트 등록

Google Cloud 콘솔 또는 REST API를 사용하여 A2A 에이전트를 Gemini Enterprise에 등록할 수 있습니다. 이렇게 하면 Gemini Enterprise 앱 내에서 사용자가 에이전트를 사용할 수 있습니다.

콘솔

Google Cloud 콘솔을 사용하여 A2A 에이전트를 등록하려면 다음 단계를 따르세요.

  1. Google Cloud 콘솔에서 Gemini Enterprise 페이지로 이동합니다.

    Gemini Enterprise

  2. 에이전트를 등록할 앱의 이름을 클릭합니다.

  3. 에이전트 > 에이전트 추가를 클릭합니다.

  4. 에이전트 유형 선택 섹션에서 A2A를 통한 커스텀 에이전트추가를 클릭합니다.

  5. 에이전트 카드 JSON 필드에 에이전트 카드 세부정보를 JSON 형식으로 입력합니다. 사용 가능한 필드의 전체 목록은 Agent2Agent(A2A) 프로토콜 공식 사양을 참조하세요. 다음 예시에서는 필수 입력란만 사용합니다.

    예를 들면 다음과 같습니다.

    {
      "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. 에이전트 세부정보 프리뷰 > 다음을 클릭합니다.

  7. 다음 방법 중 하나를 사용하여 설정을 완료합니다.

    • 에이전트가 사용자를 대신하여 Google Cloud 리소스에 액세스하도록 하려면 다음 단계를 따르세요.

      1. 인증 세부정보 가져오기 섹션에서 생성한 클라이언트 ID, 클라이언트 보안 비밀번호, 인증 URI, 토큰 URI를 입력합니다.

      2. 범위를 입력합니다.

      3. 마침을 클릭합니다.

    • 에이전트가 사용자 대신 Google Cloud 리소스에 액세스하지 못하도록 하려면 건너뛰기 및 완료를 클릭합니다.

REST

Gemini Enterprise에서 에이전트를 만들고 등록하려면 agents.create 메서드를 사용합니다. 다음 명령어는 필수 입력란만 사용합니다. 사용 가능한 필드의 전체 목록은 Agent2Agent(A2A) 프로토콜 공식 사양을 참조하세요.

다음 명령어를 실행하여 A2A 에이전트를 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"
  }
}
'

다음을 바꿉니다.

  • ENDPOINT_LOCATION: API 요청의 멀티 리전입니다. 다음 값 중 하나를 할당합니다.
    • 미국 멀티 리전의 경우 us-
    • EU 멀티 리전의 경우 eu-
    • 전역 위치의 경우 global-
    자세한 내용은 데이터 스토어의 멀티 리전 지정을 참조하세요.
  • LOCATION: 데이터 스토어의 멀티 리전입니다(global, us 또는 eu).
  • PROJECT_ID: 프로젝트의 ID입니다.
  • APP_ID: 에이전트를 등록하려는 앱의 ID입니다.
  • AGENT_NAME: 에이전트의 고유 식별자입니다.
  • AGENT_DISPLAY_NAME: 웹 앱에 표시되는 에이전트의 이름입니다.
  • AGENT_DESCRIPTION: 에이전트가 수행할 수 있는 일에 대한 설명입니다.
  • PROTOCOLVERSION: 에이전트가 지원하는 A2A 프로토콜 버전입니다. 지원되는 버전에 대한 자세한 내용은 A2A 출시 노트를 참조하세요.
  • AGENT_URL: 에이전트의 엔드포인트 URL입니다.
  • AGENT_VERSION: 에이전트의 버전입니다.
  • INPUT_MODE: 기본 입력 미디어 유형입니다. 예를 들면 application/json 또는 text/plain입니다.
  • OUTPUT_MODE: 기본 출력 미디어 유형입니다. 예를 들면 text/plain" 또는 image/png입니다.
  • CAPABILITIES: 지원되는 A2A 기능이 포함된 JSON 객체입니다. 예를 들면 \"streaming\": true 또는 \"pushNotifications\": false입니다.
  • SKILLS: 에이전트가 제공하는 AgentSkill 객체 목록입니다.
  • authorizationConfig: 승인 세부정보를 획득했고 에이전트가 사용자를 대신하여 Google Cloud 리소스에 액세스하도록 하려면 JSON 리소스에 authorization_config 필드를 추가합니다.

앱에 연결된 에이전트 나열

다음 코드 샘플은 앱에 연결된 모든 에이전트의 세부정보를 가져오는 방법을 보여줍니다.

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"

변수를 다음 값으로 바꿉니다.

  • ENDPOINT_LOCATION-: API 요청의 멀티 리전입니다. 다음 값 중 하나를 할당합니다.
    • 미국 멀티 리전의 경우 us-
    • EU 멀티 리전의 경우 eu-
    • 전역 위치의 경우 global-
    자세한 내용은 데이터 스토어의 멀티 리전 지정을 참조하세요.
  • PROJECT_ID: Google Cloud 프로젝트의 ID입니다.
  • LOCATION: 앱의 멀티 리전입니다(global, us 또는 eu).
  • APP_ID: Gemini Enterprise 앱의 ID입니다.

에이전트가 Google에서 사전 빌드되지 않은 경우 응답의 처음 몇 줄에 name 필드가 포함됩니다. 이 필드의 값에는 경로 끝에 있는 에이전트 ID가 포함됩니다. 예를 들어 다음 응답에서 에이전트 ID는 12345678901234567890입니다.

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

A2A 에이전트의 세부정보 보기

다음 코드 샘플은 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"

변수를 다음 값으로 바꿉니다.

  • ENDPOINT_LOCATION-: API 요청의 멀티 리전입니다. 다음 값 중 하나를 할당합니다.
    • 미국 멀티 리전의 경우 us-
    • EU 멀티 리전의 경우 eu-
    • 전역 위치의 경우 global-
    자세한 내용은 데이터 스토어의 멀티 리전 지정을 참조하세요.
  • PROJECT_ID: Google Cloud 프로젝트의 ID입니다.
  • LOCATION: 앱의 멀티 리전입니다(global, us 또는 eu).
  • APP_ID: Gemini Enterprise 앱의 ID입니다.
  • AGENT_ID: 에이전트의 ID입니다. 앱에 연결된 에이전트를 나열하여 에이전트 ID를 확인할 수 있습니다.

A2A 에이전트 업데이트

Google Cloud 콘솔 또는 REST API를 사용하여 Gemini Enterprise에 등록된 기존 A2A 에이전트의 세부정보를 수정할 수 있습니다.

콘솔

Google Cloud 콘솔을 사용하여 A2A 에이전트를 업데이트하려면 다음 단계를 따르세요.

  1. Google Cloud 콘솔에서 Gemini Enterprise 페이지로 이동합니다.

    Gemini Enterprise

  2. 업데이트할 에이전트가 포함된 앱의 이름을 클릭합니다.

  3. 에이전트를 클릭합니다.

  4. 업데이트할 A2A(커스텀) 에이전트의 이름을 클릭한 다음 수정을 클릭합니다.

  5. 에이전트 카드 JSON 필드에서 JSON 형식으로 에이전트 카드 세부정보를 업데이트합니다. 사용 가능한 필드의 전체 목록은 Agent2Agent(A2A) 프로토콜 공식 사양을 참조하세요. 다음 예시에서는 필수 입력란만 사용합니다.

    예를 들면 다음과 같습니다.

    {
      "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. 저장을 클릭합니다.

REST

Gemini Enterprise에 등록된 A2A 에이전트의 세부정보를 업데이트하려면 agents.patch 메서드를 사용합니다. 다음 명령어는 필수 입력란만 사용합니다. 사용 가능한 필드의 전체 목록은 Agent2Agent(A2A) 프로토콜 공식 사양을 참조하세요.

다음 명령어를 실행하여 Gemini Enterprise로 A2A 에이전트를 업데이트합니다.

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"
  }
}
'

다음을 바꿉니다.

  • ENDPOINT_LOCATION: API 요청의 멀티 리전입니다. 다음 값 중 하나를 할당합니다.
    • 미국 멀티 리전의 경우 us-
    • EU 멀티 리전의 경우 eu-
    • 전역 위치의 경우 global-
    자세한 내용은 데이터 스토어의 멀티 리전 지정을 참조하세요.
  • LOCATION: 데이터 스토어의 멀티 리전입니다(global, us 또는 eu).
  • PROJECT_ID: 프로젝트의 ID입니다.
  • APP_ID: 에이전트를 등록하려는 앱의 ID입니다.
  • AGENT_ID: 에이전트의 ID입니다. 앱에 연결된 에이전트를 나열하여 에이전트 ID를 확인할 수 있습니다.
  • AGENT_NAME: 에이전트의 고유 식별자입니다.
  • AGENT_DISPLAY_NAME: 웹 앱에 표시되는 에이전트의 이름입니다.
  • AGENT_DESCRIPTION: 에이전트가 수행할 수 있는 일에 대한 설명입니다.
  • PROTOCOLVERSION: 에이전트가 지원하는 A2A 프로토콜 버전입니다. 지원되는 버전에 대한 자세한 내용은 A2A 출시 노트를 참조하세요.
  • AGENT_URL: 에이전트의 엔드포인트 URL입니다.
  • AGENT_VERSION: 에이전트의 버전입니다.
  • INPUT_MODE: 기본 입력 미디어 유형입니다. 예를 들면 application/json 또는 text/plain입니다.
  • OUTPUT_MODE: 기본 출력 미디어 유형입니다. 예를 들면 text/plain 또는 image/png입니다.
  • CAPABILITIES: 지원되는 A2A 기능이 포함된 JSON 객체입니다. 예를 들면 \"streaming\": true 또는 \"pushNotifications\": false입니다.
  • SKILLS: 에이전트가 제공하는 AgentSkill 객체 목록입니다.
  • authorizationConfig: 승인 세부정보를 획득했고 에이전트가 사용자를 대신하여 Google Cloud 리소스에 액세스하도록 하려면 JSON 리소스에 authorization_config 필드를 추가합니다.

A2A 에이전트 삭제

다음 코드 샘플은 앱에 연결된 에이전트를 삭제하는 방법을 보여줍니다.

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"

변수를 다음 값으로 바꿉니다.

  • ENDPOINT_LOCATION-: API 요청의 멀티 리전입니다. 다음 값 중 하나를 할당합니다.
    • 미국 멀티 리전의 경우 us-
    • EU 멀티 리전의 경우 eu-
    • 전역 위치의 경우 global-
    자세한 내용은 데이터 스토어의 멀티 리전 지정을 참조하세요.
  • PROJECT_ID: Google Cloud 프로젝트의 ID입니다.
  • LOCATION: 앱의 멀티 리전입니다(global, us 또는 eu).
  • APP_ID: Gemini Enterprise 앱의 ID입니다.
  • AGENT_ID: 에이전트의 ID입니다. 앱에 연결된 에이전트를 나열하여 에이전트 ID를 확인할 수 있습니다.

다음 단계

  • 웹 앱에서 Gemini Enterprise에 등록한 에이전트를 사용합니다.