このバージョンはまだ開発中であり、まだ安定しているとは見なされていません。最新の安定バージョンについては、Spring AI 1.1.7 を使用してください! |
可観測性
Spring AI は、Spring エコシステムの可観測性機能に基づいて構築され、AI 関連の運用に関するインサイトを提供します。コアコンポーネントである ChatClient (Advisor を含む)、ChatModel、EmbeddingModel、ImageModel、VectorStore のメトリクスとトレース機能を提供します。
アプリケーションでメトリクスとトレースのサポートを有効にするには、Spring Boot メトリクスおよび Spring Boot トレースのドキュメントを参照してください。
| カーディナリティの低いキーはメトリクスとトレースの両方に追加され、カーディナリティの高いキーはトレースのみに追加されます。 |
チャットクライアント
spring.ai.chat.client 観測は、ChatClient call() または stream() 操作が呼び出されたときに記録されます。呼び出しの実行に費やされた時間を測定し、関連するトレース情報を伝播します。
| 名前 | 説明 |
|---|---|
| 常に |
| 常に |
| チャットモデルのレスポンスはストリームですか - |
| Spring AI のフレームワーク API の種類: |
名前 | 説明 |
| 構成されたチャットクライアントアドバイザーのリスト。 |
| チャットメモリを使用する場合の会話の識別子。 |
| チャットクライアントに渡されるツールの名前。 |
プロンプトと完了データ
ChatClient のプロンプトと補完データは通常サイズが大きく、機密情報が含まれている可能性があります。そのため、デフォルトではエクスポートされません。
Spring AI は、デバッグとトラブルシューティングに役立つプロンプトと完了データのログ記録をサポートしています。
| プロパティ | 説明 | デフォルト |
|---|---|---|
| チャットクライアントのプロンプトの内容をログに記録するかどうか。 |
|
| チャットクライアントの完了内容をログに記録するかどうか。 |
|
| チャットクライアントのプロンプトと完了データのログ記録を有効にすると、機密情報や個人情報が漏洩するリスクがあります。ご注意ください。 |
チャットクライアントアドバイザー
spring.ai.advisor 観測値は、アドバイザーが実行された際に記録されます。これらの観測値は、アドバイザーの実行時間(内部アドバイザーの実行時間を含む)を測定し、関連する追跡情報を伝達します。
| 名前 | 説明 |
|---|---|
| 常に |
| 常に |
| アドバイザーの名前。 |
| Spring AI のフレームワーク API の種類: |
| 名前 | 説明 |
|---|---|
| アドバイザーチェーンのアドバイザーオーダー。 |
チャットモデル
OpenAI と Anthropic のチャットモデルはどちらも HTTP レイヤーの観測値(チャットモデルレイヤー+ HTTP レイヤー)を出力しますが、ストリーミング呼び出しに特有の制限が 1 つあります。HTTP レイヤーの観測値には HTTP メソッド、URI、ステータスコードが含まれ、 For synchronous calls, the See the OpenAI chat docs and Anthropic chat docs for details. |
gen_ai.client.operation 観測は、ChatModel call または stream メソッドを呼び出すときに記録されます。メソッドの完了に費やされた時間を測定し、関連するトレース情報を伝播します。
gen_ai.client.token.usage メトリクスは、単一のモデル呼び出しで使用される入力トークンと出力トークンの数を測定します。 |
| 名前 | 説明 |
|---|---|
| 実行される操作の名前。 |
| クライアントインストルメンテーションによって識別されるモデルプロバイダー。 |
| リクエストが行われているモデルの名前。 |
| レスポンスを生成したモデルの名前。 |
| 名前 | 説明 |
|---|---|
| モデルリクエストの頻度ペナルティ設定。 |
| モデルがリクエストに対して生成するトークンの最大数。 |
| モデルリクエストのプレゼンスペナルティ設定。 |
| モデルがそれ以上のトークンの生成を停止するために使用するシーケンスのリスト。 |
| リクエストがストリーミングモードで行われたかどうか。 |
| モデルリクエストの温度設定。 |
| モデルリクエストの top_k サンプリング設定。 |
| モデルリクエストの top_p サンプリング設定。 |
| 受信した各世代に対応する、モデルがトークンの生成を停止した理由。 |
| AI レスポンスの一意の識別子。 |
| プロバイダが管理するキャッシュに書き込まれた入力トークンの数。 |
| プロバイダが管理するキャッシュから提供される入力トークンの数。 |
| モデル入力 (プロンプト) で使用されるトークンの数。 |
| モデル出力(完了)で使用されるトークンの数。 |
| モデル交換で使用されるトークンの合計数。 |
| リクエストでモデルに提供されるツール定義のリスト。 |
ユーザートークンを測定する場合、前の表には観測トレースに存在する値がリストされています。ChatModel によって提供されるメトリクス名 gen_ai.client.token.usage を使用します。 |
チャットプロンプトと完了データ
チャットプロンプトと完了データは通常サイズが大きく、機密情報が含まれている可能性があります。そのため、デフォルトではエクスポートされません。
Spring AI は、チャットプロンプトと完了データのログ記録をサポートしており、トラブルシューティングに役立ちます。トレースが利用可能な場合、ログにはトレース情報が含まれるため、相関関係の精度が向上します。
| プロパティ | 説明 | デフォルト |
|---|---|---|
| プロンプトの内容をログに記録します。 |
|
| 完了内容をログに記録します。 |
|
| 観測にエラーログを含めます。 |
|
| チャットプロンプトと完了データのログ記録を有効にすると、機密情報や個人情報が漏洩するリスクがあります。ご注意ください。 |
ツール呼び出し
spring.ai.tool の観測値は、チャットモデルのインタラクションにおいてツール呼び出しを実行する際に記録されます。これらの観測値は、ツール呼び出しの完了に要した時間を測定し、関連するトレース情報を伝達します。
| 名前 | 説明 |
|---|---|
| 実行中の操作の名前。常に |
| 操作を担当するプロバイダー。常に |
| Spring AI が実行する操作の種類。常に |
| ツールの名前。 |
| ツールの種類。デフォルトでは |
名前 | 説明 |
| ツールの説明。 |
| ツールを呼び出すために使用されるパラメーターのスキーマ。 |
| チャットモデルによって識別される、ツール呼び出しの ID。 |
| ツール呼び出しへの入力引数。(有効になっている場合のみ) |
| ツール呼び出しの実行結果。(有効になっている場合のみ) |
EmbeddingModel
オブザーバビリティ機能は現在、以下の AI モデルプロバイダーによる EmbeddingModel 実装でのみサポートされています: Mistral AI、Ollama、OpenAI。今後のリリースでは、その他の AI モデルプロバイダーもサポートされる予定です。 |
gen_ai.client.operation の観測は、埋め込みモデルメソッド呼び出しに記録されます。メソッドの完了に費やされた時間を測定し、関連するトレース情報を伝播します。
gen_ai.client.token.usage メトリクスは、単一のモデル呼び出しで使用される入力トークンと出力トークンの数を測定します。 |
| 名前 | 説明 |
|---|---|
| 実行される操作の名前。 |
| クライアントインストルメンテーションによって識別されるモデルプロバイダー。 |
| リクエストが行われているモデルの名前。 |
| レスポンスを生成したモデルの名前。 |
| 名前 | 説明 |
|---|---|
| 結果として得られる出力埋め込みの次元数。 |
| モデル入力で使用されるトークンの数。 |
| モデル交換で使用されるトークンの合計数。 |
ユーザートークンを測定する場合、前の表には観測トレースに存在する値がリストされています。EmbeddingModel によって提供されるメトリクス名 gen_ai.client.token.usage を使用します。 |
イメージモデル
可観測性機能は現在、次の AI モデルプロバイダーの ImageModel 実装でのみサポートされています: OpenAI。追加の AI モデルプロバイダーは、将来のリリースでサポートされる予定です。 |
gen_ai.client.operation の観測は、イメージモデルメソッドの呼び出し時に記録されます。メソッドの完了に費やされた時間を測定し、関連するトレース情報を伝播します。
| 名前 | 説明 |
|---|---|
| 実行される操作の名前。 |
| クライアントインストルメンテーションによって識別されるモデルプロバイダー。 |
| リクエストが行われているモデルの名前。 |
| 名前 | 説明 |
|---|---|
| 生成されたイメージが返される形式。 |
| 生成するイメージのサイズ(例: |
| 生成するイメージのスタイル。 |
イメージプロンプトデータ
イメージプロンプトデータは通常サイズが大きく、機密情報が含まれている可能性があります。そのため、デフォルトではエクスポートされません。
Spring AI は、トラブルシューティングに役立つイメージプロンプトデータのログ記録をサポートしています。トレースが利用可能な場合、ログにはトレース情報が含まれるため、相関関係の精度が向上します。
| プロパティ | 説明 | デフォルト |
|---|---|---|
| イメージプロンプトの内容をログに記録します。 |
|
| イメージプロンプトデータのログ記録を有効にすると、機密情報や個人情報が漏洩するリスクがあります。ご注意ください。 |
ベクトルストア
Spring AI のすべてのベクトルストア実装は、Micrometer を通じてメトリクスと分散トレースデータを提供するようにインストルメント化されています。
db.vector.client.operation の観測は、ベクトルストアとやり取りするときに記録されます。query、add、remove 操作に費やされた時間を測定し、関連するトレース情報を伝播します。
| 名前 | 説明 |
|---|---|
| 実行される操作またはコマンドの名前。 |
| クライアントインストルメンテーションによって識別されるデータベース管理システム (DBMS) 製品。 |
| Spring AI のフレームワーク API の種類: |
| 名前 | 説明 |
|---|---|
| データベース内のコレクション (テーブル、コンテナー) の名前。 |
| サーバーアドレスとポート内で完全修飾されたデータベースの名前。 |
| 類似性検索で使用されるメトリクス。 |
| ベクトルの次元。 |
| ベクトルの名前フィールド (フィールド名など)。 |
| 実行中の検索クエリの内容。 |
| 検索クエリで使用されるメタデータフィルター。 |
| 類似検索クエリから返されたドキュメント。オプション。 |
| すべての検索スコアを受け入れる類似度しきい値。しきい値が 0.0 の場合、すべての類似度が受け入れられるか、類似度しきい値フィルタリングが無効になります。しきい値が 1.0 の場合、完全一致が必要です。 |
| クエリによって返される上位 k 個の最も類似したベクトル。 |
レスポンスデータ
ベクトル検索レスポンスデータは通常大きく、機密情報が含まれている可能性があります。そのため、デフォルトではエクスポートされません。
Spring AI は、トラブルシューティングに役立つベクトル検索レスポンスデータのログ記録をサポートしています。トレースが利用可能な場合、ログにはトレース情報が含まれるため、相関関係の精度が向上します。
| プロパティ | 説明 | デフォルト |
|---|---|---|
| ベクトルストアクエリレスポンスの内容をログに記録します。 |
|
| ベクトル検索レスポンスデータのログ記録を有効にすると、機密情報や個人情報が漏洩するリスクがあります。ご注意ください。 |
その他のメトリクスリファレンス
このセクションでは、Prometheus に表示される、Spring AI コンポーネントによって生成されたメトリクスについて説明します。
メトリクスの命名規則
Spring AI は Micrometer を使用します。基本メトリクス名はドット(例: gen_ai.client.operation)を使用し、Prometheus はアンダースコアと標準のサフィックスを使用してエクスポートします。
タイマー→
<base>_seconds_count、<base>_seconds_sum、<base>_seconds_max、および(サポートされている場合)<base>_active_countカウンター→
<base>_total(単調)
以下は、基本メトリクス名が Prometheus 時系列にどのように拡張されるかを示しています。
|
参照
OpenTelemetry — 生成 AI のためのセマンティック規約 (概要) (英語)
Micrometer — メーターの命名 (英語)
チャットクライアントのメトリクス
| メトリクス名 | タイプ | 単位 | 説明 |
|---|---|---|---|
| タイマー | 秒 | ChatClient 運用に費やされた合計時間 (呼び出し / ストリーム) |
| カウンター | カウント | 完了した ChatClient 操作の数 |
| ゲージ | 秒 | ChatClient 運用の最大観測期間 |
| ゲージ | カウント | 現在飛行中の ChatClient 運用の数 |
アクティブ vs 完了 : active_count は進行中の呼び出しを表示します。_seconds シリーズは完了した呼び出しのみを反映します。
チャットモデルメトリクス (モデルプロバイダーの実行)
| メトリクス名 | タイプ | 単位 | 説明 |
|---|---|---|---|
| タイマー | 秒 | チャットモデル操作の実行時間合計 |
| カウンター | カウント | 完了したチャットモデル操作の数 |
| ゲージ | 秒 | チャットモデル操作の最大観測期間 |
| ゲージ | カウント | 現在実行中のチャットモデル操作の数 |
ベクトルストアメトリクス
| メトリクス名 | タイプ | 単位 | 説明 |
|---|---|---|---|
| タイマー | 秒 | ベクトルストア操作に費やされた合計時間 (追加 / 削除 / クエリ) |
| カウンター | カウント | 完了したベクトルストア操作の数 |
| ゲージ | 秒 | ベクトルストア操作の最大観測期間 |
| ゲージ | カウント | 現在実行中のベクトルストア操作の数 |