本日はVisualStudioCodeの学習枠です。
VisualStudioCodeのGitHubCopilotのドキュメントを読みながら実際に操作を試してみました。
前回記事
以下の前回記事の続きです。
bluebirdofoz.hatenablog.com
Prompt engineering for Copilot Chat
以下のPrompt engineering for Copilot Chatドキュメントを日本語訳しながら実行時のキャプチャをしていきます。
code.visualstudio.com
Copilot Chatのプロンプトエンジニアリング
この記事ではVisual Studio CodeのCopilot Chatからより適切で関連性の高い応答を取得するためのプロンプトを作成するためのヒントについて説明します。
プロンプトエンジニアリングまたはプロンプトクラフティングはAIについて話すときによく耳にするフレーズで、どのような情報がどのようにパッケージ化され、AI APIエンドポイントに送信されるかを指します。
Copilotのインライン提案を最大限に活用
GitHub Copilot拡張機能はより効率的にコーディングするのに役立つ提案を自動的に表示します。
Copilotが最善の提案を出すのを助けるためにできることがいくつかあります。
Copilotにコンテキストを提供する
Copilotは自分が何をしているのか、何に助けを求めているのかを知るのに十分なコンテキストが与えられた場合に大きな効果を発揮します。
特定のプログラミングタスクについて同僚にコンテキストを提供するのと同じように、Copilotでも同じことができます。
開いているファイル
コード補完の場合、Copilotはエディタで現在のファイルと開いているファイルを調べて、コンテキストを分析して適切な提案を作成します。
Copilotの使用中に関連ファイルをVS Codeで開いておくと、このコンテキストを利用してCopilotはプロジェクトの全体像を把握できます。

トップレベルのコメント
作業中のファイルの最上位のコメントはCopilotが作成している全体的なコンテキストを理解するのに役立ちます。

適切なインクルードと参照
作業に必要なインクルードまたはモジュール参照は手動で設定することをお勧めします。
どのような依存関係をインクルードする必要があるかはユーザが一番よく知っているはずです。
これは提案を作成する際に使用するフレームワーク、ライブラリ、およびそれらのバージョンをCopilotに知らせるのにも役立ちます。
次のTypeScriptの例ではaddメソッドの出力をログに記録します。
参照を設定していない場合、Copilotはconsole.logの使用を提案します。
class Calc {
add(a: number, b: number): number {
// log the result of the addition
console.Log('result:', a + b); // <-このような提案が行われれる
return a + b;
}
}一方、Log4jsへの参照を追加すると、Copilotは出力のロギングにそのフレームワークを使用することを提案します。
import * as log4js from 'log4js';
class Calc {
add(a: number, b: number): number {
// log the result of the addition
Log4js.getLogger().info('result:' + (a + b)); // <-このような提案が行われれる
return a + b;
}
}
意味のある関数名
fetchData()というメソッド名があまり意味がないように、Copilotの役にも立ちません。
意味のある関数名を使用することでCopilotはあなたが望むことを提供することができます。
具体的でスコープの広い関数コメント
関数名は過度に長くならないように説明的である必要があります。
関数のコメントはCopilotが知る必要がある詳細を入力するのに役立ちます。
Prime Copilotとサンプルコード
Copilotを正しい結果に導く1つのコツは探しているものに近いサンプルコードをコピーして開いているエディタに貼り付けることです。
小さな例を提供することでCopilotが達成したい言語とタスクに一致する候補を生成するのに役立ちます。
Copilotが実際に使用するコードを提供し始めたらファイルからサンプルコードを削除できます。
これはデフォルトで古いコード候補が表示される場合にCopilotを新しいバージョンのライブラリにジャンプスタートさせるのに特に役立ちます。
一貫性を保ち、品質基準を高く保つ
Copilotは既存のパターンに従った提案を生成するために、"garbage in, garbage out"という格言が適用されます。
常に高い品質水準を保つには訓練が必要です。
何かを動作させるために素早く緩いコーディングをしているときは「ハッキング」モードでCopilotの補完を無効にするとよいでしょう。
Copilotステータスメニューから一時的に補完を無効にすることができます。
Copilotステータスバーの項目を選択してCopilotステータスメニューのドロップダウンを表示し、入力候補を完全に無効にすることができます。
