Skip to main content

エージェントの品質を向上させ、AI の使用を最適化する

少数の試行でタスクを完了し、その結果、使用する AI creditsを減らした高品質のエージェントを構築するための戦略について説明します。

イントロダクション

エージェントの役割や範囲が適切に定義され、適切な指示が与えられ、明確な制約の中で動作している場合、トークン効率は自然と向上します。 高品質のエージェントは、少ない試行でタスクを完了し、より少ない手直しで明確なワークフローに従い、コストのかかるデバッグと修正のサイクルを回避します。

この記事では、エージェントの品質と AI credits の両方の効率を向上させる 5 つの戦略について説明します。

1. 適切なタスクに適したモデルを選択する

モデルの選択は、エージェントの品質とコスト効率の両方を向上させる最も速い方法の 1 つですが、見過ごされることがよくあります。 一般的なパターンは、すべてのタスクで最も能力の高いモデルに既定で設定されますが、結果を改善することなくトークンの使用が増えることがよくあります。 一部の実行負荷の高いシナリオでは、推論モデルを過剰に使用すると、モデルがタスクを過剰に考えたり、不要な変更が発生したりする可能性があるため、品質が低下する可能性があります。

手元の作業に基づいてモデルを選択します。 Copilot自動モデルの選択 は、リアルタイムのシステム正常性とモデルのパフォーマンスに基づいて、これを自動的に処理することもできます。

  • 推論モデル: アーキテクチャの決定、複雑なデバッグ、システム設計、より詳細な分析が必要なタスクに最適です。
  • 中間層モデル: プランが既に明確であり、エージェントを効率的に実行する必要がある場合に最適です。
  • 軽量モデル: リファクタリング、書式設定、ドキュメントの更新、およびその他のルーチンの適切な範囲の変更に最適です。

タスクが要求するだけの機能を使い、必要最小限にとどめてください。 タスクに一致する機能により、結果が向上し、大規模なコストが直接制御されます。

モデルとタスクの種類別の内訳については、「 AUTOTITLE」を参照してください。

2. プロンプトで明確なガイダンスを提供する

プロンプトは、エージェントが行うすべての方向を設定します。 プロンプトがあいまいな場合、エージェントは意図を推測し、より多くのコンテキストを調査し、判断の呼び出しを行う必要があります。 多くの場合、再試行、スコープのずれ、不要なトークンの使用につながります。

適切に構造化されたプロンプトには、次の 3 つの特性があります。

  • 明確なタスク定義。 "この問題を修正する" の代わりに、問題の内容、発生場所、および予想される結果がどのようになるかを説明します。
  • 関連するコンテキストが事前に提供されます。 重要なファイル、サービス、ログ、エラー、または入力が既にわかっている場合は、それらを含めます。 これは、エージェントが不要な探索を回避するのに役立ちます。
  • 明確な停止条件。 "完了" の外観をエージェントに伝えます。 停止ポイントがない場合、エージェントは、追加のコミットの追加、関連のないコードのリファクタリング、またはスコープの拡張によって、目標を超えて続行できます。

この追加されたガイダンスでは、トークンの使用量が有意に増加することはありませんが、適切な結果を得るために必要なエージェント実行の数を大幅に減らすことができます。

プロンプト エンジニアリングのベスト プラクティスについては、 GitHub Copilot Chat のプロンプト エンジニアリング を参照してください。

3. 研究、計画、実施

エージェントを効果的に活用するうえでの大きな変化の一つは、すべてを1回のセッションで済ませるやり方から脱却することです。 調査、計画、実装がすべて一緒に行われると、コンテキストが急速に拡大し、無関係な情報が蓄積され、エージェントの品質が時間の経過と共に低下します。

作業を明確なフェーズに分割します。

  • 研究: エージェントを使用してコードベースを調べ、関連するファイルを特定し、依存関係を理解します。
  • 計画: 変更を加える前に、詳細で構造化された計画または仕様を作成します。 ここでは、推論モデルが最も重要です。
  • 実装: フォーカスされたコンテキストと実行に適したモデルを使用して、プランに対して実行します。

フェーズ間で新しいセッションを開始すると、不要なコンテキストを転送できなくなります。 妥当なスコープ内で 1 つのセッションが完了すると、キャッシュが利用されます。 前のフェーズからコンテキストを繰り越す場合、トークンの使用が増加し、バイアスが発生し、エージェントの明確さが低下する可能性があります。 各フェーズは、必要なものでのみ動作する必要があります。 効果的なスコーピング セッションのガイダンスについては、 GitHub Copilotを使用してタスクに取り組むためのベスト プラクティス を参照してください。

4. 確定的ガードレールを追加する

エージェントは非決定論的であり、特にマルチステップ ワークフローでは、毎回正しいとは限りません。 ガードレールがないと、小さなエラーが迅速に複合化する可能性があります。エージェントは正しくない出力を基に構築され、目標からさらに離れ、デバッグのコストが高く、時間がかかります。

決定論的制御では、明確な合格/失敗信号が導入されます。

  • 単体テストでは 、エージェントの変更によって予期される動作が生成されたことを確認します。
  • リンターは 構造と一貫性を強制し、書式設定の問題、スタイルのずれ、および回避可能なクリーンアップ作業を防ぎます。
  • セキュリティ スキャンは 、アンワインドが難しくなる前に、危険なパターンを早期にキャッチします。

これらのコントロールを組み合わせることで、緊密なフィードバック ループが作成されます。エージェントは変更を行い、テスト、ルール、スキャンによって評価され、エージェントは次に進む前に調整されます。 これにより、トークンの無駄の最大の要因の 1 つである、間違った変更の長いチェーンを防ぐことができます。

これらのガードレールに投資するチームでは、再試行の回数が減り、タスクの完了速度が速くなり、エージェントの動作が予測可能になります。 多くの場合、個々の手順で事前に少し多くのトークンを使用している場合でも、トークンの合計消費量が削減されます。

5. 簡潔な情報を維持する copilot-instructions.md

永続的な命令により、エージェント間の対話の一貫性が向上しますが、その値は、その記述方法によって完全に異なります。 リポジトリ レベルの copilot-instructions.md ファイルは、このガイダンスをエンコードする最も直接的な方法です。 個人レベルと組織レベルの手順を重ねて、より広範な一貫性を確保できます。

最適な手順は、短く、具体的であり、実際に観察されたエージェントの動作に根付きます。これは、適切に聞こえるがシステムには適用されない一般的なベスト プラクティスではありません。

含める内容:

  • 必要なフレームワーク、ライブラリ、または設計パターン
  • エージェントが繰り返す傾向がある既知の落とし穴
  • "簡潔にする" や "リターン コードのみ" などの出力の期待値
  • エージェントが従う必要があるチーム固有の規則
  • ビルド、テスト、Lint のコマンド

回避する方法:

  • 長い一般的なドキュメント
  • 実際のシステムを反映しない AI によって生成されたガイダンス
  • 1 回限りの基本設定または使用頻度の低い詳細
  • コンテキストを煩雑にする過剰な指示

コードベース、アーキテクチャ、標準、ワークフローの進化に合わせて、手順を最新の状態に保ちます。 これらの命令は実行のたびにエージェントのコンテキストに含まれているため、小さな改善であっても、繰り返しエラーを減らし、時間の経過と同時に無駄なトークンの使用を減らすことができます。

詳細については、「GitHub Copilot用のリポジトリカスタム命令の追加」を参照してください。