Skip to main content

GitHub Copilot のプロンプト エンジニアリング

これらの戦略に従って、Copilot の結果を改善します。

プロンプトは、GitHub Copilot に対して行う要求です。 たとえば、Copilot Chat に尋ねる質問や、Copilot に完了を求めるコード スニペットなどです。 プロンプトに加えて、Copilot は、現在のファイル内のコードやチャット履歴などの追加のコンテキストを使用して応答を生成します。

この記事のヒントに従って、Copilot からより適切な応答を生成するプロンプトを記述します。

一般的なことから開始し、特定の情報を取得する

Copilot のプロンプトを記述するときは、最初に Copilot に目標またはシナリオの広範な説明を提供します。 次に、特定の要件を一覧表示します。

次に例を示します。

数値が素数かどうかを示す関数を記述する

関数は整数を受け取り、整数が素数の場合は true を返します

入力が正の整数でない場合、関数はエラーになります

例を示す

例を使用して、Copilot が必要なことを理解するのに役立ちます。 入力データの例、出力例、実装例を指定できます。

次に例を示します。

文字列内のすべての日付を検索し、配列で返す関数を記述します。 日付は次のように書式設定できます。

  • 05/02/24
  • 05/02/2024
  • 5/2/24
  • 5/2/2024
  • 05-02-24
  • 05-02-2024
  • 5-2-24
  • 5-2-2024

例:

findDates(「11/14/2023 に歯医者を予約し、12-1-23 にクラブを予約しています」)

戻り値: ["11/14/2023", "12-1-23"]

単体テストも例として機能します。 関数を記述する前に、Copilot を使用して関数の単体テストを記述できます。 次に、Copilot に、それらの単体テストで記述された関数の書き込みを依頼できます。

複雑なタスクを単純なタスクに分割する

Copilot で複雑なタスクまたは大規模なタスクを完了する場合は、タスクを単純で小さな複数のタスクに分割します。

たとえば、Copilot に単語検索パズルを生成するように依頼する代わりに、プロセスを小さなタスクに分割し、Copilot に 1 つずつ実行するように依頼します。

  • 10 x 10 の文字グリッドを生成する関数を記述します。
  • 有効な単語の一覧を指定して、文字グリッド内のすべての単語を検索する関数を記述します。
  • 前の関数を使って、少なくとも 10 個の単語を含む 10 x 10 個の文字グリッドを生成する関数を書きます。
  • 前の関数を更新して、グリッドから文字のグリッドと 10 個のランダムな単語を出力します。

あいまいさを回避します

あいまいな用語は回避します。 たとえば、"this" が現在のファイル、最後の Copilot の応答、または特定のコード ブロックである可能性がある場合は、"何が行われるか" を尋ねないでください。 代わりに、次のように具体的に指定します。

  • createUser 関数ではどのような処理が実行されますか?
  • 最後の応答のコードは何をしますか?

あいまいさは、ライブラリにも適用できます。

  • 一般的でないライブラリを使用している場合は、ライブラリの機能について説明します。
  • 特定のライブラリを使用する場合は、ファイルの先頭に インポート ステートメントを設定するか、使用するライブラリを指定します。

関連するコードを示す

IDE で Copilot を使用してコーディング時に提案を取得する場合は、関連するファイルを開き、無関係なファイルを閉じます。 Copilot は、開いているファイルを使用して要求を理解します。

IDE で Copilot Chat を使用している場合は、ファイルを開くか、Copilot で参照するコードを強調表示します。 また、Copilot Chat が参照するファイルを指定することもできます。 たとえば、VS Code では、#file 変数または @workspace 参加要素を使用します。 IDE でファイルを参照する方法の説明については、「IDE で GitHub Copilot に質問する」を参照してください。

実験と反復処理

目的の結果が得られない場合は、プロンプトを繰り返してやり直してください。

コーディング時に Copilot を使用して提案を取得する場合は、提案を完全に削除して最初からやり直すことができます。 または、提案と要求の変更を保持できます。

Copilot Chat を使用している場合は、次の要求で前の応答を参照できます。 または、前の応答を削除して最初からやり直すこともできます。

履歴に関連性を持たせる

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

  • スレッドを使用して新しいタスクの新しい会話を開始する
  • 関連性がなくなった、または目的の結果が得られなかった要求を削除する

適切なコーディング プラクティスに従う

コードベースで Copilot に提案や説明を求めるときに必要な応答が得られない場合は、既存のコードがベスト プラクティスに従っており、読みやすいことを確認してください。 次に例を示します。

  • 一貫性のあるコード スタイルとパターンを使用する
  • 変数と関数にわかりやすい名前を使用する
  • コードにコメントを追加する
  • モジュール型のスコープ付きコンポーネントにコードをする
  • 単体テストを含めむ

Tip

Copilot を使用して、コードがベスト プラクティスに従うようにします。 たとえば、Copilot に、コメントを追加したり、大きな関数をより小さな関数に分割したりするよう依頼します。

参考資料