GitHub Copilot のプロンプトとキーワードを調べる

完了

GitHub Copilot のチャット インターフェイスでは、自然言語処理と機械学習を使用してプロンプトを解釈し、関連する応答を提供します。 プロンプトと提供するコンテキストは、正確で有用な応答を生成するために不可欠です。

プロンプトの品質

GitHub Copilot のプロンプトを記述するときは、応答の品質を向上させるために次のガイドラインを検討してください。

  • 送信するプロンプトは、明確で簡潔で、具体的である必要があります。 たとえば、"この関数を使用する方法" を尋ねる代わりに、" calculateTotal 関数が shoppingCart.js ファイルでどのように機能するかを説明できますか?" という質問を行うことができます。

  • 長いプロンプトを記述する必要がある場合は、いくつかの短い文を使用してプロンプトを記述する必要があります。 まず、目標を説明する概要から始めて、具体的な詳細を指定します。

  • 複雑なプロンプトをより小さく、より管理しやすい部分に分割することを検討してください。 複雑なプロンプトを分解すると、AI が意図を理解し、より正確な応答を提供するのに役立ちます。 後続のプロンプトは、前のプロンプトを基にして、要求を絞り込み、より具体的な回答を得ることができます。 ピア プログラマとの共同作業は、人と一緒に作業するのと似ています。 最初に会話をフレームに収めてから、解釈が間違っている可能性がある 1 つの要求ですべてを送信するのではなく、具体的な詳細を記述することをお勧めします。

プロンプト キーワードを使用する

GitHub Copilot Chat では、自然言語テキストの処理に加えて、キーワードを使用して、プロンプトのコンテキストと意図を指定するのに役立ちます。 キーワードは、GitHub Copilot Chat のコンテキストで特定の意味を持つ特別な単語またはフレーズです。 キーワードを使用すると、AI が何を求めているかを理解し、より関連性の高い回答を提供できます。

GitHub Copilot では、次のキーワードを使用して、プロンプトのコンテキストと意図を指定できます。

  • チャット参加者: チャット参加者は、GitHub Copilot がより良い応答を生成するのに役立つ特定のフィールドの専門家のようなものです。 チャット参加者は、 @ 記号を使用して指定します。

  • スラッシュ コマンド: スラッシュ コマンドは、プロンプトの意図 (目標または目的) を記述するのに役立ちます。 Copilot Chat が質問に答える際のタスクの 1 つは、意図を判別して、ユーザーが何をしたいかを理解することです。 スラッシュ コマンドは、意図を明確にするのに役立ちます。

  • チャット変数: チャット変数はドメイン固有のコンテキストを提供します。 チャット プロンプトでチャット変数を参照するには # 記号を使用します。 チャット変数を使用すると、チャット プロンプトに含めるコンテキストをより具体的に指定できます。

チャット参加者

GitHub Copilot Chat は、関心のあるコンテキストを理解し、最適なリソースを適用できる場合に、より適切な応答を提供します。 GitHub Copilot Chat で、プロンプトにチャット参加者を追加することで、より良い応答を生成できます。 チャット参加者は、より良い応答を提供する特定の分野の専門家のようなものです。 チャット参加者は、 @ 記号を使用して指定します。

現時点では、Copilot Chat で次の組み込みのチャット参加者がサポートされています。

  • @workspace: @workspace 参加者は、ワークスペース内のコードに関する質問に回答したり、コードをリファクタリングまたは改善する方法を提案したりできます。
  • @vscode: @vscode 参加者は、Visual Studio Code エディター自体のコマンドと機能を認識しており、それらを使用するのに役立ちます。
  • @terminal: @terminal 参加者は、統合ターミナルシェルとその内容を手助けすることができます。
  • @github: @github 参加者は、Web 検索、コード検索、および企業のナレッジ ベースに基づいている回答を得ることができます。

プロンプトの前に特定のチャット参加者を付けて、Copilot がより関連性の高い応答を生成できるようにすることができます。

スラッシュ コマンド

スラッシュ コマンドは、Copilot Chat が質問をするときに意図を理解するのに役立ちます。 コード ベースについて学習していますか (/explain)、問題の修正に関するヘルプが必要ですか (/fix)、またはテスト ケースを作成していますか (/tests)? 何をしようとしているのかを Copilot Chat に知らせることで、Copilot Chat がタスクに対する返信を調整し、役に立つコマンド、設定、コード スニペットを提供できるようになります。

チャット参加者は、多くの場合、スラッシュ コマンドにバンドルされます。 スラッシュ コマンドは、チャット参加者に意図を説明するための簡潔な方法です。 /explainスラッシュコマンドは、多くの場合、@workspaceチャットの参加者と一緒に使われることが多いです。 チャット参加者とスラッシュ コマンドの組み合わせは、意図を明確にする強力な方法です。

たとえば、次のサンプル プロンプトを考えてみましょう。

Create a new workspace that uses Node.js, the Express framework, the Pug template engine, and TypeScript.

GitHub Copilot は、このプロンプトを、指定されたテクノロジを使用して作成された新しいコード プロジェクトの要求として解釈できますが、GitHub Copilot はキーワードを使用する次のプロンプトを理解する方が簡単です。

@workspace /new Node.js Express Pug TypeScript

2 番目のプロンプトを入力すると、GitHub Copilot は次のディレクトリ構造を提案します。 ファイルリストを使用して提案されたファイルをプレビューし、[ ワークスペースの作成 ] ボタンを使用して新しいフォルダーにファイルを生成できます。

チャット ビューの

組み込みのスラッシュ コマンドの例:

  • /help: GitHub Copilot の使用に関するヘルプを取得します。
  • /doc: コード ドキュメントを生成します。
  • /clear: 新しいチャット セッションを開始します。
  • /explain: 選択したコードのしくみを説明します。
  • /tests: 選択したコードの単体テストを生成します。
  • /fix: 選択したコードの修正を提案します。
  • /new: 新しいワークスペースのコードのスキャフォールディングを行います。 チャット プロンプトのみがコンテキストとして使用されます。
  • /newNotebook: 新しい Jupyter Notebook を作成します。 チャット プロンプトのみがコンテキストとして使用されます。

チャット参加者をスラッシュ コマンドと組み合わせて使用する例:

  • @workspace /explain: ワークスペース全体の説明を生成します。
  • @workspace /fix (または /fix): 選択したコードの問題の修正を提案します。
  • @workspace /tests (または /tests): 選択したコードの単体テストを生成します。
  • @vscode /api (または /api): Visual Studio Code 拡張機能の開発について質問します。
  • @workspace /new (または /new): 新しいワークスペースのコードのスキャフォールディングを行います。
  • @workspace /newNotebook (または /newNotebook): 新しい Jupyter Notebook を作成します。

チャット変数

チャット変数は、コンテキストを指定するために使用されます。 チャット プロンプトでチャット変数を参照するには # 記号を使用します。 たとえば、#selection 変数には、アクティブなエディターで選択されているテキストが含まれます。

チャット変数を使用すると、チャット プロンプトに含めるコンテキストをより具体的に指定できます。 たとえば、「#selection でどの並べ替えアルゴリズムが使用されているか」というプロンプトでは、チャット要求の対象が、選択したコード スニペットに絞り込まれます。

チャット参加者 (@workspace や @vscode など) は、ドメイン固有のコンテキストを提供して、チャット変数に影響を与えます。

組み込みのチャット変数の例を以下に示します。

  • #editor: アクティブなエディターに表示されているソース コード。
  • #selection: アクティブなエディターでの現在の選択範囲。 エディターの内容は、チャット ビュー コンテキストに暗黙的に含まれます。
  • #<file or folder name>: #を入力し、その後にファイル名またはフォルダー名を入力して、チャット コンテキストとして追加します。
  • #codebase: 関連するワークスペース コンテンツをコンテキストとしてプロンプトに追加します。
  • #terminalSelection: アクティブなターミナルの選択範囲。
  • #terminalLastCommand: アクティブなターミナルで最後に実行されたコマンド。

@workspace#codebase の違い

概念的には、 @workspace#codebase の両方で、コードベース全体について質問できます。 ただし、使用方法にはいくつかの違いがあります。

@workspace キーワードについて:

  • @workspace キーワードは、コードベースに関する質問への回答専用のチャット参加者です。
  • @workspace キーワードは、ユーザー プロンプトを制御し、コードベースを使用して回答を提供します。
  • @workspace キーワードは、他のツールを呼び出すことはできません。
  • @workspace キーワードは、ask モードを使用している場合にのみ使用できます。
  • 例: "@workspace how can I validate a date?"

#codebase キーワードについて:

  • #codebase キーワードは、ユーザー プロンプトに基づいてコードベース検索を実行し、関連するコードをコンテキストとしてチャット プロンプトに追加するツールです。
  • #codebase キーワードを使用すると、言語モデルは制御されたままになり、#codebaseを編集シナリオ用の他のツールと組み合わせることができます。
  • #codebase キーワードは、すべてのチャット モード (Ask、Edit、Agent) で使用できます。
  • 例: "add a tooltip to this button, consistent with other button #codebase"、"add unit tests and run them #codebase"

GitHub では、柔軟性が高まるため、チャット プロンプトで #codebase を使用することをお勧めします。

概要

GitHub Copilot のチャット インターフェイスでは、自然言語処理と機械学習を使用してプロンプトを解釈し、関連する応答を提供します。 プロンプトと提供するコンテキストは、正確で有用な応答を生成するために不可欠です。 明確で簡潔で具体的なプロンプトを使用し、複雑なプロンプトをより小さな部分に分割し、チャット参加者、スラッシュ コマンド、チャット変数などのキーワードを使用することで、応答の品質を向上させることができます。