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.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    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 の評価結果、追加のメタデータ フィールドが含まれます。

    コンソール

    1. Google Cloud コンソールで、[Model Armor] ページに移動します。

      [Model Armor] に移動

    2. Model Armor を有効にしたプロジェクトが表示されていることを確認します。

    3. [Model Armor ] ページで、[テンプレートを作成] をクリックします。テンプレートの作成の詳細については、Model Armor テンプレートを作成するをご覧ください。

    4. [ロギングを構成する] セクションで、ロギングを構成するオペレーションを選択します。

    5. [作成] をクリックします。

    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

    このコードを実行するには、まず Python 開発環境を設定し、Model Armor Python SDK をインストールします。

       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: モデルから受信したレスポンス。