Agent2Agent (A2A) 프로토콜은 에이전트를 위한 개방형 통신 프로토콜이자 범용 언어입니다. 이 프로토콜을 사용하면 다양한 빌더와 플랫폼의 에이전트가 서로를 검색하고, 공동작업하며, 작업을 안전하게 위임할 수 있습니다. 이 문서에서는 Gemini Enterprise 관리자가 A2A를 사용하여 빌드되고 모든 플랫폼에서 호스팅되는 에이전트를 Gemini Enterprise에 연결하여 Gemini Enterprise 웹 앱 사용자가 이용할 수 있도록 하는 방법을 설명합니다.
시작하기 전에
다음 항목이 있는지 확인합니다.
Discovery Engine API 사용 설정 Google Cloud프로젝트에 Discovery Engine API를 사용 설정하려면 Google Cloud 콘솔에서 Discovery Engine API 페이지로 이동합니다.
기존 Gemini Enterprise 앱. 앱을 만들려면 앱 만들기를 참조하세요.
A2A 프로토콜을 사용하는 에이전트입니다.
Gemini Enterprise는 A2A v0.3 스트리밍 메커니즘을 지원합니다.
A2A v1.0.0 이상을 사용하는 경우 SDK에서 제공하는 호환성 패키지를 사용하여 에이전트가 이전 메커니즘 (예: Go의 경우
a2acompat/a2av0패키지, Python의 경우a2a.compat.v0_3패키지)과 함께 작동하는지 확인합니다.
승인 세부정보 구성 (선택사항)
A2A 에이전트의 경우 OAuth 2.0 사용자 인증 정보를 사용하여 A2A 에이전트에 대한 최종 사용자 액세스를 제어할 수 있습니다. 하지만 에이전트가 Cloud Run에서 실행되고 액세스 제어에 Identity and Access Management를 사용하는 경우 OAuth 2.0 사용자 인증 정보가 필요하지 않습니다.
Google Cloud 콘솔의 API 및 서비스 페이지에서 사용자 인증 정보 페이지로 이동합니다.
-
에이전트가 액세스할 데이터 소스가 있는 Google Cloud 프로젝트를 선택합니다. 예를 들어 에이전트가 쿼리할 BigQuery 데이터 세트가 포함된 프로젝트를 선택합니다.
사용자 인증 정보 만들기를 클릭하고 OAuth 클라이언트 ID를 선택합니다.
애플리케이션 유형에서 웹 애플리케이션을 선택합니다.
승인된 리디렉션 URI 섹션에 다음 URI를 추가합니다.
https://vertexaisearch.cloud.google.com/oauth-redirecthttps://vertexaisearch.cloud.google.com/static/oauth/oauth.html
만들기를 클릭합니다.
OAuth 클라이언트 생성됨 패널에서 JSON 다운로드를 클릭합니다. 다운로드한 JSON에는 선택한Google Cloud 프로젝트의
Client ID,Authorization URI,Token URI,Client secret이 포함됩니다. 승인 리소스를 만들려면 이러한 세부정보가 필요합니다.
A2A 에이전트를 Gemini Enterprise에 등록
Google Cloud 콘솔 또는 REST API를 사용하여 A2A 에이전트를 Gemini Enterprise에 등록할 수 있습니다. 이렇게 하면 Gemini Enterprise 앱 내에서 사용자가 에이전트를 사용할 수 있습니다.
콘솔
Google Cloud 콘솔을 사용하여 A2A 에이전트를 등록하려면 다음 단계를 따르세요.
Google Cloud 콘솔에서 Gemini Enterprise 페이지로 이동합니다.
에이전트를 등록할 앱의 이름을 클릭합니다.
에이전트 > 에이전트 추가를 클릭합니다.
에이전트 유형 선택 섹션에서 A2A를 통한 커스텀 에이전트의 추가를 클릭합니다.
에이전트 카드 JSON 필드에 에이전트 카드 세부정보를 JSON 형식으로 입력합니다. 사용 가능한 필드의 전체 목록은 Agent2Agent(A2A) 프로토콜 공식 사양을 참조하세요. 다음 예시에서는 필수 입력란만 사용합니다.
예를 들면 다음과 같습니다.
{ "protocolVersion": "0.3", "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" ] }에이전트 세부정보 프리뷰 > 다음을 클릭합니다.
다음 방법 중 하나를 사용하여 설정을 완료합니다.
에이전트가 사용자를 대신하여 Google Cloud 리소스에 액세스하도록 하려면 다음 단계를 따르세요.
승인 세부정보 가져오기 섹션에서 생성한 클라이언트 ID, 클라이언트 보안 비밀번호, 승인 URI, 토큰 URI를 입력합니다.
범위를 입력합니다.
마침을 클릭합니다.
에이전트가 사용자 대신 Google Cloud 리소스에 액세스하지 못하도록 하려면 건너뛰기 및 완료를 클릭합니다.
REST
REST API를 사용하여 A2A 에이전트를 등록하려면 다음 단계를 따르세요.
Gemini Enterprise에 승인 리소스 추가 (선택사항)
에이전트가 사용자를 대신하여 Google Cloud 리소스에 액세스해야 하는 경우 다음 명령어를 실행하여 승인 세부정보 구성 (선택사항) 섹션에서 만든 승인 리소스를 Gemini Enterprise에 등록합니다.
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_NUMBER/locations/LOCATION/authorizations?authorizationId=AUTH_ID" \
-d '{
"name": "projects/PROJECT_NUMBER/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입니다.PROJECT_NUMBER: Google Cloud 프로젝트 수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: 승인 URI입니다. 앱을 승인하려면 OAuth 사용자 인증 정보 JSON 파일의 세부정보를 사용하여 특정 승인 URI를 구성합니다. 다음 템플릿을 복사하고 자리표시자를 특정 값으로 바꿉니다.https://accounts.google.com/o/oauth2/v2/auth?client_id=OAUTH_CLIENT_ID&redirect_uri=https%3A%2F%2Fvertexaisearch.cloud.google.com%2Fstatic%2Foauth%2Foauth.html&scope=YOUR_CUSTOM_SCOPES&include_granted_scopes=true&response_type=code&access_type=offline&prompt=consent
YOUR_CUSTOM_SCOPES: 필요한 범위를 추가할 수 있습니다. 예를 들어 다음 OAuth 범위 문자열은 Google Drive 및 Google Docs에 대한 읽기 전용 액세스를 요청합니다.scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive.readonly%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdocuments.readonly
OAUTH_TOKEN_URI: OAuth 사용자 인증 정보를 만들 때 획득한 토큰 URI입니다.
승인 URI 매개변수에 관한 자세한 정보입니다.
URI가 올바르게 작동하는지 확인하려면 다음 필드를 확인하세요.
| 매개변수 | 값 또는 작업 |
|---|---|
client_id |
다운로드한 JSON에 있는 client_id로 바꿉니다. |
redirect_uri |
변경하지 마세요. https://vertexaisearch.cloud.google.com/static/oauth/oauth.html이어야 합니다. |
scope |
앱이 사용자를 대신하여 액세스해야 하는 Google API 범위를 나열합니다. 예를 들어 BigQuery에 대한 액세스 권한을 부여하려면 여러 범위를 사용하는 경우 공백으로 구분합니다. 공백은 URL에서 |
include_granted_scopes |
true이어야 합니다. |
response_type |
승인 코드를 받으려면 code여야 합니다. |
access_type |
갱신 토큰을 수신하도록 하려면 offline로 설정합니다. |
prompt |
사용자에게 항상 동의 화면이 표시되도록 하려면 consent로 설정합니다. |
A2A 에이전트 등록
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필드를 추가합니다.AUTH_ID: Gemini Enterprise에 승인 리소스 추가 섹션에서 AUTH_ID에 사용한 값입니다.
앱에 연결된 에이전트 나열
다음 코드 샘플은 앱에 연결된 모든 에이전트의 세부정보를 가져오는 방법을 보여줍니다.
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 에이전트를 업데이트하려면 다음 단계를 따르세요.
Google Cloud 콘솔에서 Gemini Enterprise 페이지로 이동합니다.
업데이트할 에이전트가 포함된 앱의 이름을 클릭합니다.
에이전트를 클릭합니다.
업데이트할 A2A(커스텀) 에이전트의 이름을 클릭한 다음 수정을 클릭합니다.
에이전트 카드 JSON 필드에서 JSON 형식으로 에이전트 카드 세부정보를 업데이트합니다. 사용 가능한 필드의 전체 목록은 Agent2Agent(A2A) 프로토콜 공식 사양을 참조하세요. 다음 예시에서는 필수 입력란만 사용합니다.
예를 들면 다음과 같습니다.
{ "protocolVersion": "0.3", "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" ] }저장을 클릭합니다.
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필드를 추가합니다.AUTH_ID: Gemini Enterprise에 승인 리소스 추가 섹션에서 AUTH_ID에 사용한 값입니다.
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에 등록한 에이전트를 사용합니다.