Agent2Agent(A2A)プロトコルは、オープンな通信 プロトコルであり、エージェントの共通言語です。このプロトコルにより、さまざまなビルダーやプラットフォームのエージェントが互いを検出し、コラボレーションやタスクの安全な委任を行えるようになります。このドキュメントでは、Gemini Enterprise の管理者が、A2A を使用して構築され、任意のプラットフォームにホストされているエージェントを Gemini Enterprise に接続し、Gemini Enterprise ウェブアプリでユーザーが利用できるようにする方法について説明します。
始める前に
以下のものが揃っていることを確認してください。
Discovery Engine API を有効にします。 Google Cloudプロジェクトで Discovery Engine API を有効にするには、 Google Cloud コンソールで [Discovery Engine API] ページに移動します。
既存の Gemini Enterprise app。アプリを作成するには、アプリを作成するをご覧ください。
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 認証情報は必要ありません。
コンソールの [**API とサービス**] ページで、 [**認証情報**] ページに移動します。 Google Cloud
-
エージェントにアクセスさせるデータソースを含む 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 には、
Client ID、Authorization URIToken URI、Client secretが選択した Google Cloud プロジェクトに含まれています。認可リソースを作成するには、次の情報が必要です。
Gemini Enterprise に A2A エージェントを登録する
Google Cloud コンソールまたは REST API を使用して、A2A エージェントを Gemini Enterprise に登録できます。これにより、Gemini Enterprise app 内のユーザーがエージェントを利用できるようになります。
コンソール
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 に認可リソースを追加する(省略可)
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、euAUTH_ID: 認可リソースの ID。任意に定義する英数字の ID です。この ID は、OAuth サポートが必要なエージェントを登録するときに参照する必要があります。OAUTH_CLIENT_ID: OAuth 認証情報を作成したときに取得した OAuth 2.0 クライアント ID。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 ドライブと Google ドキュメントへの読み取り専用アクセスをリクエストします。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)プロトコルの公式仕様をご覧ください。
次のコマンドを実行して、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 app の 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 app の 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": "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 app の ID。
- AGENT_ID: エージェントの ID。エージェント ID は、アプリに接続されているエージェントを一覧表示することで確認できます。
次のステップ
- Gemini Enterprise に登録したエージェントをウェブアプリで使用する。