AI コードレビューの推論コストを 68% 削減!Cloudflare のキャッシュとモデル選びの工夫
やっほー、しぃちゃんだよ!今日は Cloudflare のブログから、AI のコストを下げる実践的なお話だよ。
Cloudflare Blogなにが発表されたの?
Cloudflare の Blog で、自社の AI コードレビュアーの推論コストを 68% 削減した事例が公開されたよ。大きなアーキテクチャ変更なしにコストが倍増した原因を調べて、プロンプトキャッシュとモデルのルーティングを見直したんだって。
なぜ重要なの?
きっかけは、1 レビューあたりのコストが倍増したことだよ。
- 平均コスト: 4 月の約 $1.19 から、8 月下旬には約 $2.46 へ
- レビューあたりのトークン: 0.91 百万から 2.99 百万へ
- キャッシュヒット率は 85.7% から 97% に上がっていたのに、コストは上がった
最適化前の支出の内訳は、出力トークンが約 23%、キャッシュ書き込みが約 43%、キャッシュ読み取りが約 34%。つまりお金の大半は、モデルがすでに見たか、これから何度も見るコンテキストに使われていたの。8 月に全レビュアーを Anthropic のモデルに切り替えたときは、1 ジョブが $1.38 から $2.03 に上がり、Claude Opus 4.7 の standards レビュアーは約 $0.25 から $0.88 になったそうだよ。
これで何が変わるの?
結果として、1 レビューの平均コストは $2.43 から $0.77 へ 68% 下がったよ。削減分 $1.67 のうち、コード変更が約 $0.65、モデルと effort の見直しが約 $1.06 だって。
レイテンシも改善したよ。
- 中央値: 4 分 9 秒から 1 分 32 秒
- 99 パーセンタイル: 15 分 20 秒から 4 分 41 秒
- 5 分超のレビュー: 37.9% から 0.7%
深く潜ってみよう
施策は 6 つあるよ。
- キャッシュされたプレフィックスをリポジトリ間で共有: セッションの最初のリクエストのキャッシュヒットは 14〜26% だった。OpenCode v1 では、唯一のキャッシュブレークポイントがリポジトリ固有の内容(作業ディレクトリ・日付)の後ろにあったのが原因。システムプロンプトをマーカーで分割して、共通部分(ツールとエージェントのプロンプト)に専用のブレークポイントを置き、skills 一覧などのリポジトリ固有の内容は共通部分から除いた。最初のリクエストのキャッシュ読み取りは 91〜99.5% になった
- 参照資料を先読み: standards レビュアーは最初のターンをツール呼び出しでの参照ファイルの読み込みに使っていた。その索引をプロンプトに入れると、1 回の実行あたりの LLM 呼び出しが 15.9 から 9.6 に、コストが $1.12 から $0.72 に下がった
- セッションあたりの呼び出しを削減: サブレビュアーが使えないツールの削除、ファイルの並列読み込み(64% のターンがツール呼び出し 1 回だけだった)、再レビューで新しい内容がないレビュアーのスキップ、レビュー投稿後にセッションを終了、キャンセルされたジョブを 15 秒ごとに確認して停止。合わせて 1 レビューあたり約 $0.20 の節約
- 3 つのサブレビュアーでプレフィックスを共有: コード品質・セキュリティ・パフォーマンスの最初のリクエストは同一。1 つがキャッシュを書き、残り 2 つが最大 20 秒待って読む。それぞれ約 9 セントの節約
- モデルと effort の調整: 成績の悪い組み合わせをやめ、コーディネーターを Opus 5.5 の medium effort に移行。Sonnet 5 と Sonnet 5.5 を A/B テストして、Sonnet 5.5 は検出結果が同程度で 1 実行あたり 47〜62% 安かった。コード品質は検証のうえ 5.5 の high effort に
- OpenCode v1 から v2 へ: シャドウ比較で承認の判断が 98% 一致し、full tier のレビューが約 13% 速く終わった
品質面の確認結果はこうだよ(コード品質、high effort)。
- critical と warning の指摘は 40% 減ったが、作者が対応した重大な指摘は 34% から 59% に増えた
- ブラインド評価では、レビューあたりの重要な指摘は 0.28 から 0.30 で安定
- 深刻度のインフレは約 70% 減(主に、軽微な指摘が critical とされることが減った)
- 判定のないレビューは 0.79% から 0.27% に、セキュリティレビュアーのリトライは 3.5% から 0.04% に減った
注意点も正直に書かれているよ。
- 比較は平日のウィンドウ同士で、統制された実験ではない
- 「作者が対応した」は、正しさではなく行動を示す代理指標
- 判定者もモデルで、比較グループによっては指摘が 35〜66 件しかない
- high effort のテストは 1 日だけ
- medium effort では、コード品質とパフォーマンスで実際の指摘が減った(パフォーマンスは重要な指摘が約 64% 減)。セキュリティも減った可能性があるが、統計的に有意ではなかった。セキュリティとパフォーマンスは medium effort のままで、high effort の検証を予定している
まとめ
- コスト倍増の原因は、コンテキストの再読み込み(キャッシュ書き込みと読み取り)が支出の大半を占めていたこと
- キャッシュのブレークポイントを見直し、共通プレフィックスを共有するのが効いた
- 参照資料の先読みとツール呼び出しの削減で、LLM 呼び出し自体を減らした
- モデルと effort は、品質を測りながら選び直した
- 結果は平均コスト 68% 減、中央値のレイテンシ 4 分 9 秒から 1 分 32 秒
LLM を使ったエージェントを運用していて、コストやレイテンシを下げたい人にぴったりの読み物だよ!