Conversational Analytics API エージェントに関する BigQuery の費用を管理する

このページでは、Conversational Analytics API エージェントに関する BigQuery の費用をモニタリングして管理する方法について説明します。Conversational Analytics API エージェントが BigQuery データに対してクエリを実行すると、費用が発生します。次の方法で費用を管理することにより、予期しない支出を防ぐことができます。

始める前に

このページで説明する費用管理を実装する前に、次の要件を満たしている必要があります。

  • 課金が有効になっている Google Cloud プロジェクトが必要です。
  • Google Cloud プロジェクトの割り当てと課金を管理するには、必要な Identity and Access Management(IAM)権限が与えられている必要があります。

プロジェクトとユーザーに対する割り当てを設定する

標準の BigQuery の割り当てを適用することで、 Google Cloud プロジェクトまたは個々のユーザーに対する費用上限を設定できます。これらの上限を設定すると、全体的な費用が抑制され、個々のユーザーによる予算の超過を防ぐことができます。

巨大なテーブルやパーティション分割されていないテーブルを基に構築されたエージェントなど、費用が高額になる可能性のあるエージェントの場合は、まずそのエージェントを独自の専用プロジェクトに分離することをおすすめします。次に、プロジェクト レベルの割り当てを適用してプロジェクトの 1 日あたりの最大費用を制限するか、ユーザーレベルの割り当てを適用してユーザー間の公平な使用を確保できます。プロジェクト レベルとユーザーレベルの両方の割り当てを適用することもできます。

エージェント専用のプロジェクトを設定する

Conversational Analytics API エージェント専用のプロジェクトを設定する手順は次のとおりです。

  1. Google Cloud コンソールで、新しい Google Cloud プロジェクトを作成します。このプロジェクトは特定のエージェント専用になります。
  2. 新しいプロジェクトで課金が有効になっていることを確認します。
  3. 該当するエージェントの課金用プロジェクトとしてこの新しいプロジェクトが構成されていることを確認します。エージェントを構成するときに、この新しいプロジェクトのプロジェクト ID を指定する必要があります。

プロジェクトに対する割り当てを設定する

専用の Google Cloud プロジェクトを設定したら、割り当てを適用してプロジェクト全体の費用を管理できます。プロジェクト レベルの割り当てを設定する手順は次のとおりです。

  1. エージェントの Google Cloud プロジェクトで、[IAM と管理] > [割り当て] に移動します。

    [割り当て] に移動

  2. BigQuery API サービスでフィルタし、1 日あたりのクエリ使用量の割り当てを選択します。

  3. 1 日あたりの上限(10 TiB など)を設定します。この上限により、プロジェクトの支出が指定された 1 日の費用を超えないようにするハードストップが作成されます。

ユーザーに対する割り当てを設定する

個々のユーザーが多額の請求を発生させないようにするには、次の手順に沿ってユーザーごとの割り当てを設定します。

  1. エージェントの Google Cloud プロジェクトで、[IAM と管理] > [割り当て] に移動します。

    [割り当て] に移動

  2. BigQuery API サービスでフィルタし、ユーザーごとの 1 日あたりのクエリ使用量の割り当てを選択します。

  3. 1 日あたりの上限(ユーザーごとに 1 日あたり 1 TiB など)を設定します。この上限により、1 人のユーザーが過剰な量のリソースを消費することが防止されます。

個々のクエリの費用を制限する

個々のユーザークエリによって予期しない高額な請求が発生しないようにするため、エージェントの big_query_max_billed_bytes パラメータを構成してクエリあたりの費用上限を設定できます。

エージェントはクエリを実行する前に、トライアルランを行ってクエリの費用を見積もります。スキャンする推定バイト数が big_query_max_billed_bytes 値を超えた場合、そのクエリはブロックされ、エラー メッセージがユーザーに送信されます。

HTTP を使用または Python SDK を使用してエージェントを作成または構成するときに、published_context フィールド内で big_query_max_billed_bytes パラメータを設定できます。次の textproto 形式の例は、サンフランシスコの街路樹に関する質問に回答するエージェントに対して 100 MB の上限を構成するリクエストの構造を示しています。

parent: "projects/sample-project-name/locations/global"
data_agent_id: "sample-agent-id"
data_agent {
  name: "projects/sample-project-name/locations/global/dataAgents/sample-agent-id"
  data_analytics_agent {
    published_context {
      system_instruction: "This agent provides information about street trees in San Francisco, including their species, location, and planting date."
      options {
        datasource {
          big_query_max_billed_bytes {
            value: 104857600 #100MB
          }
        }
      }
      datasource_references {
        bq {
          table_references {
            project_id: "bigquery-public-data"
            dataset_id: "san_francisco"
            table_id: "street_trees"
          }
        }
      }
    }
  }
}

この例では、big_query_max_billed_bytes パラメータは 104857600 バイト(100 MB)に設定されています。これにより、sample-agent-id エージェントが bigquery-public-data.san_francisco.street_trees BigQuery テーブルに対して実行するクエリの上限が設定されます。

エージェントをインタラクティブに作成して構成する方法を示す例については、Colaboratory ノートブックをご覧ください。API フィールドの詳細については、API リファレンスをご覧ください。

制限事項

Conversational Analytics API エージェントの費用を管理する際は、次の制限事項に注意してください。

  • これらの費用管理ツールは、オンデマンド課金を使用するプロジェクトにのみ適用されます。スロット予約を使用するプロジェクトには適用されません。
  • 個々のエージェントに対して割り当てを設定することはできません。プロジェクトとユーザーに対する割り当てを設定するで説明したように、対象のエージェントを専用のプロジェクトに分離し、そのプロジェクトにプロジェクト レベルまたはユーザーごとの割り当てを適用することをおすすめします。
  • BigQuery のラベルを使用して個々のエージェントの費用を追跡することはできません。