🍞

Claudeの実行ログをBigQueryへ取得する ( Google Cloud / Vertex AI )

に公開

Google Cloud上のClaudeの呼出履歴をBigQueryに取得することが、簡単にできるということを最近知ったのでそのメモです。

やり方ですが、こちらのドキュメントに従って設定するだけです。
https://cloud.google.com/vertex-ai/generative-ai/docs/multimodal/request-response-logging?hl=ja#foundation-models

これで終わりだと記事として短すぎるので、蛇足になってしまいますが自分用メモを兼ねてもう少し詳しく書いていこうと思います。

設定方法の説明

Claude Sonnet 4のログを取るケースを例に設定の仕方を説明します。

BigQueryのデータセットを作成する

  • ブラウザでGoogle CloudのBigQueryのコンソールを開き「データセットを作成」します。

  • データセット名とロケーションを設定します。他はデフォルトでOKです

  • 作成されたら、後で使うのでデータセット IDを覚えておきましょう。

ドキュメント上で、必要なパラメータを設定してコマンドを作ろう

あとはGoogle CloudのAPIを叩いて生成AIモデルのログ取得を有効化すればOKですが、パラメータがそれなりに複雑です。
Google Cloudのドキュメントには、パラメータを設定すればコマンドを生成してくれる機能が付いているので、最初に貼ったURLを開き、必要な項目を入力して、実行コマンドを生成しましょう。

https://cloud.google.com/vertex-ai/generative-ai/docs/multimodal/request-response-logging?hl=ja#rest-api

URLを開いたらRest APIを選択して、画面上で、赤文字でペンマーク🖍がある部分に必要なパラメータを埋めていきます。

具体的には以下のように埋めます。

  • ENDPOINT_PREFIX : us-east5-
    • Claudeのモデルがあるロケーション+ハイフンがプレフィックスになります。通常はClaudeのモデルが配置されるus-east5を指定すればOKです。最後に-を付けるのを忘れないようにしましょう。
  • PROJECT_ID : (自分のプロジェクトのプロジェクトID)
  • LOCATION : us-east5
  • PUBLISHER : anthropic
  • MODEL : claude-sonnet-4
    • モデル名です。バージョンを表す@の後ろは不要です。
    • 別なモデルのログを取りたいときは変更してください。たとえば Claude 3.5 Haikuはclaude-3-5-haiku
  • SAMPLING_RATE : 1
    • ログに記録するリクエストの割合の定義です。
    • 1にすると全てのリクエストがログに記録されます。
    • 全てだと多すぎる場合は、より少ない値を指定しましょう(0.1だと10%)
  • BQ_URI : bq://(BigQueryのデータセットID)
    • 先ほど作ったBigQueryのBQ URIを指定します。
    • 先ほどメモった「データセットID」の手前にbq://をつけるとBQ URIになります。

作ったコマンドを実行して、ログ取得を有効化を有効化しよう

ドキュメント上に各種パラメータを入れたら、下の方にスクロールします。

  1. 「リクエストの本文(JSON)」をコピーしてrequest.jsonという名前で保存します。[1]
request.json
{
  "publisherModelConfig": {
     "loggingConfig": {
       "enabled": true,
       "samplingRate": 1,
       "bigqueryDestination": {
         "outputUri": "bq://(BigQueryのデータセットID)"
       },
       "enableOtelLogging": true
     }
   }
 }
  1. さらに下にあるcurlのコマンドをコピーして、ターミナルから実行します。
(実行コマンド)
$ curl -X POST \
     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "Content-Type: application/json; charset=utf-8" \
     -d @request.json \
     "https://us-east5-aiplatform.googleapis.com/v1beta1/projects/(プロジェクトID)/locations/us-east5/publishers/anthropic/models/claude-sonnet-4:setPublisherModelConfig"
(実行結果)
{
  "name": "projects/000000000000/locations/us-east5/operations/123456789012345678",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1beta1.SetPublisherModelConfigOperationMetadata",
    "genericMetadata": {
      "createTime": "2025-06-19T06:32:43.123456Z",
      "updateTime": "2025-06-19T06:32:43.123456Z"
    }
  }
}

以上でログがBigQueryに記録されるようになりました。
モデルごとに設定が必要なので、他のモデルのログも欲しいときは同様に設定しましょう。

実際にClaudeを使って試してみよう

では実際にClaudeを実行してみましょう。せっかくなので今流行り?のClaude Codeを使ってみます。
以下のように環境変数を指定して実行することで、VertexAIのモデルを指定してClaude Codeを起動できます。

(Claude Codeの起動)
CLAUDE_CODE_USE_VERTEX=1 ANTHROPIC_VERTEX_PROJECT_ID=(プロジェクトID) ANTHROPIC_MODEL=claude-sonnet-4@20250514 ANTHROPIC_SMALL_FAST_MODEL=claude-3-5-haiku@20241022 claude

起動したら適当にAIに呼びかけてみます。

request.jsonの中身を解説して

その後、ブラウザからBigQueryのコンソールを確認します。

無事にログが取れていました!プロンプトだけでなく使用したトークン数なども分かるので、生成AIを活用するときの分析にいろいろ使えそうです!

脚注
  1. 執筆時点(2025/06)で余分なカンマ(,)が入っておりJSONのフォーマットとして正しくないので、不要なカンマは削除しましょう。 ↩︎

NCDCエンジニアブログ

Discussion