リビジョンとトラフィックを管理する

Gemini Enterprise Agent Platform では、エージェントの不変バージョン(リビジョン)を作成できます。その後、アクティブなリビジョン間でトラフィックを分割できます。トラフィック分割を使用すると、新しいリビジョンをテストしてトラフィックを段階的に増やしたり、他の目的でリビジョン間でトラフィックを分割したりできます。

リビジョンを作成する機能は常に有効になっています。この機能を有効にする必要はありません。リビジョンの作成については、リビジョンと状態をご覧ください。

まだリビジョンを作成していない場合は、このページで説明するように、リビジョンを表示してリビジョン間のトラフィックを構成する前に、リビジョンを作成する必要があります。

現時点では、リビジョンとトラフィック分割は v1beta1 API で使用できます。

このページでは、エージェントのリビジョンとトラフィック分割を管理する方法について説明します。

リビジョンと状態

リビジョンはエージェントのスナップショットです。エージェントを作成するか、バージョン管理されたフィールドを更新すると、エージェントの変更不可のリビジョンが作成されます。リビジョンは、クエリで使用できる場合にアクティブになります。トラフィック構成によっては、クエリを受信していない可能性があります。リビジョンをアーカイブすると、トラフィックの処理から完全に削除され、復元できなくなります。アーカイブされたリビジョンは、履歴としてのみ保持されます。

リビジョンは、リソース名を使用して識別できます。リソース名は、エージェントのリビジョンを一覧表示することで確認できます。

リビジョンの上限

アーカイブされたリビジョンは、リビジョン スロットを占有しなくなります。エージェント Gateway バインディングを変更すると、既存のすべてのリビジョンがアーカイブされるため(エージェント Gateway とリビジョンを参照)、バインディングの変更によって割り当てが消費されるのではなく、割り当てが解放されます。アーカイブされたリビジョンは削除できます。

バージョン管理されたフィールドとバージョン管理されていないフィールド

このセクションでは、エージェントのリビジョンを作成するために更新できる、デプロイされたエージェントの ReasoningEngineSpec 定義のフィールドを一覧表示します。

バージョン管理されたフィールドを更新すると、新しいリビジョンが作成されます。

バージョン管理されていないフィールド、またはバージョン管理されているフィールド以外のエージェントの定義のフィールドを更新すると、エージェントはすべてのリビジョンで更新されます。

バージョン管理されたフィールドは次のとおりです。

  • PackageSpec
    • pickleObjectGcsUri
    • dependencyFilesGcsUri
    • requirementsGcsUri
    • pythonVersion
  • DeploymentSpec
    • env[]
    • secretEnv[]
    • firstPartyImageOverride
    • agentServerMode
    • pscInterfaceConfig
    • minInstances
    • maxInstances
    • resourceLimits
    • containerConcurrency
  • classMethods[]
  • agentFramework
  • SourceCodeSpec
    • source
    • languageSpec
  • identityType
  • agentCard[]

エージェントのリビジョンを一覧表示する

デプロイされたエージェントのすべてのリビジョンを一覧表示できます。

エージェントのリソース ID を確認するには、エージェントのリソース ID を取得するをご覧ください。

コンソール

  1. Google Agent Platform で、[Govern > Deployments] に移動します。

    [デプロイ] に移動

  2. エージェントの名前をクリックします。

  3. [リビジョン] タブを選択します。

  4. ページの上部には、リビジョンに関する次の情報が表示されます。

    1. 分割モード: 「手動」または「最新」のいずれかを選択できます。詳細については、「リビジョンへのトラフィックを管理する」をご覧ください。
    2. アクティブなリビジョン: リビジョンの合計数に対するアクティブなリビジョンの数。
    3. 最新のリビジョン: 最新のリビジョンの名前と、そのリビジョンが受信しているトラフィックの割合。
    4. プライマリ リビジョン: トラフィックの大部分を受け取るプライマリ リビジョンの名前。
  5. リストには、エージェントのすべてのリビジョンが表示され、次の情報が含まれます。

    1. 名前: リビジョンの名前または番号。
    2. 状態: リビジョンの状態。
    3. トラフィック: リビジョンに転送されるトラフィックの割合。
    4. 作成日: リビジョンが作成された日時。

Agent Platform SDK

次のコードは、指定されたデプロイ済みエージェントの変更履歴を一覧表示します。リビジョンを一覧表示するには、エージェントの一意のリソース ID を特定する必要があります。

import agentplatform

client = agentplatform.Client(
    project="PROJECT_ID",
    location="LOCATION",
    http_options={"api_version": "v1beta1"},
)

revisions = client.runtimes.revisions.list(
    name="projects/PROJECT_ID/locations/LOCATION/reasoningEngines/RESOURCE_ID"
)

for revision in revisions:
    print(revision)

コード内の次の変数を置き換えます。

  • PROJECT_ID: 実際の Cloud de Confiance by S3NS プロジェクト ID
  • LOCATION: サポートされているリージョン
  • RESOURCE_ID: デプロイされたエージェントのリソース ID

REST

reasoningEngineRuntimeRevisions.list メソッドを呼び出します。

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID: 実際の Cloud de Confiance by S3NS プロジェクト ID
  • LOCATION: サポートされているリージョン
  • RESOURCE_ID: デプロイされたエージェントのリソース ID。

HTTP メソッドと URL:

GET https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/reasoningEngines/RESOURCE_ID/runtimeRevisions

リクエストを送信するには、次のいずれかのオプションを展開します。

次のような JSON レスポンスが返されます。

{
  "reasoningEngineRuntimeRevisions": [
      {
        "name": "projects/PROJECT_ID/locations/LOCATION/reasoningEngines/RESOURCE_ID/runtimeRevisions/REVISION_ID",
        "spec": {
          // Revision-specific config attributes (e.g., package specs, requirements)
        },
        "createTime": "2026-05-01T13:26:01Z",
        "state": "ACTIVE"
      }...
    ]
}

リビジョンの詳細を取得する

特定のリビジョンの詳細を取得できます。

コンソール

  1. [管理] > [デプロイ] に移動します。

    [デプロイ] に移動

  2. エージェントの名前をクリックします。

  3. [リビジョン] タブに移動します。

  4. リビジョンの詳細ページで、リビジョン名をクリックします。

  5. この画面には、作成時間や状態など、リビジョンに関する情報が表示されます。

Agent Platform SDK

次のコードは、指定されたデプロイ済みエージェント リビジョンのリソースの詳細を取得します。

import agentplatform

client = agentplatform.Client(
    project="PROJECT_ID",
    location="LOCATION",
    http_options={"api_version": "v1beta1"},
)

revision = client.runtimes.revisions.get(
    name="projects/PROJECT_ID/locations/LOCATION/reasoningEngines/RESOURCE_ID/runtimeRevisions/REVISION_ID"
)

print(revision)

コード内の次の変数を置き換えます。

  • PROJECT_ID: 実際の Cloud de Confiance by S3NS プロジェクト ID
  • LOCATION: サポートされているリージョン
  • RESOURCE_ID: デプロイされたエージェントのリソース ID
  • REVISION_ID: 特定のランタイム リビジョンの一意の ID

REST

reasoningEngineRuntimeRevisions.get メソッドを呼び出します。

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID: 実際の Cloud de Confiance by S3NS プロジェクト ID
  • LOCATION: サポートされているリージョン
  • RESOURCE_ID: デプロイされたエージェントのリソース ID
  • REVISION_ID: 特定のランタイム リビジョンの一意の ID

HTTP メソッドと URL:

GET https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/reasoningEngines/RESOURCE_ID/runtimeRevisions/REVISION_ID

リクエストを送信するには、次のいずれかのオプションを展開します。

次のような JSON レスポンスが返されます。

{
  "name": "projects/PROJECT_ID/locations/LOCATION/reasoningEngines/RESOURCE_ID/runtimeRevisions/REVISION_ID",
  "spec": {
    // Revision-specific config attributes (e.g., package specs, requirements)
  },
  "createTime": "2026-05-06T13:05:24Z",
  "state": "ACTIVE"
}

リビジョン間のトラフィック分配を構成する

アクティブなリビジョン間でトラフィックを分散する方法を管理できます。トラフィック分割が行われるのは、ルート reasoningEngine リソースに送信されたクエリのみです。特定のリビジョン リソースパスにクエリを送信すると、トラフィック ルールが明示的にバイパスされます。

トラフィックは、次のいずれかの方法で分散されます。

  • 割合別: 割合別に構成すると、指定した割合のトラフィックが各エージェント リビジョンに転送されます。指定する割合は整数である必要があります。割合の合計は 100% にする必要があります。アクティブなリビジョンが 1 つしかない場合でも、トラフィック分割(100% リダイレクト)を構成できます。
  • 最新のリビジョンに: すべてのトラフィックが最新のリビジョンに転送されます。新しいエージェント リビジョンが作成されると、トラフィックはその新しいリビジョンに自動的に転送されます。

手動分割の対象にできるのは、アクティブなリビジョンのみです。アーカイブされたリビジョンに名前を付けると、FAILED_PRECONDITION が返されます。

Traffic target revision {revision} is not an active revision of this Agent Engine. Update traffic_config to reference only active revisions.

コンソール

トラフィック管理を構成する手順は次のとおりです。

  1. [管理] > [デプロイ] に移動します。

    [デプロイ] に移動

  2. エージェントの名前をクリックします。

  3. [リビジョン] タブに移動します。

  4. リビジョンの詳細ページで、[トラフィックの管理] をクリックします。

  5. [分割モード] で、次のいずれかのオプションを選択します。

    1. 手動: 各リビジョンに転送するトラフィックの割合を指定します。
    2. 常に最新: この場合、トラフィックの 100% が最新(最近作成された)リビジョンに転送されます。
  6. [保存] を選択して変更を保存します。

Agent Platform SDK

次のコードは、割合ベースのトラフィック分配を構成する例を示しています。

import agentplatform

client = agentplatform.Client(
    project="PROJECT_ID",
    location="LOCATION",
    http_options={"api_version": "v1beta1"},
)

client.runtimes.update(
    name="projects/PROJECT_ID/locations/LOCATION/reasoningEngines/RESOURCE_ID",
    config={
        "traffic_config": {
            "trafficSplitManual": {
                "targets": [
                    {
                        "runtimeRevisionName": "projects/PROJECT_ID/locations/LOCATION/reasoningEngines/RESOURCE_ID/runtimeRevisions/REVISION_ID_1",
                        "percent": 50,
                    },
                    {
                        "runtimeRevisionName": "projects/PROJECT_ID/locations/LOCATION/reasoningEngines/RESOURCE_ID/runtimeRevisions/REVISION_ID_2",
                        "percent": 50,
                    },
                ]
            }
        }
    },
)

コード内の次の変数を置き換えます。

  • PROJECT_ID: 実際の Cloud de Confiance by S3NS プロジェクト ID
  • LOCATION: サポートされているリージョン
  • RESOURCE_ID: デプロイされたエージェントのリソース ID
  • REVISION_ID_1: 最初のリビジョンのリビジョン ID
  • REVISION_ID_2: 2 番目のリビジョンのリビジョン ID

REST

トラフィックが常に最新のリビジョンに転送されるように構成する(デフォルト)には、traffic_config フィールドを使用して ReasoningEngine リソースを更新し、trafficSplitAlwaysLatest を指定します。

{
  "trafficConfig": {
    "trafficSplitAlwaysLatest": {}
  }
}

エージェントのランタイム リビジョン間でトラフィックを分割するには、traffic_config フィールドを使用して ReasoningEngine リソースを更新し、トラフィック ターゲットのリストとそれぞれの割合を指定します。次の例は、2 つのリビジョン間で手動分割を設定する方法を示しています。

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID: 実際の Cloud de Confiance by S3NS プロジェクト ID
  • LOCATION: サポートされているリージョン
  • RESOURCE_ID: デプロイされたエージェントのリソース ID
  • REVISION_ID_1: 最初のリビジョンのリビジョン ID
  • REVISION_ID_2: 2 番目のリビジョンのリビジョン ID
  • TRAFFIC_PERCENTAGE_1: 最初のリビジョンに必要なトラフィック フローの割合
  • TRAFFIC_PERCENTAGE_2: 2 番目のリビジョンに必要なトラフィック フローの割合

HTTP メソッドと URL:

PATCH https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/reasoningEngines/RESOURCE_ID?update_mask=traffic_config

リクエストの本文(JSON):

{
  "trafficConfig": {
    "trafficSplitManual": {
      "targets": [
          {
            "runtimeRevisionName": "projects/PROJECT_ID/locations/LOCATION/reasoningEngines/RESOURCE_ID/runtimeRevisions/REVISION_ID_1",
            "percent": TRAFFIC_PERCENTAGE_1
          },
          {
            "runtimeRevisionName": "projects/PROJECT_ID/locations/LOCATION/reasoningEngines/RESOURCE_ID/runtimeRevisions/REVISION_ID_2",
            "percent": TRAFFIC_PERCENTAGE_2
          }
        ]
      }
    }
}

リクエストを送信するには、次のいずれかのオプションを展開します。

このリクエストにより、長時間実行オペレーション(LRO)が開始されます。最初は、標準のオペレーション レスポンスが返されます。構成の変更が完了すると、レスポンスに done が表示され、構成設定が繰り返されます。
{
  "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
  "done": false
}

特定のリビジョンをクエリする

SDK または API を使用して、特定のリビジョンをクエリできます。リビジョンをクエリするには、リビジョンがアクティブである必要があります。特定のリビジョンに直接クエリを送信すると、トラフィック分配ルールがバイパスされます。

Agent Platform SDK

次のコードは、特定のアクティブなリビジョンをクエリします。

import agentplatform

client = agentplatform.Client(
    project="PROJECT_ID",
    location="LOCATION",
    http_options={"api_version": "v1beta1"},
)

revision = client.runtimes.revisions.get(
    name="projects/PROJECT_ID/locations/LOCATION/reasoningEngines/RESOURCE_ID/runtimeRevisions/REVISION_ID"
)

response = revision.query(
    input={"your_input_key": "your_input_value"},
    config={"class_method": "your_class_method"},
)

print(response)

コード内の次の変数を置き換えます。

  • PROJECT_ID: 実際の Cloud de Confiance by S3NS プロジェクト ID
  • LOCATION: サポートされているリージョン
  • RESOURCE_ID: デプロイされたエージェントのリソース ID
  • REVISION_ID: 特定のランタイム リビジョンの一意の ID

REST

reasoningEngineRuntimeRevisions.query メソッドを呼び出します。

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID: 実際の Cloud de Confiance by S3NS プロジェクト ID
  • LOCATION: サポートされているリージョン
  • RESOURCE_ID: デプロイされたエージェントのリソース ID
  • REVISION_ID: 特定のランタイム リビジョンの一意の ID

HTTP メソッドと URL:

POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/reasoningEngines/RESOURCE_ID/runtimeRevisions/REVISION_ID:query

リクエストを送信するには、次のいずれかのオプションを展開します。

 

Agent Gateway とリビジョン

エージェントで Agent Gateway バインディングを関連付け、変更、または関連付け解除すると、新しいリビジョンが作成され、変更前に存在していたすべてのリビジョンがアーカイブされます。新しいリビジョンのみがアクティブなままになります。この操作は元に戻せません。アーカイブされたリビジョンは復元できません。

バインディングの変更では既存のすべてのリビジョンがアーカイブされるため、すべてのトラフィックがすでに最新のリビジョンにある場合にのみ許可されます。手動分割が設定されている場合、トラフィックの 100% が最新のリビジョンに割り当てられる場合でも、API は変更を拒否します。拒否は FAILED_PRECONDITION を返します。

Changing spec.deployment_spec.agent_gateway_config archives every existing runtime revision, so it is only allowed while all traffic is on the latest revision. Set traffic_config.traffic_split_always_latest, or clear traffic_config, before changing the Agent Gateway configuration.

手動トラフィック分割を使用するエージェントのゲートウェイを変更するには:

  1. traffic_config.traffic_split_always_latest を設定する(または traffic_config をクリアする)ことで、常に最新のルーティングに切り替えます。リビジョン間のトラフィック分配を構成するをご覧ください。
  2. spec.deployment_spec.agent_gateway_config を変更します。これにより、新しいリビジョンが作成され、以前のリビジョンがすべてアーカイブされます。
  3. 手動分割が再度必要な場合は、バインディングの変更後に作成されたリビジョンから作成します。

アーカイブされたリビジョンには API を通じてアクセスでき、完全な ReasoningEngineSpec が保持されます。アーカイブされたリビジョンと同等の新しいリビジョンを作成するには、アーカイブされたリビジョンの詳細を取得し、同じバージョン管理されたフィールドを使用して新しいリビジョンをデプロイします。同じコンテナ イメージ URI を再利用すると同じランタイムが再現され、同じソースコードの場所とクラスメソッドを再利用すると同じ動作が再現されます。

リビジョンをモニタリングする

ログのメタデータとしてリビジョン番号を追跡することで、アクティビティと問題のリビジョンをモニタリングします。ロギングの設定については、ロギングを設定するをご覧ください。

新しいエージェント リビジョンを作成する

新しいリビジョンを作成するには、デプロイされたエージェントのバージョン付きフィールドを更新します。手順については、デプロイされたエージェントを更新するをご覧ください。

バージョニングされたフィールドを更新すると、新しいリビジョンが自動的に作成されます。バージョン管理されていないフィールドを更新すると、新しいリビジョンを作成せずに、既存のすべてのリビジョンでエージェントが更新されます。

リビジョンのクリーンアップを管理する

Gemini Enterprise Agent Platform は、古いリビジョンを自動的に削除して、リビジョンの上限を超えないようにします。リビジョンを手動で削除することもできます。

自動ガベージ コレクション

デフォルトでは、Gemini Enterprise Agent Platform はすべてのエージェントで自動ガベージ コレクションを有効にします。無効にすることはできません。ガベージ コレクションは、エージェントの更新オペレーションの一部としてのみ実行されます。バックグラウンド ジョブとしては実行されません。

  • 実行タイミング: 更新オペレーションで構成されたリビジョン上限を超えようとすると、Gemini Enterprise Agent Platform は、新しいリビジョンを作成する前に、同じオペレーションで最も古い対象リビジョンを削除します。上限を引き下げると、Gemini Enterprise Agent Platform は、新しい上限を満たすために、最も古い対象リビジョンをすぐに削除します。
  • 削除対象のリビジョン: リビジョンが削除対象となるのは、次のすべての条件を満たしている場合に限られます。
    • ACTIVE 状態です。
    • トラフィック構成に含まれていない(トラフィックを 0% 受信)。
  • 失敗: スペースを解放するのに十分な適格なリビジョンがない場合、Gemini Enterprise Agent Platform は FAILED_PRECONDITION エラーで更新オペレーションを拒否します。リビジョンの削除や新しいリビジョンの作成は行いません。再試行する前に、トラフィック構成からリビジョンを削除するか、上限を引き上げる必要があります。

上限を構成する

上限は、エージェントの revision_garbage_collection_strategy.keep_n_latest.max_revisions フィールドで定義されます。このフィールドは、エージェントの作成時に設定するか、後で更新リクエストで変更できます。

  • 新しいエージェントのデフォルト: 100 個のリビジョン。
  • 既存のエージェントのデフォルト: 950 リビジョン。
  • 指定できる範囲: 1 ~ 950。0 以下の値は拒否されます。950 を超える値は、950 が引き上げることができないハード割り当てであるため、拒否されます。

手動削除

エージェント リビジョンは、削除することで手動で削除できます。トラフィックを受信するように構成されていないため、トラフィック管理でアクティブでないリビジョンのみを削除できます。リビジョンがトラフィックを受信するかどうかを構成する手順については、リビジョン間のトラフィック分配を構成するをご覧ください。

コンソール

エージェントのリビジョンを削除するには:

  1. [管理] > [デプロイ] に移動します。

    [デプロイ] に移動

  2. エージェントの名前をクリックします。

  3. [リビジョン] タブに移動します。

  4. リビジョンの詳細ページで、リビジョン名をクリックします。

  5. 削除するリビジョンの行を見つけます。

  6. [削除](ゴミ箱)アイコンをクリックします。

  7. メッセージが表示されたら、リビジョンの削除を確定します。

Agent Platform SDK

次のコードは、指定されたエージェント リビジョンを削除します。

import agentplatform

client = agentplatform.Client(
    project="PROJECT_ID",
    location="LOCATION",
    http_options={"api_version": "v1beta1"},
)

client.runtimes.revisions.delete(
    name="projects/PROJECT_ID/locations/LOCATION/reasoningEngines/RESOURCE_ID/runtimeRevisions/REVISION_ID"
)

コード内の次の変数を置き換えます。

  • PROJECT_ID: 実際の Cloud de Confiance by S3NS プロジェクト ID
  • LOCATION: サポートされているリージョン
  • RESOURCE_ID: デプロイされたエージェントのリソース ID
  • REVISION_ID: 特定のランタイム リビジョンの一意の ID

REST

reasoningEngineRuntimeRevisions.delete メソッドを呼び出します。

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID: 実際の Cloud de Confiance by S3NS プロジェクト ID
  • LOCATION: サポートされているリージョン
  • RESOURCE_ID: デプロイされたエージェントのリソース ID
  • REVISION_ID: 特定のランタイム リビジョンの一意の ID

HTTP メソッドと URL:

DELETE https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/reasoningEngines/RESOURCE_ID/runtimeRevisions/REVISION_ID

リクエストを送信するには、次のいずれかのオプションを展開します。