プロンプトは、 GitHub Copilotに対して行う要求です。 たとえば、質問したり、タスクを記述したり、Copilot が完了するためのコード スニペットを記述したりできます。 プロンプトに加えて、 Copilot は現在のファイル内のコードや会話履歴などのコンテキストを使用して応答を生成します。
Visual Studio Code は、Visual Studio、JetBrains IDEs、IDE(GitHub、GitHub Copilot app、GitHub Copilot CLI、Eclipse、Xcode)、および Copilot Web サイトなど、さまざまな環境でやり取りできます。
GitHub Copilot appまたはGitHub Web サイトから、Copilot cloud agentを対話形式で操作する代わりに、Copilot(タスクを処理するエージェント)を開始することもできます。
この記事で紹介するヒントは、Copilot の各サーフェスに共通して当てはまり、より良い応答を生成するプロンプトを作成するのに役立ちます。
一般的なことから開始し、特定の情報を取得する
Copilotのプロンプトを記述する場合は、最初に目標またはシナリオCopilot詳しい説明を入力します。 次に、特定の要件を一覧表示します。 最も重要な要件を最初に置きます。 Copilot は、プロンプトの先頭と末尾の指示に余分な重みを与えます。
例えば次が挙げられます。
Write a JavaScript function that tells me if a number is prime The function should take an integer and return true if the integer is prime The function should error if the input is not a positive integer
Write a JavaScript function that tells me if a number is prime The function should take an integer and return true if the integer is prime The function should error if the input is not a positive integer
Write a JavaScript function that tells me if a number is prime
The function should take an integer and return true if the integer is prime
The function should error if the input is not a positive integer
例を示す
例を使って、Copilot があなたの求めていることを理解できるようにしましょう。 入力データの例、出力例、実装例を指定できます。
例えば次が挙げられます。
Write a Go function that finds all dates in a string and returns them in an array. Dates can be formatted like:
* 05/02/24
* 05/02/2024
* 5/2/24
* 5/2/2024
* 05-02-24
* 05-02-2024
* 5-2-24
* 5-2-2024
Example:
findDates("I have a dentist appointment on 11/14/2023 and book club on 12-1-23")
Returns: ["11/14/2023", "12-1-23"]
Write a Go function that finds all dates in a string and returns them in an array. Dates can be formatted like:
* 05/02/24
* 05/02/2024
* 5/2/24
* 5/2/2024
* 05-02-24
* 05-02-2024
* 5-2-24
* 5-2-2024
Example:
findDates("I have a dentist appointment on 11/14/2023 and book club on 12-1-23")
Returns: ["11/14/2023", "12-1-23"]
Write a Go function that finds all dates in a string and returns them in an array. Dates can be formatted like:
* 05/02/24
* 05/02/2024
* 5/2/24
* 5/2/2024
* 05-02-24
* 05-02-2024
* 5-2-24
* 5-2-2024
Example:
findDates("I have a dentist appointment on 11/14/2023 and book club on 12-1-23")
Returns: ["11/14/2023", "12-1-23"]
単体テストも例として機能します。 関数を記述する前に、Copilot を使用して関数の単体テストを記述してください。 次に、Copilot に、それらの単体テストで定義された仕様の関数を書くように依頼します。
複雑なタスクを単純なタスクに分割する
Copilot に複雑または大規模なタスクを完了させたい場合は、そのタスクを複数の単純で小さなタスクに分割してください。
たとえば、 Copilot に単語検索パズルを生成するように依頼するのではなく、プロセスを小さなタスクに分割し、 Copilot に 1 つずつ実行するように依頼します。
- 10 x 10 の文字グリッドを生成する関数を記述します。
- 有効な単語の一覧を指定して、文字グリッド内のすべての単語を検索する関数を記述します。
- 前の関数を使って、少なくとも 10 個の単語を含む 10 x 10 個の文字グリッドを生成する関数を書きます。
- 前の関数を更新して、グリッドから文字のグリッドと 10 個のランダムな単語を出力します。
あいまいさを回避します
あいまいな用語は回避します。 たとえば、"this" が現在のファイル、最後の Copilot 応答、または特定のコード ブロックである可能性がある場合は、"何が行われるか" を尋ねないでください。 代わりに、次のように具体的に指定します。
createUser関数ではどのような処理が実行されますか?- 最後の応答のコードはどんな処理を行いますか?
あいまいさは、ライブラリにも適用できます。
- 一般的でないライブラリを使用している場合は、ライブラリの機能について説明します。
- 特定のライブラリを使用する場合は、ファイルの先頭に インポート ステートメントを設定するか、使用するライブラリを指定します。
ルールと要件を、メタ命令としてではなく直接記述してください。 たとえば、「結果を JSON として返す」と記述し、「常に JSON を返すのを忘れないでください」は避けます。
関連するコンテキストを提供する
Copilot は、利用可能なコンテキストを使ってプロンプトを理解します。 そのコンテキストを指定する方法は、使用しているサーフェスによって異なります。
- IDE でのコード補完: 関連するファイルを開き、無関係なファイルを閉じます。 Copilot では、開いているファイルを使用してリクエストを理解します。
- Copilot
**
** が参照するコードを強調表示し、キーワードを使用してコンテキストをアタッチします。 たとえば、プロンプトに「
@」と入力して、ファイル、Issue、pull request、リポジトリなどの項目を添付します。 一部の IDE では、スラッシュ コマンド (/fixや/testsなど)、変数、および Copilot エクスペリエンスを向上させるその他のオプションもサポートされています。 - GitHub Copilot CLI:
@pathを使用してリポジトリ ファイルをアタッチするか、GitHub の issue を参照するか、#numberで pull request を参照します。 再利用したいリポジトリ コンテキストには、.github/copilot-instructions.mdファイル、パス固有の命令ファイル、またはAGENTS.mdファイルなどのカスタム命令を追加します。 - Copilot cloud agent: リポジトリとベース ブランチを選択してタスクのスコープを設定し、目的、受け入れ基準、関連ファイルを記述します。 ビジュアル コンテキストが重要な場合は、スクリーンショットまたはモックアップを添付します。 既存の議論をタスクに引き継ぐ必要がある場合は、チャット セッションからタスクを開始します。それ以外の場合は、その背景をタスク プロンプトに含めます。 永続的な指針は、リポジトリ内、パス固有のファイル、またはエージェント指示ファイルに保存します。
実験して反復する
目的の結果が得られない場合は、プロンプトを繰り返してやり直してください。
コードを作成するときに Copilot を使用して提案を取得する場合は、提案を完全に削除して最初からやり直すことができます。 提案を受け入れて修正を依頼することもできます。
Copilot Chatを使用している場合は、次の要求で前の応答を参照できます。 または、前の応答を削除して最初からやり直すこともできます。
履歴に関連性を持たせる
会話型インターフェイス (IDE または Copilot 上の GitHub、GitHub Copilot app、GitHub Copilot CLI、および Copilot cloud agent) では、会話履歴がコンテキストとして使用されます。 Copilot に関連する履歴のみを提供するには:
- 新しいタスクを開始するときは、新しい会話またはセッションを開始してください。
- お使いの Surface で対応している場合は、関連しなくなったターンを削除またはロールバックします。 たとえば、 GitHub Copilot CLI を使用すると、新しいセッションの開始、セッションの削除、
/undoまたは/rewindを使用した以前のプロンプトへの巻き戻しを行うことができます。 Copilot cloud agentを使用すると、新しいタスクを開始し、セッションを停止またはアーカイブできますが、セッションを削除したり、個々のターンを巻き戻したりすることはできません。
Copilotの出力を確認する
AI によって生成されたコードと応答を、同僚の作業を確認するのと同じ方法で検証します。信頼する前に、評価し、テストし、正しいことを確認します。 これは、すべての Copilot サーフェスに適用されます。 詳細については、「AI によって生成されたコードを確認する」を参照してください。
適切なコーディング プラクティスに従う
コードベースで Copilot に提案や説明を求めるときに必要な応答が得られない場合は、既存のコードがベスト プラクティスに従っており、読みやすいことを確認してください。 例えば次が挙げられます。
- 一貫したコード スタイルとパターンを使用します。
- 変数と関数にはわかりやすい名前を使用します。
- コードにコメントを追加します。
- コードをモジュール型スコープ コンポーネントに構造化します。
- 単体テストを含めます。
ヒント
Copilotを使用して、コードがベスト プラクティスに従うのに役立ちます。 たとえば、コメントを追加したり、大きな関数をより小さな関数に分割したりするように Copilot に依頼します。