Copilot Chatでチャット コンテキストを管理する

暗黙的なコンテキスト、参照、チャット履歴、コンテキスト ウィンドウ ツールを組み合わせて>GitHub Copilot Chat でチャット コンテキストを管理して、より良い回答を得ることができます。

この記事では、Copilot Chat に詳細情報を提供することで、より良い回答を得る方法について説明します。

[前提条件]

Visual Studio で GitHub Copilot Chat の使用を開始するには、次のものが必要です。

暗黙的なコンテキスト

Visual Studio は、現在のアクティビティに基づいてチャット プロンプトにコンテキストを自動的に提供します。

次の情報は、チャット コンテキストに暗黙的に含まれます。

  • アクティブなエディターで現在選択されているテキスト。
  • エディターでアクティブな現在のファイル。

プロンプトに応じて、Copilot はアクティブなファイルの内容を読み取ります。 チャット コンテキストに別のファイルの内容を明示的に含めるには、チャット ビューの [ + ] ボタンを使用して[ 添付ファイルの追加]を使用して、推奨されるファイルを選択します。

Copilot Chat の暗黙的なコンテキストのスクリーンショット。

リファレンス: スコープ Copilot の結果

自然言語でコーディング関連の質問をすることができます。GitHub Copilot Chat は、Visual Studio で開かれているコードベースのコンテキストでこれに答えます。 リファレンスを使用すると、Copilotが質問に答えるときに考慮したい情報についてより具体的に知ることができます。

コードベースで特定のコンテキストを選択することで、長い情報を書き出したり貼り付けたりすることなく、より良い質問を簡単に作成できます。 コンテキストを指定すると、Copilot はより関連性の高い回答を提供することもできます。

Copilot Chat の参照のスクリーンショット。

ファイルを参照する

GitHub Copilot Chat でファイルを簡単に参照するには、ファイル名の先頭に # 記号を追加するだけです。 たとえば、BasketService.csという名前のファイルがある場合は、チャット内のファイルを #BasketService.csと呼びます。

Copilot Chat のファイル参照のスクリーンショット。

メソッド、クラス、または関数を参照する

Visual Studio 2022 バージョン 17.11では、GitHub Copilot Chat で特定のメソッド、クラス、または関数を参照できるようになりました。

GitHub Copilot Chat でメソッド、クラス、または関数を簡単に参照するには、メソッド、クラス、または関数名の先頭に # 記号を追加するだけです。 たとえば、BasketAddItem という名前のメソッドがある場合は、チャット内でそれを #BasketAddItemとして参照します。

Visual Studio の GitHub Copilot Chat のメソッドへの参照のスクリーンショット。

ソリューション全体を参照する

@workspace を使用して、IDE でアクティブなソリューションをコンテキストで参照します。 コンテキストに @workspace を使用する場合、Copilot Chat は、現在開いているファイル、プロジェクト、構成に関する情報を活用し、IDE 内で作業を行います。 これにより、Copilot Chat は、より関連性の高いコンテキストに対応した提案と回答を提供できます。

Copilot Chat でソリューション コンテキストを参照するスクリーンショット。

Visual Studio 2022 バージョン 17.11 では、GitHub Copilot Enterprise サブスクライバー@github をチャットで使用して、リポジトリ全体のコンテキストを含め、Web を検索できるようになりました (管理者 によって検索が有効になっている場合)。 @github使用時に Copilot が質問に回答するために使用できる GitHub 固有のスキルのコレクションの詳細については、「Copilotでの GitHub スキルの使用」を参照してください。

Copilot Chat で GitHub スキルを使用するスクリーンショット。

Git 履歴のコミットを参照する

コミットを確認していて、変更内容を理解したり、潜在的な問題を特定したり、同様の編集案を作成したりする際に Copilot の支援が必要な場合は、コミットのコンテキストを GitHub Copilot Chat に直接添付できます。

コミット ID をコピーしてチャットに貼り付ける代わりに、[ チャットに追加] を 使用して、選択したコミット コンテキストを IDE からアタッチします。

次のいずれかのサーフェスからのコミットで [ チャットに追加] を使用します。

  • Git History (Git>View Branch History)
  • File History (ソリューション エクスプローラー でファイルを右クリックし、Git>View History)
  • 注釈 (Blame) (エディター内で右クリックし、Git>注釈 (Blame))

コミットを複数選択して、一度に複数のコミットをチャットにアタッチできます。

Git History で選択したコミットの [チャットに追加] コマンドを示すスクリーンショット。

コミット コンテキストをアタッチした後、次のようなプロンプトを試します。

  • この変更について説明します。
  • これにより問題が発生しますか?
  • この他のファイルにも同様の変更を書き込みます。

プロンプトのコンテキストとして使用される添付されたコミットを含む Copilot Chat を示すスクリーンショット。

変更を参照する

Visual Studio 2022 バージョン 17.14 以降では、Copilot Chatで Git 参照を使用できます。

#changesを使用して、Git の [変更] ウィンドウからコミットされていない変更を参照します。 このリファレンスは、Copilot Chatで完了した作業を要約したり、保留中の編集の影響を説明したり、コミットする前に次の手順を提案したりする場合に便利です。

たとえば、次のような質問をすることができます。

  • #changesを要約します。
  • #changesでこれまでに何をしましたか?
  • #changesの単体テストを提案します。

Tools>Options ダイアログを開き、GitHub>Copilot>Source Control Integration を展開し、Enable Git preview features を選択して、OK を選択します。

#changes を参照してコミットされていない変更を示す Copilot Chat のスクリーンショット

コミットを参照する

#commit: を使用して、Copilot Chat内の特定のコミットを参照します。 #commit: と入力すると、Copilot選択できる最近のコミットの一覧が表示されます。 古いコミットを参照する場合は、 #commit:の直後にコミット ID を入力します。

コミット参照は、次のようなタスクに使用できます。

  • #commit:について説明する。
  • #commit:の変更に対応する単体テストを記述します。
  • #commit:で潜在的な問題を見つけます。

このリファレンスは、過去の変更を確認したり、コミットの背後にある意図を調べたり、前の作業のフォローアップに役立つCopilotを依頼したりする場合に便利です。

#commit:. と入力した後に最近のコミット候補が表示された Copilot Chat のスクリーンショット。

イメージを参照する

Visual Studio 17.14 以降での Copilot Chat のビジョン統合により、チャット プロンプトに画像を 添付 し、応答を改善するための追加のコンテキストを Copilot に提供できます。 画像をスコープと、スラッシュ コマンドなどの他のコンテキスト機能と組み合わせて使用して、カスタマイズされた応答を生成します。

次の例では、Copilot は添付イメージを解釈してプランを生成し、カラフルなブレイクアウト ゲームをゼロから作成するコードを提案します。

Copilot チャットで画像を追加するシナリオの例のスクリーンショット。

参照出力ウィンドウ

これで、チャットのコンテキストとして出力ウィンドウを使用して、質問をしたり、出力ログに関するヘルプを表示したりできるようになりました。 サポートされている出力ウィンドウには、ビルド、デバッグ、テスト、ソース管理、パッケージ マネージャー、またはその他のアクティブな出力ウィンドウ ウィンドウが含まれます。

次のいずれかの方法で、チャットの出力ログを参照します。

  • #output を使用して、チャットで直接参照します。
  • チャット入力のアイコンを➕選択し、コンテキストとして Output logs 追加します。
  • Copilot に直接尋ねてください。たとえば、出力ログを確認して、このエラーの修正を手伝ってください
  • 出力ウィンドウで右クリックし、[Explain with Copilot]\(Copilot で説明する\) を選択してアタッチします。

Copilot Chat のコンテキストとしての出力ウィンドウのスクリーンショット。

参照 URL

プロンプト ボックスに URL を貼り付けると、Copilot のトレーニング データにトピックが含まれていない場合や、特定のリソースを参照する場合に、Copilot が Web から情報をプルして空白を入力します。

たとえば、GitHub のベスト プラクティスに基づいて readme.md ファイルを記述できるように Copilot に依頼できます。

コンテキストのチャットで URL を参照するスクリーンショット。

Copilot は、指定したパブリック URL からのみ静的 HTML コンテンツを参照でき、そのページ上の他のリンク、認証の背後にあるページ、動的ページのコンテンツにはアクセスできないことに注意してください。

使用例

コンテキスト制御に参照を使用する例を次に示します。

質問 を形成するために Copilot によって使用されるコンテキスト
#MyFile.cs の目的は何ですか: 66-72? ファイルの正確なセクション
#BasketService.cs のテストはどこにありますか? BasketService.cs
/#BasketService.cs 内の #AddItemToBasket を説明する BasketService.csの AddItemToBasket メソッド
この @workspace に削除バスケットメソッドはありますか IDE で開いている現在のソリューション
#TestCalculator という名前のテスト メソッドがあります。 正しく実行されていることを確認するにはどうすればよいですか? TestCalculator メソッド
クラス #BasketService と #OrderService の違いについて説明してください。 BasketService クラスと OrderService クラス
#AddItemToBasket は私の @workspace のどこにありますか? IDE で開いている現在のソリューション
コミットする前に #changes を要約する [Git の変更] ウィンドウでのコミットされていない変更
#commit:abc1234 で潜在的な問題を見つける 指定されたコミット
App.tsx でこのイメージに似た UI を更新する アップロードされた画像

Copilot Chat で使用されるソースを確認する

Copilot Chat では、すべての結果の後に使用されたコンテキストが表示されるため、質問に回答するときに考慮された内容を確認できます。 Copilot チャットに質問し、チャット ウィンドウで返信を受け取ると、応答の下に 参照 ドロップダウンが表示されます。 参照 ドロップダウン リストのエントリには、その応答を生成するために Copilot Chat によって参照されるコンテキストが表示されます。 この情報は、質問を変更して、より適切で関連性の高い回答を得るのに役立ちます。

Copilot Chat の [参照] ドロップダウンのスクリーンショット。

整理: スレッドを使用してチャット履歴コンテキストを管理する

チャット セッションで複数のチャット プロンプトを繰り返し送信すると、Copilot は現在のチャット プロンプトのコンテキストとしてチャット プロンプトと応答の履歴を使用します。 つまり、コンテキストを繰り返すことなく、フォローアップの質問をしたり、前の質問を明確にしたりすることができます。 たとえば、"... とどのように違うのか"、"テスト ケースを追加する"、"詳細に説明する" などを尋ねることができます。

新しいチャット セッションからやり直し、現在のコンテキストを破棄するには、チャット ビューで 新しいスレッド を開始します。 これは、別のトピックに移動し、前のコンテキストと履歴を回避する場合に便利です。 スレッドを使用して、会話をタスクに集中させ、コンテキストを明確にして、回答が関連する履歴に基づくようにします。

新しいチャット スレッド

チャット ウィンドウで [ 新しいスレッドの作成 ] または [Ctrl+N ] を選択して新しいスレッドを開始します。

Copilot チャットの [新しいスレッドの作成] アイコンのスクリーンショット。

チャット スレッドの切り替え

複数の進行中のスレッドから選択して、質問に適切な履歴コンテキストを提供できます。 前のスレッドには Ctrl+PgDown 、チャット ウィンドウの次のスレッドには Ctrl+PgUp を使用できます。 + T はスレッドドロップダウンを展開します。

Copilot Chat で進行中のスレッドを切り替えるスクリーンショット。

整理: チャット履歴パネルを使用してチャット履歴を管理する

チャット セッションで複数のチャット プロンプトを繰り返し送信すると、Copilot は現在のチャット プロンプトのコンテキストとしてチャット プロンプトと応答の履歴を使用します。 つまり、コンテキストを繰り返すことなく、フォローアップの質問をしたり、前の質問を明確にしたりすることができます。 たとえば、"... とどのように違うのか"、"テスト ケースを追加する"、"詳細に説明する" などを尋ねることができます。

新しいチャット セッションからやり直し、現在のコンテキストを破棄するには、チャット ビューで 新しいスレッド を開始します。 これは、別のトピックに移動し、前のコンテキストと履歴を回避する場合に便利です。 チャット履歴パネルを使用して、会話をタスクに集中させ、コンテキストを明確にして、関連する履歴に基づいて回答を作成します。

新しいチャット スレッド

チャット ウィンドウで [ 新しいスレッドの作成 ] または [Ctrl+N ] を選択して新しいスレッドを開始します。

Copilot チャットの [新しいスレッドの作成] アイコンのスクリーンショット。

チャット スレッドの切り替え

チャット履歴パネルを使用してチャット セッションを切り替え、質問に適切な履歴コンテキストを提供します。

各チャット履歴エントリには、次の情報が表示されます。

  • チャット タイトル
  • 最新のメッセージのプレビュー
  • セッションが最後に更新されたとき

パネルでセッションを選択して、その会話に直接ジャンプします。

セッション タイトル、メッセージ プレビュー、および最終更新時刻を示す [チャット履歴] パネルのスクリーンショット。

インライン チャットをチャット ウィンドウに昇格させる

Visual Studio 2022 バージョン 17.11では、チャット ウィンドウに昇格することで、インライン チャット の履歴を保持できるようになりました。 [チャット ウィンドウで続行 ]を選択します。、会話のレコードとコンテキストを維持し、チャット ウィンドウで続行します。

インライン チャットで進行中のスレッドをチャット ウィンドウに昇格させるスクリーンショット。

コンテキスト ウィンドウの使用状況を監視および最適化する

Copilotとチャットすると、会話履歴、添付ファイル、その他のコンテキスト入力を含むコンテキスト ウィンドウが使用されます。 コンテキスト ウィンドウがいっぱいになると、Copilotはスレッドの前の部分から古い詳細を失う可能性があります。

コンテキスト ウィンドウ インジケーターを使用して、使用状況をリアルタイムで追跡します。

  1. Copilot Chat ウィンドウを開きます。
  2. チャット プロンプト ボックスの右上隅で、リング インジケーターを見つけます。
  3. インジケーターを選択すると、使用されたコンテキストの正確な割合が表示されます。
  4. コンテキストの使用に寄与するもの (会話メッセージやワークスペース ファイルなど) の内訳を確認します。

会話履歴の要約とコンパクト化

圧縮により、現在のスレッドの古い部分で使用されるコンテキストの量が減り、同じ会話で作業を続けることができます。

使用可能なコンテキストが不足している場合は、[ 会話の要約 ] を選択してスレッドの以前の部分を圧縮し、現在の会話にとどまっている間は領域を再利用します。

圧縮は、次のいずれかの方法で使用します。

  • コンテキスト ウィンドウ インジケーターから [ 会話の要約 ] を選択すると、以前のメッセージが自動的に圧縮されます。
  • チャットに /compact を入力して、会話をいつでも手動で圧縮します。

圧縮後、Copilotは完全なトランスクリプトではなく、以前のターンの概要を保持します。 これは、スレッドの全体的な方向を維持しながら、コンテキスト ウィンドウ領域を解放するのに役立ちます。

圧縮は次の場合に使用します。

  • コンテキストの使用率が高く、重要な最近のコンテキストが失われないようにする必要があります。
  • スレッドは長くなりましたが、それでも同じチャットで続けたいです。
  • フォローアップの新しい一連の質問をする前に、フォーカスを改善したいと考えています。

ベスト プラクティス

Copilot Chat では、チャット履歴を使用して、要求に関するコンテキストを取得します。 Copilot に関連する履歴のみを提供するには:

  • 新しいスレッドを使用して、新しいタスクの新しい会話を開始します。
  • 同じスレッドを保持する場合は、コンテキストの使用率が高い場合は 、会話の要約 を使用します。
  • 関連性がなくなった要求、または目的の結果が得られなかった要求を削除します。

チャットの会話を開けたままにして、何度も試行しながらCopilotにプロンプトを送信し、提案されたソリューションを改善します。 Copilot には、生成されたコードのコンテキストと現在の会話履歴の両方があります。 追加の質問を続ける中で、Copilot は要件に応じて応答をさらに絞り込みます。 GitHub Copilot のためのプロンプトエンジニアリング を参照して、Copilot の結果を改善するための効果的なプロンプトに関する戦略を確認してください。

次のステップ