Managed Agents API on Agent Platformを解説

記事タイトルとURLをコピーする

G-gen の佐々木です。当記事では、単一の API 呼び出しでマネージドな自律エージェントを構築・実行できるサービスである Managed Agents API on Agent Platform について解説します。

概要

Agent Platform とは

Gemini Enterprise Agent Platform(旧称 Vertex AI、以下 Agent Platform と記載)は、Google Cloud が提供する生成 AI とエージェントの開発・運用プラットフォームです。基盤モデルの API 提供、エージェントの開発フレームワーク、デプロイ基盤、評価・モニタリング・ガバナンスなどの運用機能を統合的に提供します。

Agent Platform の全体像や提供機能の詳細は、以下の記事で解説しています。

blog.g-gen.co.jp

Managed Agents API on Agent Platform とは

Managed Agents API on Agent Platform(以下 Managed Agents API と記載)は Agent Platform の機能の1つで、単一の API 呼び出しで自律的なエージェントを構築・実行できるマネージドサービスです。2026年5月現在はプレビュー提供です。

エージェントは Antigravity ハーネスを搭載しており、隔離された Linux サンドボックス内で以下の操作を行います。

  • 推論と計画
  • Python コードの実行
  • bash コマンドの実行
  • ファイルの読み書き
  • Web 検索によるグラウンディング
  • MCP サーバー経由での外部システム連携

Antigravity ハーネスは、Google I/O 2026 で発表された Antigravity プラットフォームの中核をなすエージェント実行基盤で、Gemini 3.5 Flash と協調するよう最適化されています。Google 自社のエージェント製品も同じハーネスを搭載しており、Managed Agents API はこれを Google Cloud から API 経由で利用できるようにしたサービスです。

Managed Agents API は REST API および Python SDK(Google Gen AI SDK)から利用できます。2026年5月現在の対応リージョンは global のみです。

プレビュー段階での注意点

2026年5月現在はプレビュー提供のため、本番採用にあたっては以下の制約に留意が必要です。

  • プレビュー期間中のサービス利用規約が適用される
  • 機密データの投入は推奨されない
  • API 仕様は変更される可能性がある

2026年5月現在の以下の公式ドキュメントの冒頭部分には「これらの pre-GA プロダクトは、内部テストとレビューのさまざまな段階にあります。そのため、これらのプロダクトで機密データやその他の機密データを使用しないでください 。これらのプロダクトは、限定的なテストと評価のみを目的としてお客様にご提供するものであり、商用目的や本番環境での使用はできません。」と明記されていることから、この点には十分留意する必要があると考えられます。

なおプレビュー提供されている Google Cloud サービスの考え方については、以下の記事も参照してください。

他のエージェント構築手段との比較

Google Cloud 上でエージェントを構築する手段は Managed Agents API のほかにも存在します。Managed Agents API は、ノーコードでの構築とフルコード開発の中間に位置するサービスです。

エージェント構築手段 抽象度 カスタマイズ性 主な利用者
Gemini Enterprise のノーコードエージェント構築 低(プリセットの設定) 業務ユーザー
Managed Agents API 中(API でハーネスの動作を設定) アプリケーション開発者
Agent Development Kit(ADK) 高(コードで自由に記述) エージェント開発者

Managed Agents API の基本

2つの API

Managed Agents API は以下の2つの API で構成されます。

API 役割
Agents API(コントロールプレーン) エージェント設定(以下、例)の作成・取得・更新
・システム指示
・ツール
・ネットワーク許可
・マウントするファイル
Interactions API(データプレーン) デプロイ済みエージェントへのリクエスト(以下、例)
・マルチターン会話
・ストリーミング応答

まず Agents API を使用してエージェントを定義し、以降は Interactions API の呼び出しを通じて会話を行うのが基本的な流れです。

ツールの利用

Managed Agents API では、エージェントが利用できるツールを定義できます。たとえば以下のようなツールをアタッチできます。

ツール 機能
code_execution Python コードの実行
filesystem サンドボックス内のファイル操作
google_search Web 検索によるグラウンディング
url_context 指定 URL からのコンテンツ抽出
mcp_server MCP サーバーへの接続

ツールは Agents API でエージェント設定に永続的に紐づける方法と、Interactions API のリクエスト単位でオーバーライドする方法のどちらでも指定できます。リクエスト単位で tools を渡した場合、そのターンではエージェント設定側のツール定義は無視され、リクエスト側のツール指定のみが有効になります。

料金

Managed Agents API では、エージェントが使用するモデル使用料が Agent Platform の標準レートで課金されます。

Managed Agents API 自体の料金については、2026年5月現在、公式ドキュメントに記載されていません。

サンドボックス環境について

プリインストール済ソフトウェアと組み込みツール

サンドボックスには以下のソフトウェアがプリインストールされています。

種別 ソフトウェア
UNIX コマンド bccurlfd-findgawkgcloudgithtopiproute2jqlsofprocpsripgreprsynctreeunzipwgetwhich
Python 3.11 ast-grep-clibeautifulsoup4google-genainumpypandaspyyamlrequests
Node.js 20 create-next-appcreate-vitetypescript

外部ネットワーク接続が許可されているサンドボックスでは、pip installnpm install で上記以外のパッケージを追加することもできます。

加えて、以下のツールは設定不要で常時利用できる「組み込みツール」です。前述「ツールの利用」のアタッチ式ツールとは別カテゴリで、tools への指定なしに呼び出せます。

ツール 機能
bash サンドボックスでのシェルコマンド実行
file_system ファイルの読み書き・削除、ディレクトリの一覧表示

最新情報については以下の公式ドキュメントを確認してください。

ファイルシステムと永続化

サンドボックスのファイルシステムは会話をまたいで永続化されます。TTL は7日で、新しいインタラクションが発生するたびに TTL がリセットされます。エージェント設定自体は API で明示的に削除するまで永続的に保持されます。複数のエージェントで同じサンドボックスを共有するには、リクエスト時に同じ environment_id を渡します。

外部ネットワーク接続が許可されているサンドボックスでは、pip installnpm install でインストールしたパッケージも環境スナップショットに保持され、同じ environment_id を再利用するインタラクションで引き続き利用可能です。

スキルのマウント

エージェントが実行されるサンドボックス内のパスに対して、Cloud Storage バケットや Skill Registry に登録してある再利用可能なスキルをマウントできます。

リソース 説明
gcs Cloud Storage バケットに配置したスキルフォルダからカスタムスキルを追加する
skill_registry Skill Registry に登録済みのスキルを追加する

セキュリティ

サンドボックスでは、実行プロセス・マウント・外部接続のそれぞれにセキュリティ制限が組み込まれています。

対象 セキュリティ制限
サンドボックスプロセス 管理者権限を持たない一般ユーザーとして起動される
外部ネットワーク接続 デフォルトで無効。許可リストで指定したドメインへのアクセスのみ許可
Cloud Storage や Skill Registry のマウント 指定したディレクトリまたはスキルのみアクセスできるダウンスコープトークンで行われる
MCP サーバーの認証ヘッダー 定義した MCP エンドポイントへのアクセス時にだけ送信される

外部ネットワーク接続の許可ドメインは、エージェントの定義で以下のように列挙します。

"network": {
  "allowlist": [
    {"domain": "example.com"},
    {"domain": "*"}
  ]
}

"*" を指定すると全ドメインへのアクセスが許可されますが、セキュリティ上、許可範囲はできるだけ狭く絞ることが推奨されます。

利用手順

事前準備

API の有効化

Agent Platform の API を有効化します。プロジェクト ID は適宜置き換えてください。

# API を有効化
$ gcloud services enable aiplatform.googleapis.com --project=<プロジェクトID>

IAM ロールの付与

API を呼び出すユーザーまたはサービスアカウントに、以下のいずれかの IAM ロールを付与します。

  • Vertex AI ユーザー(roles/aiplatform.user
  • Vertex AI 管理者(roles/aiplatform.admin

認証

REST API の呼び出しには、Bearer トークンとして gcloud で取得したアクセストークンを使用します。事前に gcloud auth login でログインを済ませておきます。

# gcloud で認証
$ gcloud auth login

アクセストークンは gcloud auth print-access-token で取得できます。以降の例では $(gcloud auth print-access-token) の形でリクエスト時にその場で取得します。

エージェントの作成

「数値計算を Python コードで解いて答えるエージェント」を作成します。Agents API のエンドポイント POST /agents にリクエストを送信します。プロジェクト ID は適宜置き換えてください。

# エージェントの作成
$ curl -X POST \
  "https://aiplatform.googleapis.com/v1beta1/projects/<プロジェクトID>/locations/global/agents" \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "hello-agent",
    "base_agent": "antigravity-preview-05-2026",
    "description": "数値計算を Python コードで解いて答えるサンプルエージェント",
    "system_instruction": "あなたは数値計算のアシスタントです。ユーザーから与えられた計算は必ず Python コードを実行して解き、コードと結果の両方を日本語で示してください。",
    "tools": [
      {"type": "code_execution"},
      {"type": "filesystem"}
    ]
  }'

参考 : エージェントの作成と管理 - エージェントを作成する

エージェントの呼び出し

作成したエージェントを Interactions API で呼び出します。POST /interactions にリクエストを送信します。Interactions API には Api-Revision ヘッダーが必須です。

# エージェントの呼び出し
$ curl -X POST \
  "https://aiplatform.googleapis.com/v1beta1/projects/<プロジェクトID>/locations/global/interactions" \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -H "Api-Revision: 2026-05-20" \
  -d '{
    "stream": true,
    "background": true,
    "store": true,
    "agent": "hello-agent",
    "environment": {"type": "remote"},
    "input": [
      {
        "type": "user_input",
        "content": [
          {"type": "text", "text": "1から100までの整数のうち、3の倍数の合計はいくつですか。"}
        ]
      }
    ]
  }'

新しいサンドボックスが払い出され、エージェントが Python コードを生成・実行し、結果を返します。"stream": true を指定しているため、レスポンスは Server-Sent Events(SSE)形式で逐次到着します。

event: interaction.created
data: {"interaction":{"id":"ChBhNTAxNGNmOWJmN2Q1M2Y5EAgaAzAwMSoEbWFpbg","status":"in_progress","object":"interaction"},"event_type":"interaction.created"}
  
event: interaction.status_update
data: {"interaction_id":"ChBhNTAxNGNmOWJmN2Q1M2Y5EAgaAzAwMSoEbWFpbg","status":"in_progress","event_type":"interaction.status_update"}
  
event: step.start
data: {"index":0,"step":{"id":"bbe14e24-ac0b-4898-87b2-ab44efb71763","type":"function_call","name":"run_command","arguments":{}},"event_type":"step.start"}
  
event: step.delta
data: {"index":0,"delta":{"arguments":"{\"CommandLine\":\"python3 -c \\\"print(sum(i for i in range(1, 101) if i % 3 == 0))\\\"\",\"Cwd\":\"/workspace\",\"explanation\":\"Calculate the sum of multiples of 3 between 1 and 100 using python3.\",\"WaitMsBeforeAsync\":5000,\"toolSummary\":\"Run Python command\",\"toolAction\":\"Running Python script\"}","type":"arguments_delta"},"event_type":"step.delta"}
  
event: step.stop
data: {"index":0,"event_type":"step.stop"}
  
event: step.start
data: {"index":1,"step":{"call_id":"bbe14e24-ac0b-4898-87b2-ab44efb71763","signature":"","type":"function_result","name":"run_command"},"event_type":"step.start"}
  
event: step.delta
data: {"index":1,"delta":{"name":"run_command","is_error":false,"type":"function_result","result":{"ExitCode":0,"Output":"[STDOUT]\n1683\n\n\n[STDERR]\n"}},"event_type":"step.delta"}
  
event: step.stop
data: {"index":1,"event_type":"step.stop"}
  
event: step.start
data: {"index":2,"step":{"type":"model_output"},"event_type":"step.start"}
  
event: step.delta
data: {"index":2,"delta":{"text":"1から100までの整数のうち、3の倍数の合計を求めるためのPythonコードと計算","type":"text"},"event_type":"step.delta"}
  
event: step.delta
data: {"index":2,"delta":{"text":"結果は以下の通りです。\n\n### Pythonコード\n\n```python\n# 1から100までの整数のうち、","type":"text"},"event_type":"step.delta"}
  
event: step.delta
data: {"index":2,"delta":{"text":"3の倍数の合計を計算します\ntotal_sum = sum(i for i in range(1, 10","type":"text"},"event_type":"step.delta"}
  
event: step.delta
data: {"index":2,"delta":{"text":"1) if i % 3 == 0)\nprint(total_sum)\n```\n\n### 計算結果\n\n**","type":"text"},"event_type":"step.delta"}
  
event: step.delta
data: {"index":2,"delta":{"text":"1683**\n\n---\n**作業サマリー**:\n- 1から100までの範囲","type":"text"},"event_type":"step.delta"}
  
event: step.delta
data: {"index":2,"delta":{"text":"で3の倍数を抽出し、その合計を計算するPythonコードを実行しました。\n- 計算の結果、合計","type":"text"},"event_type":"step.delta"}
  
event: step.delta
data: {"index":2,"delta":{"text":"は **1683** になることを確認しました。","type":"text"},"event_type":"step.delta"}
  
event: step.stop
data: {"index":2,"event_type":"step.stop"}
  
event: interaction.completed
data: {"interaction":{"id":"ChBhNTAxNGNmOWJmN2Q1M2Y5EAgaAzAwMSoEbWFpbg","status":"completed","usage":{"total_tokens":15326,"total_input_tokens":13786,"input_tokens_by_modality":[{"modality":"text","tokens":13786}],"total_output_tokens":309,"output_tokens_by_modality":[{"modality":"text","tokens":309}],"total_thought_tokens":1231},"created":"2026-05-24T13:56:20Z","updated":"2026-05-24T13:56:20Z","environment_id":"env_CAEQgICAgIDQ_PE1GiA1M2FhMTMzM2NlYjc0NDRmYjAwMTFmNzFkYzY1NDNlNA","object":"interaction"},"event_type":"interaction.completed"}
  
event: done
data: [DONE]

各ステップは step.start / step.delta / step.stop のイベントで区切られ、function_call(コマンド実行)、function_result(実行結果)、model_output(モデル応答)が順次ストリーミングされます。

最終イベント interaction.completed には interaction.idenvironment_id、消費トークン数(usage)が含まれます。次回リクエストで previous_interaction_idinteraction.id を、environmentenvironment_id を渡すと、マルチターン会話とサンドボックスを引き継げます。

なお、エージェント作成直後は Interactions API のリクエスト時に以下のレスポンスが返ることがあります。作成リクエストから Interactions API でエージェントが解決可能になるまでに時間差があるため、このエラーが返った場合は数十秒ほど待ってから再送してください。

{"error":{"message":"Result not found.","code":"not_found"}}

エージェントの削除

最後にエージェント設定を削除します。DELETE /agents/{AGENT_ID} により、サンドボックスとエージェント設定がまとめて破棄されます。

# エージェントの削除
$ curl -X DELETE \
  "https://aiplatform.googleapis.com/v1beta1/projects/<プロジェクトID>/locations/global/agents/hello-agent" \
  -H "Authorization: Bearer $(gcloud auth print-access-token)"

参考 : エージェントの作成と管理 - エージェントを削除する

佐々木 駿太 (記事一覧)

クラウドソリューション部 クラウドエンジニアリング1課
北海道在住

大学院まで社会心理学を専攻し、AI に興味を持ち IT 業界へ。2022年6月に G-gen にジョイン。Google Cloud Partner Top Engineer に選出(2024 / 2025 Fellow / 2026)。好きな Google Cloud プロダクトは Cloud Run。

趣味はコーヒー、小説(SF、ミステリ)、カラオケなど。最近は法律の勉強にも目覚め、2級知的財産管理技能士を取得。