Amazon Bedrock プロンプトキャッシュの組み込みで得た学び
こんにちは、@TakaakiKakei です。
「Amazon Bedrock プロンプトキャッシュ」の組み込みで得た学びを共有します。
Amazon Bedrock プロンプトキャッシュ
「Amazon Bedrock プロンプトキャッシュ」(以降、プロンプトキャッシュ)は、Amazon Bedrockの機能で、プロンプトのキャッシュを利用してモデルの応答時間を短縮し、コストを削減することができます。現在、ClaudeやAmazon Novaなどの一部のモデルで利用可能です。
プロンプトキャッシュを試す方法
プロンプトキャッシュを手軽に試すには、プレイグラウンドが便利です。
- AWS Management Consoleにログインし、Amazon Bedrockのサービス画面を開きます。
- 左側のメニューから「プレイグラウンド」の「Chat / Text」を選択します。
- モデルの選択画面で、プロンプトキャッシュに対応しているモデル(例: 事前にモデル有効化した、Claude Sonnet 4)を選択します。
- プレイグラウンドの設定画面下部に「Prompt caching」の項目が表示されます。
- 「Prompt caching」を有効化した状態で、チャットを開始します。
プロンプトキャッシュに非対応のモデルを選択した場合は、プレイグラウンドの設定画面に「Prompt caching」の項目が表示されません。
プロンプトキャッシュの利用状況確認
プロンプトキャッシュの利用状況を手軽に確認するには、CloudWatchのメトリクスが便利です。
- AWS Management Consoleにログインし、CloudWatchのサービス画面を開きます。
- 左側のメニューから「すべてのメトリクス」を選択します。
- 「Bedrock」セクションを展開し、「モデル ID 別」の項目を選択します。
- Bedrockのモデル別のメトリクスが表示されます。
- モデルごとに「CacheReadInputTokenCount」「CacheWriteInputTokenCount」でプロンプトキャッシュの読み取りと書き込みのトークン数を確認できます。
新しいモデルの対応状況
プロンプトキャッシュの対応モデルは、以下の公式ドキュメントで確認できます。
しかし、新しいモデルに関しては、公式ドキュメントの更新が遅れることがあります。
その場合は、前述のようにプレイグラウンドで試して、CloudWatchのメトリクスを確認すると良いでしょう。
プロンプトキャッシュのコスト削減効果
プロンプトキャッシュは、長いコンテキストを頻繁に再利用するワークロードに適しています。
クラスメソッドの自社プロダクトである「AI-Starter」において、プロンプトキャッシュを利用した場合のコスト削減効果を確認しました。社内環境の利用者傾向として、一つのセッションで会話を継続するユーザーが多かったためか、プロンプトキャッシュの効果が大きく、月で20万円以上のコスト削減を実現できました。想像以上に削減効果が大きかったため、プロンプトキャッシュのユースケースに合致するような場合は、積極的に利用することをおすすめします。
開発関連
基本的な仕組みの理解
開発の際は、プロンプトキャッシュの仕組みをよく理解しておくことが重要です。理解のために以下の公式ブログが大変参考になりました。
キャッシュポイントの設定
プロンプトキャッシュを利用する際は、会話中にcachePoint: { type: 'default' }
のようにキャッシュポイントを設定する必要があります。AI-Starterの場合は以下に、cachePoint
を設定しています。
- システムプロンプト
- ファイル入力を除く、直前と、その前のユーザーメッセージ
シンプルさのために、対応モデルに一括適用しましたが、副作用は特に確認されなかったので、このまま運用しています。
クロスリージョン推論との併用
クロスリージョン推論に対応しているかも気になったところですが、対応済みでした。直近案内した公式ブログ内の記載です。
Amazon Bedrock cross-Region inference
Prompt caching can be used in conjunction with cross-region inference (CRIS). Cross-region inference automatically selects the optimal AWS Region within your geography to serve your inference request, thereby maximizing available resources and model availability. At times of high demand, these optimizations may lead to increased cache writes.
SDK のバージョン要件
JSのライブラリは"@aws-sdk/client-bedrock-runtime": "^3.758.0",
を当時利用していましたが、アップデートしないとエラーが出て利用ができませんでした。"@aws-sdk/client-bedrock-runtime": "^3.785.0"
にアップデート後は、問題なく利用できました。
利用状況の確認方法
開発中にログでプロンプトキャッシュの利用状況を確認するには、responseのmetricsやusageを確認すれば良いです。
出力例
// logger.info(
// {
// metadata: {
// metrics: response.metrics,
// usage: response.usage,
// },
// },
// 'Bedrock Statistics',
// );
Bedrock Statistics: {
metrics: { latencyMs: 1894 },
usage: {
cacheReadInputTokenCount: 2654,
cacheReadInputTokens: 2654,
cacheWriteInputTokenCount: 186,
cacheWriteInputTokens: 186,
inputTokens: 4,
outputTokens: 92,
totalTokens: 2936
}
}
おわりに
最後まで読んでいただきありがとうございます。
プロンプトキャッシュは、Amazon Bedrockの機能の中でも特にコスト削減に寄与する重要な機能です。
ぜひ、プロンプトキャッシュを活用して、コスト削減や応答時間の短縮を実現してみてください。
それでは、また!