Skip to main content

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

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

イントロダクション

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

エージェントの品質と AI credits 効率の両方を向上させるには、この記事に記載されている戦略に従ってください。

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

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

関連する作業に基づいてモデルを選択します。

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

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

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

モデルの推論レベルを構成する

一部のモデルでは、構成可能な推論レベルもサポートされています。このレベルでは、モデルが応答する前の理由の量を制御します。 より高いレベルでは複雑な問題に対する回答を向上させることができますが、より多くのトークンを消費するため、クレジットが多くなるため、通常のレベルを既定で使用し、より困難なタスクにのみ発生させる必要があります。 構成可能な推論は、サポートされているモデルの Visual Studio Code と Copilot CLI (コパイロット CLI) で使用できます。

GitHub Copilotでサポートされている AI モデル」を参照してください。

Copilot自動モデルの選択 を使用する

Copilot自動モデルの選択 は、タスクの意図に基づいて、対応するモデルを選択します。

について Copilot自動モデルの選択」を参照してください。

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

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

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

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

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

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

3. コンテキストは簡潔に保つ

Copilot は、入力トークンとしてアクセスできるコンテキストを送信し、そのコンテキストが追加されます。開いているエディター タブ、添付ファイル、長い会話の完全な前後はすべてコンテキストとしてカウントされます。

コンテキストを制御し続けるために、次の操作を行うことを検討してください。

問題を切り替えたときに新しい会話を開始する

長いスレッドでは、新しいリクエストのたびにそれまでの履歴すべてが引き継がれます。 関連のないタスクに進むときは、新しい会話を開始します。 例えば次が挙げられます。

  • Copilot CLI (コパイロット CLI) /new (または/clear) を使用する
  • コパイロットチャットで、新しいチャット セッションを開始します。

続行したい長時間の Copilot CLI (コパイロット CLI) セッションを圧縮する

スレッドを継続する必要があるが、サイズが大きくなった場合は、/compactでCopilot CLI (コパイロット CLI)実行して履歴を要約し、コンテキスト ウィンドウを縮小し、必要に応じて概要 (/compact focus on the auth module など) にフォーカスします。

さらに、 /context を使用して、現在の使用状況をいつでも確認できます。

でコンテキストを管理する GitHub Copilot CLI(コマンドラインインターフェース)」を参照してください。

Copilot にプロジェクトのマップを与える

AGENTS.mdファイルや.github/copilot-instructions.mdファイルなど、保守性の高いカスタム命令ファイルを使用すると、エージェントはリポジトリの構造上の概要を把握できるため、自身の向きを変えるためだけに多数のファイルを読み取る必要はありません。 「さまざまな種類のカスタム命令のサポート」を参照してください。

必要なツールのみを取り込む

大規模なツール セット (たとえば、完全な MCP サーバーの相当するツール) は、すべての要求のコンテキストに追加されます。 ワークフローに適合する場合は、タスクに関連するツールセットのみを有効にします。

GitHub MCP サーバーのツールセットの構成」を参照してください。

コンテキスト キャッシュを利用する

Copilot は、キャッシュを通じて既に送信したコンテキストを再利用します。これにより、フォローアップ ターンのコストが削減されます。 ただし、キャッシュされたコンテキストは非アクティブな期間が経過すると期限切れになり、セッションの途中でモデルを切り替えると再利用されません。 どちらの場合も、コンテキストは再送信され、新しい入力トークンとして再び課金されます。 キャッシュを最大限に活用するには、関連する作業を 1 つの連続したセッションに保持し、途中でモデルを切り替えないようにします。

4. copilot-instructions.md ファイルで繰り返し発生するエラーを減らす

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

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

含める内容:

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

回避する方法:

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

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

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

5. 研究、計画、実施

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

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

  • 研究: エージェントを使用してコードベースを調べ、関連するファイルを特定し、依存関係を理解します。
  • 計画: 変更を加える前に、詳細で構造化された計画または仕様を作成します。 ここでは、推論モデルが最も重要です。
    • Copilot CLI (コパイロット CLI)では、/planを使用します。
    • コパイロットチャットのVisual Studio Codeで、エージェントのドロップダウンから [プラン] を選択するか、コンテキスト ウィンドウに「plan」と入力します。
  • 実装: フォーカスされたコンテキストと実行に適したモデルを使用して、プランに対して実行します。

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

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

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

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

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

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

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

次のステップ

エージェントの効率を向上させるだけでなく、支出を監視および管理して、 AI creditsを最大限に活用することもできます。

  • ダッシュボードと予算コントロールを使用しますhttps://github.com/settings/billingの [AI の使用状況] ページでは、すべての機能とモデルの使用量が分割されるため、クレジットが実際にどこに向かっているかを確認し、それに応じて調整できます。
  • 高コストなパターンが積み重なる前に特定。 Copilot CLI (コパイロット CLI) セッション内で、/usageを使用してセッション レベルのメトリックを表示し、作業中にコストのかかるパターンを特定します。 さらに、 /chronicle tips は最近のセッション履歴を分析し、 Copilot をより効率的に使用する機会を表示します。
  • より大きな許容量にアップグレードします。 毎月の上限に定期的に近づくと、追加の使用量を支払うよりも高いプランの方が経済的である可能性があります。これは、より高いプランの方が AI credit 許容量が多い場合です。 「個々のGitHub Copilotプランと特典について」と「GitHub Copilot プランの表示と変更」を参照してください。