[アップデート] Amazon Bedrock Agents の利用状況を CloudWatch で可視化できるようになりました。
こんにちは!クラウド事業本部コンサルティング部のたかくに(@takakuni_)です。
Amazon Bedrock Agents の利用状況を CloudWatch で可視化できるようになりました。
Amazon Bedrock Agents Metrics
今回のアップデートはタイトルの通り、Amazon Bedrock Agents のメトリクスを Amazon CloudWatch で可視化できるようになりました。というものです。
今まで Amazon Bedrock Agents の監視といえば、各モデルごとのトークン数や、 Amazon Bedrock から出力される、トレース情報で賄うようなアプローチが考えられます。
ただし、以下のハードルが考えられます。
- 各モデルごとのトークン数
- ディメンションはあくまでモデル単位のためエージェント単位でのトークン数は取得できない
- トレース情報
- トレース情報を自身でフィルターし、カスタムメトリクスの発行(作り込み)が必要
このあたりの課題を解決できそうなアップデートですね。
メトリクスの種類
今回のアップデートで、以下のメトリクスが発行されるようになりました。
Metric name | 単位 | 説明 |
---|---|---|
InvocationCount | SampleCount | APIオペレーションへのリクエスト数 |
TotalTime | Milliseconds | エージェントがリクエストを処理するのにかかった時間 |
TTFT | Milliseconds | Time-to-first-token(最初のトークンまでの時間)。Streaming構成が有効な場合に発生します |
InvocationThrottles | SampleCount | システムによってスロットルされた呼び出しの数。スロットルされたリクエストや他のエラーはカウントされません |
InvocationServerErrors | SampleCount | AWSサーバー側エラーとなった呼び出しの数 |
InvocationClientErrors | SampleCount | クライアント側エラーとなった呼び出しの数 |
ModelLatency | Milliseconds | モデルのレイテンシ(応答遅延時間) |
ModelInvocationCount | SampleCount | エージェントがモデルに行ったリクエスト数 |
ModelInvocationThrottles | SampleCount | Amazon Bedrockコアによってスロットルされたモデル呼び出しの数。スロットルや他のエラーはカウントされません |
ModelInvocationClientErrors | SampleCount | クライアント側エラーとなったモデル呼び出しの数 |
ModelInvocationServerErrors | SampleCount | AWSサーバー側エラーとなったモデル呼び出しの数 |
InputTokenCount | SampleCount | モデルへの入力トークン数 |
OutputTokenCount | SampleCount | モデルからの出力トークン数 |
TTFT
調べてる中で TTFT ってなんだろう?と思い、調べてみました。
TTFT とは、Time-to-first-token の略称で、エージェントに問い合わせてから、最初の応答までの時間のようです。ユーザーからみての待ち時間になるため、評価観点で非常に有用なメトリクスですね。
やってみる
それでは Amazon Bedrock Agents のメトリクス発行を試してみます。リージョンはバージニア北部を利用します。
IAM ロールの作成
Amazon Bedrock Agents 用に IAM ロールを先に作成します。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AmazonBedrockAgentBedrockFoundationModelPolicyProd",
"Effect": "Allow",
"Principal": {
"Service": "bedrock.amazonaws.com"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"aws:SourceAccount": "123456789012"
},
"ArnLike": {
"aws:SourceArn": "arn:aws:bedrock:*:123456789012:agent/*"
}
}
}
]
}
検証のため IAM ロールには AmazonBedrockFullAccess
を付与しました。
CloudWatch Metrics の発行
メトリクスを発行するには Amazon Bedrock Agents 側に CloudWatch の権限付与が必要になります。
別途 IAM ポリシーを作成し、付与しておきましょう。
{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Resource": "*",
"Action": "cloudwatch:PutMetricData",
"Condition": {
"StringEquals": {
"cloudwatch:namespace": "AWS/Bedrock/Agents"
}
}
}
}
エージェントの作成
エージェントの作成に移ります。先ほど作成したエージェントリソースロールに IAM ロールを指定しましょう。
エージェント向けの指示は以下を指定しました。
あなたは優秀なエージェントです。ユーザーからの指示に親切に誠実に回答してください。
いくつか質問をしてみました。
CloudWatch Metrics が Bedrock/Agents
で発行されています。
自動ダッシュボードも表示できるようです。
ディメンションは By Operation, AgentAliasArn, ModelId
, By Operation, ModelId
, By Operation
の3つの軸で発行されていました。
先ほど取り上げた TTFT も表示されてますね。
AI サービスのオプトアウトポリシーについて
ドキュメントに記載されている通りデフォルトの場合、CloudWatch が収集したデータを CloudWatch のサービス改善のために使用される可能性があるようです。必要に応じて AI サービスのオプトアウトを適用しましょう。
If you don’t want CloudWatch to use collected data for CloudWatch service improvement, you can create an opt out policy. For more information, AI services opt-out policies.
まとめ
以上、「Amazon Bedrock Agents の利用状況を CloudWatch で可視化できるようになりました。」でした。
組み込みでメトリクスを作り込まず、監視できるようになったのは、非常にありがたいですね。
クラウド事業本部コンサルティング部のたかくに(@takakuni_)でした!