概要
Amazon Bedrock を使うと、チャット ボットやデータ抽出ツールなど、LLM を活用したアプリケーションを監視し、トラブルシューティングし、評価できます。
LLM アプリケーションを構築している場合は、LLM Observability を使って問題の根本原因を調査し、運用パフォーマンスを監視し、LLM アプリケーションの品質、プライバシー、安全性を評価できます。
トレースをどのように調査できるかの例については、LLM Observability のトレーシング画面の動画 を参照してください。
Amazon Bedrock は、Amazon や主要な AI スタートアップの 基盤モデル (FM) を API 経由で利用できるようにするフル マネージド サービスです。さまざまな FM から、ユース ケースに最適なモデルを選べます。
このインテグレーションを有効にすると、Bedrock のすべてのメトリクスを Datadog で確認できます。
セットアップ
LLM Observability: Amazon Bedrock を使って LLM アプリケーションをエンド ツー エンドで可視化する
LLM Observability はさまざまな環境で有効化できます。利用シナリオに応じて、該当するセットアップ手順に従ってください:
Python 向けインストール
Datadog Agent がない場合:
ddtrace パッケージをインストールします:
- 次のコマンドで Agentless mode を有効にしてアプリケーションを起動します:
DD_SITE=<YOUR_DATADOG_SITE> DD_API_KEY=<YOUR_API_KEY> DD_LLMOBS_ENABLED=1 DD_LLMOBS_AGENTLESS_ENABLED=1 DD_LLMOBS_ML_APP=<YOUR_ML_APP_NAME> ddtrace-run python <YOUR_APP>.py
すでに Datadog Agent をインストールしている場合:
- Agent が起動しており、APM と StatsD が有効になっていることを確認します。たとえば、Docker では次のコマンドを使用します:
docker run -d \
--cgroupns host \
--pid host \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
-v /proc/:/host/proc/:ro \
-v /sys/fs/cgroup/:/host/sys/fs/cgroup:ro \
-e DD_API_KEY=<DATADOG_API_KEY> \
-p 127.0.0.1:8126:8126/tcp \
-p 127.0.0.1:8125:8125/udp \
-e DD_DOGSTATSD_NON_LOCAL_TRAFFIC=true \
-e DD_APM_ENABLED=true \
gcr.io/datadoghq/agent:latest
- まだであれば、
ddtrace パッケージをインストールします:
ddtrace-run コマンドでアプリケーションを起動すると、トレーシングが自動的に有効になります:
DD_SITE=<YOUR_DATADOG_SITE> DD_API_KEY=<YOUR_API_KEY> DD_LLMOBS_ENABLED=1 DD_LLMOBS_ML_APP=<YOUR_ML_APP_NAME> ddtrace-run python <YOUR_APP>.py
注: Agent がカスタム ホストまたはポートで動作している場合は、DD_AGENT_HOST と DD_TRACE_AGENT_PORT を適切に設定します。
サーバーレス環境 (AWS Lambda) で LLM Observability を実行する場合:
- AWS Lambda のセットアップの一環として、Datadog-Python と Datadog-Extension の Lambda レイヤーをインストールします。
- 次の環境変数を設定して LLM Observability を有効にします:
DD_SITE=<YOUR_DATADOG_SITE> DD_API_KEY=<YOUR_API_KEY> DD_LLMOBS_ENABLED=1 DD_LLMOBS_ML_APP=<YOUR_ML_APP_NAME>
注: サーバーレス環境では、Lambda 関数の実行完了時に Datadog が span を自動的に flush します。
Amazon Bedrock の自動トレーシング
LLM Observability を設定すると、Amazon Bedrock インテグレーションは自動的に有効になります。これにより、Amazon Bedrock 呼び出しのレイテンシー、エラー、入力/出力メッセージ、トークン使用量が取得されます。
同期処理とストリーミング処理の両方で、次の Amazon Bedrock 操作がトレース対象になります:
InvokeModel()InvokeModelWithResponseStream()
これらのメソッドでは追加設定は不要です。
検証
LLM Observability が span を正しく取得していることは、アプリケーション ログで span の生成成功を確認することで検証できます。ddtrace インテグレーションの状態は、次のコマンドでも確認できます:
セットアップ確認のため、次のメッセージが表示されることを確認します:
デバッグ
セットアップ中に問題が発生した場合は、--debug フラグを付けて debug logging を有効にします:
これにより、Amazon Bedrock のトレースに関する問題を含め、データ送信や instrumentation に関するエラーを確認できます。
Node.js 向けインストール
Datadog Agent がない場合:
dd-trace パッケージをインストールします:
次のコマンドで agentless mode を有効にしてアプリケーションを起動します:
DD_SITE=<YOUR_DATADOG_SITE> DD_API_KEY=<YOUR_API_KEY> DD_LLMOBS_ENABLED=1 DD_LLMOBS_AGENTLESS_ENABLED=1 DD_LLMOBS_ML_APP=<YOUR_ML_APP_NAME> node -r 'dd-trace/init' <your_app>.js
すでに Datadog Agent をインストールしている場合:
Agent が起動しており、APM が有効になっていることを確認します。たとえば、Docker では次のコマンドを使用します:
docker run -d \
--cgroupns host \
--pid host \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
-v /proc/:/host/proc/:ro \
-v /sys/fs/cgroup/:/host/sys/fs/cgroup:ro \
-e DD_API_KEY=<DATADOG_API_KEY> \
-p 127.0.0.1:8126:8126/tcp \
-p 127.0.0.1:8125:8125/udp \
-e DD_DOGSTATSD_NON_LOCAL_TRAFFIC=true \
-e DD_APM_ENABLED=true \
gcr.io/datadoghq/agent:latest
Datadog APM Node.js ライブラリをインストールします。
-r dd-trace/init または NODE_OPTIONS='--require dd-trace/init' を使ってアプリケーションを起動すると、トレーシングが自動的に有効になります:
DD_SITE=<YOUR_DATADOG_SITE> DD_API_KEY=<YOUR_API_KEY> DD_LLMOBS_ENABLED=1 DD_LLMOBS_ML_APP=<YOUR_ML_APP_NAME> node -r 'dd-trace/init' <your_app>.js
注: Agent がカスタム ホストまたはポートで動作している場合は、DD_AGENT_HOST と DD_TRACE_AGENT_PORT を適切に設定します。
サーバーレス環境 (AWS Lambda) で LLM Observability を実行する場合:
次の環境変数を設定して LLM Observability を有効にします:
DD_SITE=<YOUR_DATADOG_SITE> DD_API_KEY=<YOUR_API_KEY> DD_LLMOBS_ENABLED=1 DD_LLMOBS_ML_APP=<YOUR_ML_APP_NAME>
Lambda の実行が終了する前に、llmobs.flush() を呼び出します:
const llmobs = require('dd-trace').llmobs;
// or, if dd-trace was not initialized via NODE_OPTIONS
const llmobs = require('dd-trace').init({
llmobs: {
mlApp: <YOUR_ML_APP>,
}
}).llmobs; // with DD_API_KEY and DD_SITE being set at the environment level
async function handler (event, context) {
...
llmobs.flush()
return ...
}
APM: Python アプリケーションの使用状況メトリクスを取得する
まだ設定していない場合は、先に Amazon Web Services インテグレーション を設定してください。
メトリクス収集
- AWS integration page の
Metric Collection タブで、Bedrock が有効になっていることを確認します。 - Datadog - Amazon Bedrock インテグレーション をインストールします。
収集データ
メトリクス
| |
|---|
aws.bedrock.content_filtered_count (count) | テキスト出力コンテンツがフィルタリングされた総回数 単位は time |
aws.bedrock.input_token_count (gauge) | モデルに対して実行されたプロンプトで使用された入力トークン数の平均 単位は token |
aws.bedrock.input_token_count.minimum (gauge) | モデルに対して実行されたプロンプトで使用された入力トークン数の最小値 単位は token |
aws.bedrock.input_token_count.maximum (gauge) | モデルに対して実行されたプロンプトで使用された入力トークン数の最大値 単位は token |
aws.bedrock.input_token_count.sum (count) | モデルに対して実行されたプロンプトで使用された入力トークン総数 単位は token |
aws.bedrock.invocation_client_errors (count) | 呼び出し時に発生したクライアント エラー数 単位は error |
aws.bedrock.invocation_latency (gauge) | 呼び出しレイテンシーの平均 (ミリ秒) 単位は millisecond |
aws.bedrock.invocation_latency.minimum (gauge) | 1 分間における呼び出しレイテンシーの最小値 単位は millisecond |
aws.bedrock.invocation_latency.maximum (gauge) | 1 分間における呼び出しレイテンシーの最大値 単位は millisecond |
aws.bedrock.invocation_latency.p99 (gauge) | 1 分間における呼び出しレイテンシーの 99 パーセンタイル値 単位は millisecond |
aws.bedrock.invocation_latency.p95 (gauge) | 1 分間における呼び出しレイテンシーの 95 パーセンタイル値 単位は millisecond |
aws.bedrock.invocation_latency.p90 (gauge) | 1 分間における呼び出しレイテンシーの 90 パーセンタイル値 単位は millisecond |
aws.bedrock.invocation_server_errors (count) | 呼び出し時に発生したサーバー エラー数 単位は error |
aws.bedrock.invocation_throttles (count) | 呼び出しのスロットリング発生回数 単位は throttle |
aws.bedrock.invocations (count) | モデル エンドポイントに送信された呼び出し回数 単位は invocation |
aws.bedrock.output_image_count (gauge) | 1 分間において、モデル呼び出しで返された出力画像数の平均 単位は item |
aws.bedrock.output_token_count (gauge) | 1 分間において、モデル呼び出しで返された出力トークン数の平均 単位は token |
aws.bedrock.output_token_count.minimum (gauge) | 1 分間において、モデル呼び出しで返された出力トークン数の最小値 単位は token |
aws.bedrock.output_token_count.maximum (gauge) | 1 分間において、モデル呼び出しで返された出力トークン数の最大値 単位は token |
aws.bedrock.output_token_count.sum (count) | すべてのモデル呼び出しで返された出力トークン総数 単位は token |
イベント
Amazon Bedrock インテグレーションにはイベントは含まれません。
サービス チェック
Amazon Bedrock インテグレーションにはサービス チェックは含まれません。
トラブルシューティング
サポートが必要な場合は、Datadog サポート にお問い合わせください。
参考資料
役立つドキュメント、リンク、記事:
Further Reading