検索
ニュース

「トークンを削ったのにコストが増えた」 GitHubが明かすAIコーディング“効率化の落とし穴”「GitHub Copilot」のコストを下げた4つの改善(2/2 ページ)

GitHubは、AIコーディングエージェントのコスト効率を高めるために「GitHub Copilot」に加えた4つの改善を公開した。ツール呼び出し1回分の出力を短くする定石が、かえってタスク全体の費用を押し上げる場合があるという。

Share
Tweet
LINE
Hatena
前のページへ |       

3.プロンプトの短縮は、意図を保つ回帰テストとセットで

 プロンプトはターンごとにモデルに送られるので、短縮が効率化につながるのは、期待されている動作が保たれる場合だけだ。GitHub Copilotには、並列作業のために専門のエージェントを起動するtaskツールがある。その指針はツールの説明、スキーマ、エージェント定義、システム指示、関連ツールなどにわたって蓄積されていた。GitHubは、Copilot自身がプロンプトを繰り返し書き直すメタプロンプティングのループでこれを約半分に削減した。

 ところが最初のオンライン実験で、オフラインの評価が見逃していた退行が見つかった。慎重な並列化を求める指針が厳格なスケジューリング方針に書き換えられ、独立したカスタムエージェントが逐次実行するようになっていた。GitHubは実験を止め、動作の回帰テストを行ってプロンプトを変更した。最終的な修正は、許可リストと拒否リストを次の1文に置き換えるものだった。

 「独立したエージェントは並列に実行できる。副作用は考慮すること」

 この文は短く制約も緩く、サブエージェントを並列で動かすかどうかの判断をモデルに委ねる。新しい動作テストは通り、既存のテストも失敗しなかった。リリース版では、taskツールのプロンプトをターン当たり約1300トークン削減し、セッション当たりの総プロンプトトークンが約1.8%、アクティブ時間当たりの正規化コストが約2.9%下がった。品質の退行は検出されていない。


回帰テストが逐次実行を検出し、1文の修正で並列動作が戻ったことでプロンプト圧縮が安全になった。削減効果はモデルのターンごとに繰り返し効く(提供:GitHub

4.完了通知に結果を同梱し、取得だけのターンをなくす

 エージェントは、長時間動くシェルコマンドとサブエージェントの調査を同時に走らせるなど、独立した処理をバックグラウンドで実行することが多い。通知機能を使えば、処理の完了を待つためにツール呼び出しを消費することなく、エージェントは作業を続けられる。エージェントがこれらの処理について明示的に待機していない場合、シェルコマンドまたはサブエージェントの処理が完了すると、ハーネスがモデルを起動して通知する。

 従来はこの通知に完了結果が含まれておらず、エージェントはGitHub Copilotが既に受け取っている出力を取得するためだけに、もう1ターン費やしていた。複数の処理が立て続けに完了すると、この余分なやりとりが繰り返されることもあった。

 現在のGitHub Copilotは完了通知をまとめ、既存のツール結果の形式で結果を直接渡す。まだ実行中の処理について、結果を明示的に読み取る動作は従来通りだ。


変更前はバックグラウンド処理が完了するたびに取得だけのターンが発生する可能性があった。変更後はハーネスが完了をまとめ、既存のツール結果の形式で結果を渡す(提供:GitHub

 変更前は、完了したタスクごとに結果を要求する呼び出しと処理する呼び出しが必要で、シェルコマンドとサブエージェントの例では作業の再開までにモデルの呼び出しが4回発生していた。現在は1回で両方を処理できる。不要な呼び出しにセッション全体のコンテキストを持ち越すことも避けられる。結果を圧縮も要約もせずに直接渡すこの変更で、AIクレジットで測ったトークン関連の使用量は平均約2.3%減った。

効率的なAIコーディングエージェントを作る5つの教訓

 あるワークフローでトークンを節約できる変更が、別のワークフローではコストを増やすこともある。例えばファイルツールの指示を絞り込む変更は、Copilotコードレビューでの良好な結果から着想したが、GitHub Copilot CLIのオンライン実験ではコストが増えたので投入しなかった。

 一方、行番号接頭辞の削除と選択的な出力圧縮は、本番のモデルを使った多数のCopilotコードレビューのタスクでの独立した評価で、レビュー当たりの平均プロンプトトークンをそれぞれ約5%削減した。品質の指標に変化は検出されていない。

 なお、これらはCopilotコードレビューを共通のファイルツールへ移行した以前の取り組み(レビュー指示の調整と併せてコストを約20%削減)とは別の効果だ。

 GitHubは、効率的なAIコーディングエージェントを作る教訓として次の5点を挙げている。

  1. ツール呼び出しではなく完了したタスクを最適化する。削られた情報を取り戻すのにターンを費やすなら、出力が短くても安くはならない
  2. モデルの出力だけでなくオーケストレーションも最適化する。ハーネスが確定的に処理できる作業のターンをなくす
  3. 出力が何を表しているかに応じて圧縮する。内容を正確に保ち、情報を失わない変換を優先し、復旧経路をどれだけ使うかを測る
  4. プロンプトの書き換えは意図しない結果を招くことがある。意図した動作が保たれているかを検証する
  5. 評価結果はワークロードごとに異なる。オフラインのベンチマーク、オンライン実験、投入先の製品ごとに評価し直す

 GitHubは「これらの変更はどれもモデルを賢くしていない。モデルがそもそもする必要のなかった作業を取り除いただけだ」とし、今回の変更は同じハーネスを使うGitHub Copilotの各機能に展開しているとまとめている。

Copyright © ITmedia, Inc. All Rights Reserved.

前のページへ |       
ページトップに戻る