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 プロトコルを使用するエージェント。
認可の詳細情報を構成する
エージェントがユーザーの代わりに Google Cloud リソース(BigQuery テーブルなど)にアクセスするための 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が含まれています。認可リソースを作成するには、次の情報が必要です。
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 です。この ID は、OAuth サポートが必要なエージェントを登録するときに参照する必要があります。OAUTH_CLIENT_ID: OAuth 認証情報を作成したときに取得した OAuth 2.0 クライアント ID。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=consentOAUTH_TOKEN_URI: OAuth 認証情報の作成時に取得したトークン URI。
Gemini Enterprise に A2A エージェントを登録する
Google Cloud コンソールまたは REST API を使用して、A2A エージェントを Gemini Enterprise に登録できます。これにより、Gemini Enterprise アプリ内のユーザーがエージェントを利用できるようになります。
コンソール
Google Cloud コンソールを使用して A2A エージェントを登録する手順は次のとおりです。
Google Cloud コンソールで、[Gemini Enterprise] ページに移動します。
エージェントを登録するアプリの名前をクリックします。
[エージェント] > [エージェントの追加] をクリックします。
[エージェント タイプの選択] セクションで、[A2A によるカスタム エージェント] の [追加] をクリックします。
[エージェント カードの 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" ] }[エージェントの詳細をプレビュー] > [次へ] をクリックします。
次のいずれかの方法で設定を完了します。
エージェントがユーザーに代わって Google Cloud リソースにアクセスできるようにするには、次の操作を行います。
認可の詳細を取得するで生成したクライアント ID、クライアント シークレット、認可 URI、トークン URI を入力します。
[スコープ] を入力します。
[完了] をクリックします。
エージェントがユーザーに代わって Google Cloud リソースにアクセスすることを許可しない場合は、[スキップして終了] をクリックします。
REST
Gemini Enterprise でエージェントを作成して登録するには、agents.create メソッドを使用します。次のコマンドでは、必須フィールドのみを使用します。使用可能なフィールドの完全なリストについては、Agent2Agent(A2A)プロトコルの公式仕様をご覧ください。
次のコマンドを実行して、Gemini Enterprise に A2A エージェントを登録します。
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 エージェントを更新する
Gemini Enterprise に登録されている既存の A2A エージェントの詳細は、 Google Cloud コンソールまたは REST API を使用して変更できます。
コンソール
Google Cloud コンソールを使用して A2A エージェントを更新する手順は次のとおりです。
Google Cloud コンソールで、[Gemini Enterprise] ページに移動します。
更新するエージェントを含むアプリの名前をクリックします。
[エージェント] をクリックします。
更新する A2A(カスタム)エージェントの名前をクリックし、[編集] をクリックします。
[エージェント カードの 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" ] }[保存] をクリックします。
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 に登録したエージェントをウェブアプリで使用する。