プロンプトキャッシュとバッチ処理で、AIのランニングコストを下げる考え方
公開日:執筆:AI顧問マッチ編集部
生成AIのAPIを本番で使い続けると、毎月のランニングコストが気になり始めます。モデルの切り替えやプロンプトの短縮と並んで検討したいのが、主要なAPI提供元が用意している「プロンプトキャッシュ」と「バッチ処理(Batch API)」です。どちらも、処理の内容は変えずに、APIの呼び出し方を工夫することで費用を抑える仕組みです。
この記事では、両者の仕組みと向き不向き、導入時の注意点を整理します。対応状況・単価・割引率・条件は提供元やモデルによって異なり、改定もされるため、実際に導入する際は各社の公式ドキュメントと料金ページを必ずご確認ください。
プロンプトキャッシュとは
多くのアプリでは、リクエストのたびに同じ内容を繰り返し送っています。長いシステムプロンプト、ツール(関数)の定義、マニュアルや規程集などの参照資料、少数の回答例などです。プロンプトキャッシュは、こうした「毎回同じ先頭部分」の処理結果を提供元側で一時的に保存し、次のリクエストで再利用する仕組みです。
キャッシュから読み込まれた部分の入力には、通常の入力より割安な単価が適用されるのが一般的です。処理も一部省略されるため、応答が返り始めるまでの時間が短くなることもあります。
効果を出すためのポイント
- キャッシュは「先頭から一致している部分」にしか効かない。変わらない内容(指示・ツール定義・資料)を前に、毎回変わる内容(ユーザーの質問・日時・検索結果)を後ろに置く
- 先頭部分に日時やリクエストIDなど毎回変わる値が混ざっていると、それ以降がすべて一致しなくなり、キャッシュが効かない
- キャッシュには有効期限があり、一般に比較的短い時間で失効する。同じ先頭部分を使うリクエストが一定の間隔で続く処理ほど効果が出やすい
- 一定以上の長さがないとキャッシュの対象にならないことが多い
注意したい「逆効果」のケース
提供元によっては、キャッシュが自動で適用されるものと、どこまでをキャッシュするかを明示的に指定するものがあります。また、キャッシュへの書き込みに通常の入力より高い単価がかかる方式もあります。この場合、書き込んだキャッシュがほとんど再利用されないと、かえって費用が増えてしまいます。
導入後は、APIのレスポンスに含まれる使用量の情報で「キャッシュから読み込まれたトークン数」を確認しましょう。多くの提供元で、この数値を取得できます。読み込みがほぼゼロのままであれば、先頭部分が毎回変わっていないか、リクエストの間隔が空きすぎていないかを見直します。
バッチ処理(Batch API)とは
バッチ処理は、多数のリクエストをまとめて提供元に預け、結果を後から受け取る非同期の仕組みです。すぐに結果が返らない代わりに、通常のリアルタイムの呼び出しより割安な料金が設定されているのが一般的です。結果が返るまでの時間は提供元の条件によりますが、最大で数時間〜1日程度を見込む設計が必要です。
向いている処理・向いていない処理
- 向いている:蓄積した問い合わせや文書の一括要約・分類、データの抽出や整形、夜間や週次の定期処理、プロンプト変更時の評価(テスト)の実行
- 向いていない:チャットボットなど利用者が画面の前で結果を待っている処理、結果をすぐ次の処理に使う必要があるもの
社内の業務では、「実は即時に結果が必要ない処理」がリアルタイムのAPIで実行されていることが少なくありません。処理の一覧を作り、結果が必要になるタイミングで分類するだけでも、バッチ処理に移せる候補が見つかることがあります。
2つを組み合わせる考え方
大量の文書に同じ指示を適用する処理では、共通の指示部分をキャッシュの対象にしつつ、処理自体をバッチで実行する、という組み合わせが考えられます。ただし、バッチ処理の中でキャッシュがどの程度効くかは、提供元の仕様や処理の順序によって変わります。組み合わせる場合も、使用量のデータで実際の効果を確認することが前提です。
費用以外に確認しておきたいこと
キャッシュやバッチ処理を導入する際は、費用の面だけでなく、データの取り扱いも確認しておきましょう。キャッシュされた内容やバッチで預けたデータが提供元でどのように保存・管理されるかは、提供元の規約やデータ保持の方針によります。個人情報や機密情報を扱う処理では、社内の情報管理のルールに照らして問題がないかを事前に確認してください。
また、バッチ処理では一部のリクエストだけが失敗したり、期限内に処理されなかったりすることがあります。失敗したリクエストを再実行する仕組みや、結果がそろわなかった場合の扱いも、あらかじめ決めておくと運用が安定します。
導入前のチェックリスト
- リクエストの中で、毎回同じ部分と毎回変わる部分を書き出す
- 同じ先頭部分を使うリクエストが、どのくらいの間隔・頻度で発生しているかを確認する
- 結果がすぐに必要ない処理を洗い出し、バッチ処理への移行候補にする
- 利用している提供元・モデルでの対応状況、単価、有効期限、最小の長さなどの条件を公式ドキュメントで確認する
- 導入前後で、使用量(キャッシュの読み込み量を含む)と費用を比較する
まとめ
プロンプトキャッシュとバッチ処理は、出力の内容を変えずにコストを抑えられる可能性がある、比較的取り組みやすい方法です。一方で、プロンプトの並び順やリクエストの間隔など、実装の細部によって効果が大きく変わります。ほかの見直しの観点はAPIコストが膨らむ5つの原因の記事で整理しています。
自社の構成で効果が出るか判断が難しい場合は、無料のAIコスト診断で現状を確認したうえで、AIコスト削減プランで専門家に相談することもご検討ください。