Model Armor のロギングを構成する

このドキュメントでは、次のオペレーションをロギングするように Model Armor を構成する方法について説明します。

  • テンプレートを作成、更新、削除するオペレーション
  • ユーザー プロンプトまたはモデル レスポンスをサニタイズするオペレーション

Model Armor は、監査ログを使用して管理アクティビティとリソース管理アクティビティを記録します。詳細については、Model Armor の監査ロギングの概要をご覧ください。

始める前に

以下のタスクを完了してから、このページの残りのタスクを完了してください。

必要な権限を取得

Model Armor のロギングを構成するために必要な権限を取得するには、Model Armor テンプレートに対する Model Armor 管理者 roles/modelarmor.admin)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。

必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

API を有効にする

Model Armor を使用するには、Model Armor API を有効にする必要があります。

コンソール

  1. Enable the Model Armor API.

    Enable the API

  2. Model Armor を有効にするプロジェクトを選択します。

gcloud

始める前に、Google Cloud CLI で Model Armor API を使用して、次の処理を行います。

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. 次のコマンドを実行して、Model Armor サービスの API エンドポイントを設定します。

    gcloud config set api_endpoint_overrides/modelarmor "https://modelarmor.LOCATION.rep.googleapis.com/"

    LOCATION は、Model Armor を使用するリージョンに置き換えます。

  3. 次のコマンドを実行して、Model Armor を有効にします。

      gcloud services enable modelarmor.googleapis.com --project=PROJECT_ID
       

    PROJECT_ID は、プロジェクトの ID に置き換えます。

    テンプレートでロギングを構成する

    テンプレートは、さまざまな安全性とセキュリティのカテゴリのフィルタとしきい値を定義します。Model Armor テンプレートを作成または更新するときに、Model Armor が特定のオペレーションをログに記録するかどうかを指定できます。テンプレート メタデータで次のフラグを使用します。

    • log_template_operations: テンプレートの作成、更新、読み取り、削除オペレーションのロギングを有効にするブール値。
    • log_sanitize_operations: サニタイズ オペレーションのロギングを有効にするブール値。ログには、プロンプトと回答、Model Armor の評価結果、追加のメタデータ フィールドが含まれます。

    REST

      curl -X POST \
          -d '{ "filterConfig": {}, "templateMetadata": { "logTemplateOperations": true, "logSanitizeOperations": true } }' \
          -H "Content-Type: application/json" \
          -H "Authorization: Bearer $(gcloud auth print-access-token)" \
          "https://modelarmor.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/templates?template_id=TEMPLATE_ID"
    

    次のように置き換えます。

    • PROJECT_ID: テンプレートが属するプロジェクトの ID。
    • LOCATION: テンプレートのロケーション。
    • TEMPLATE_ID: テンプレートの ID。

    Python

       request = modelarmor_v1.CreateTemplateRequest(
         parent="projects/PROJECT_ID/locations/LOCATION",
         template_id="TEMPLATE_ID",
         template={
            "name": "projects/PROJECT_ID/locations/LOCATION/templates/TEMPLATE_ID",
            "filter_config": {},
            "template_metadata": {
               "log_template_operations": True,
               "log_sanitize_operations": True
            }
         }
       )
       response = client.create_template(request=request)
       

    次のように置き換えます。

    • PROJECT_ID: テンプレートが属するプロジェクトの ID。
    • LOCATION: テンプレートのロケーション。
    • TEMPLATE_ID: テンプレートの ID。

    ログを表示

    Cloud Logging のログ エクスプローラを使用して Model Armor ログにアクセスします。詳細については、ログ エクスプローラを使用してログを表示するをご覧ください。サービス名 modelarmor.googleapis.com でフィルタします。テンプレートで有効にしたオペレーションに関連するエントリを探します。すべてのサービス名とモニタリング対象リソースタイプの一覧については、モニタリング対象リソースとサービスをご覧ください。

    Model Armor ログをフィルタする

    ログラベルを使用して、サニタイズ オペレーションとテンプレート ロギングの Model Armor ログをフィルタします。

    ログ エクスプローラで次のクエリを実行して、サニタイズ オペレーションのログをフィルタします。

    jsonPayload.@type="type.googleapis.com/google.cloud.modelarmor.logging.v1.SanitizeOperationLogEntry"
    

    サニタイズ オペレーション ログをさらに絞り込むには、クエリでプロジェクト ID、クライアント名、または相関 ID を指定します。

    • プロジェクト ID を使用する場合:

      jsonPayload.@type="type.googleapis.com%2Fgoogle.cloud.modelarmor.logging.v1.SanitizeOperationLogEntry";project=PROJECT_ID
      
    • クライアント名を使用する場合:

      jsonPayload.@type="type.googleapis.com/google.cloud.modelarmor.logging.v1.SanitizeOperationLogEntry"
      labels."modelarmor.googleapis.com/client_name"="CLIENT_NAME"
      
    • 相関 ID を使用する場合:

      labels."modelarmor.googleapis.com/client_correlation_id"="CORRELATION_ID"
      

    次のように置き換えます。

    • PROJECT_ID: Google Cloud プロジェクト ID。
    • CLIENT_NAME: クライアントの名前。
    • CORRELATION_ID: 特定のリクエストに対して生成する固有識別子。

    ログと関連イベントを関連付ける

    特定のインタラクションに関連するログとイベントを関連付けるには、クライアント相関 ID が必要です。システム全体で特定のリクエストを追跡するために生成する一意の識別子(UUID など)。curl ヘッダーにクライアント相関 ID を設定するには、-H オプションを使用して、リクエストにカスタム ヘッダーを含めます。サンプル形式は次のとおりです。

    curl -X POST -d  '{"userPromptData": { "text": 'USER_PROMPT' } }' \
        -H "Content-Type: application/json" \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "MA-Client-Correlation-Id: $uuid" \
        "https://modelarmor.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/templates/TEMPLATE_ID:sanitizeUserPrompt"
    
    curl -X POST \
        -d  '{"modelResponseData": { "text": 'MODEL_RESPONSE' }, "userPrompt": 'USER_PROMPT' }' \
        -H "Content-Type: application/json" \
        -H "MA-Client-Correlation-Id: $uuid" \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        "https://modelarmor.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/templates/TEMPLATE_ID:sanitizeModelResponse"
    

    次のように置き換えます。

    • PROJECT_ID: テンプレートが属するプロジェクトの ID。
    • LOCATION: テンプレートのロケーション。
    • TEMPLATE_ID: テンプレートの ID。
    • USER_PROMPT: モデルに提供されたプロンプト。
    • MODEL_RESPONSE: モデルから受信したレスポンス。