コンテキストがすべて: カスタム指示でAIの結果を向上
2025年3月26日 Rob Conery, @robconery.com, Burke Holland, @burkeholland
今月初め、Visual Studio Code のカスタム指示の一般提供を発表しました。カスタム指示は、Copilot にチームのワークフロー、特定のスタイルの好み、モデルが知らない可能性のあるライブラリなどに関する具体的なコンテキストを与える方法です。
この記事では、カスタム指示とは何か、GitHub Copilot での結果を大幅に向上させるために今日からどのように使用できるか、そして今日試すことができる「プロンプトファイル」と呼ばれる真新しいプレビュー機能について詳しく説明します。
よりシンプルな Markdown ファイルで、より良い結果を得るプロンプト
GitHub Copilot を使用すると、開発プロセスを大幅に加速できますが、効果的なプロンプトを作成するには学習曲線があります。 目的の適切な回答を得るには数回試行錯誤が必要になる場合があり、通常は質問やプロンプトを言い換えることを意味します。 それでも、Copilot はワークフローをスピードアップします!
しかし、GitHub Copilot をニーズに合わせて「調整」できることをご存知でしたか? シンプルな Markdown ファイルを使用することで、プロジェクトをより良く理解するのに役立つ特定の指示を Copilot に提供できます。 この記事では、VS Code で新しくリリースされた機能であるカスタム指示の作成と使用のプロセスについて説明します。
これを試してください: プロジェクトに .github/copilot-instructions.md
というファイルを作成します。 このファイルには、Copilot がプロジェクトをより良く理解するのに役立つ指示が含まれます。 これは Copilot によって自動的に認識されるため、機能させるために特別な操作を行う必要はありません。
これらの指示をファイルに追加します
# Copilot Instructions
This project is a web application that allows users to create and manage tasks. The application is built using React and Node.js, and it uses MongoDB as the database.
## Coding Standards
- Use camelCase for variable and function names.
- Use PascalCase for component names.
- Use single quotes for strings.
- Use 2 spaces for indentation.
- Use arrow functions for callbacks.
- Use async/await for asynchronous code.
- Use const for constants and let for variables that will be reassigned.
- Use destructuring for objects and arrays.
- Use template literals for strings that contain variables.
- Use the latest JavaScript features (ES6+) where possible.
タイトルは厳密には必須ではありませんが、ファイルの目的を明確にするのに役立ちます。 残りのコンテンツは、Copilot がプロジェクトをより良く理解するのに役立つ一連の指示です。 これらの指示は、プロジェクトのニーズに合わせてカスタマイズできます。
次に、チャットビューを開き、tail recursion
のような非常に簡潔なコマンドでプロンプトを表示します。 「JavaScript で末尾再帰を行うにはどうすればよいですか」などの質問をする必要はありません。 tail recursion
と入力して Enter キーを押すだけです。 Copilot がプロジェクトのコンテキストを理解し、関連性のある回答を提供することに注目してください。
Copilot が、はるかに小さいプロンプトを使用したにもかかわらず、期待どおりの形式 (2 スペース、camelCase など) で、より詳細な回答を提供したことに注目してください。
それがカスタム指示を使用する力です! しかし、できることはもっとたくさんあります...
すべてをカスタマイズ!
GitHub Copilot は、コミットメッセージの生成、選択したコードのレビュー、さらにはテストの生成など、多くの優れた機能を VS Code に追加します!
これらはすべて役立ちますが、これらのことを行う独自の方法がある可能性があります。 朗報は、ワークスペース内のいくつかの設定をオーバーライドすることで、それらをパーソナライズできることです。
これを試してください: コマンドパレットを開き (⇧⌘P (Windows, Linux Ctrl+Shift+P))、「ワークスペース設定」というフレーズを入力します。 [基本設定: ワークスペース設定を開く (JSON)] というメニューオプションが表示されるはずです。 そのオプションを選択し、次の設定をワークスペースに追加します
{
"github.copilot.chat.commitMessageGeneration.instructions": [
{
"text": "Be extremely detailed with the file changes and the reason for the change. Use lots of emojis."
}
]
}
settings.json
ファイルを保存して閉じます。 アクティビティバーのソース管理アイコンに、ファイルが変更されたことが示されるはずです。 Git リポジトリのないテストディレクトリで作業している場合は、ソース管理ビューから直接リポジトリを作成できます。 [リポジトリの初期化] ボタンを選択し、指示に従ってください。
ここからが面白いところです: ソース管理ビューを開き、コミットメッセージ入力フィールドのスパークルアイコンを選択します。 これは、Copilot にコミットメッセージを生成するように指示します。 生成されたコミットメッセージが非常に詳細で、多くの絵文字を使用していることに注目してください!
settings.json
ファイルの指示をコメントアウトし、再度コミットメッセージを生成します。 絵文字をまったく使用していない、はるかに詳細でないコミットメッセージが表示されるはずです。
適切で詳細なコミットメッセージを書くことは、習得に時間がかかるスキルです。 しかし、Copilot を使用すると、時間を大幅に節約し、より良いメッセージを作成できます。
カスタム指示を全面的に活用する
コーディング標準が Markdown 以外の異なる形式の個別のファイルにある場合があります。 JavaScript 用、Python 用、Go 用のものがそれぞれあるかもしれません。 データベースの操作方法に関する標準 (使用するデータ型、命名規則、接続文字列の処理など) もあるかもしれません。
これらすべてを 1 つのファイルにまとめる必要はありません。 それらを個別に保持し、Copilot を使用してすべてを支援してもらうことができます!
試してみましょう! .vscode/settings.json
ファイル (ワークスペース設定) を開き、次の設定を追加します
{
"github.copilot.chat.codeGeneration.instructions": [
{
"file": "./docs/javascript-styles.md"
},
{
"file": "./docs/database-styles.md"
}
]
}
これは、Copilot に docs
ディレクトリ内の javascript-styles.md
と database-styles.md
の 2 つのファイルを探すように指示しています。 必要なだけファイルを追加でき、Copilot は指定した順序でそれらを探します。
現在進行中のスプリントの仕様など、好きなファイルをここに追加できます。 Gherkin 仕様をカスタム指示として追加する人も見かけました!
お試しください!
モデルのトーンを変更する
モデルは過度に丁寧になる傾向があります。 彼らはよく謝罪し、何か間違っていると伝えても、自分自身と自分が行った決定をほとんど擁護しません。 仕事を成し遂げようとしているとき、これは迷惑になる可能性があります。 モデルの過度に親切なトーンを、応答方法に関するいくつかの指示でオーバーライドできます。
- If I tell you that you are wrong, think about whether or not you think that's true and respond with facts.
- Avoid apologizing or making conciliatory statements.
- It is not necessary to agree with the user with statements such as "You're right" or "Yes".
- Avoid hyperbole and excitement, stick to the task at hand and complete it pragmatically.
モデルには、否定的な指示ではなく、常に肯定的な指示を与えることが重要です。モデルは、何をすべきかを知る必要があり、何をしてはいけないかを知る必要はありません。 「〜しないでください」と言う代わりに、「避ける」と言うことができます。
実験して楽しんでください! あるプログラマーは、テストスイートを盛り上げるために、俳句でテストを生成するのが好きだと報告しました。 これは少し極端に思えるかもしれませんが、趣味のプロジェクトに取り組んでいる場合は、試してみてはどうでしょうか? 次のような指示を追加できます
- Generate tests in haiku format.
- Use 5-7-5 syllable structure.
- Use nature themes and imagery.
もう一つ...
GitHub Copilot は、コードファイルもカスタム指示として理解できます! たとえば、SQL ファイルがある場合は、それを設定に追加すると、Copilot はそれを使用してデータアクセスコードの生成を支援します。
気に入っている特定のデータアクセスツールがある場合は、プロジェクトにサンプルを追加すると、Copilot はデータアクセスコードを生成するときにそれを使用します。
試してみてください! これは、私たちのチームメンバーの 1 人が PostgreSQL データベース用の Sequelize モデル (Node.js ORM) を生成するために使用した例です
//Template for a Sequelize model
const { DataTypes, Model } = require('sequelize');
class User extends Model {
//static or factory methods
//instance methods
}
const init = function(sequelize){
User.init({
//schema goes here
}, {
hooks: {},
tableName: "users"
underscored: true,
sequelize
})
}
exports.createUser = function(sequelize){
init(sequelize);
return User;
}
このファイルを設定で参照すると、GitHub Copilot はこのテンプレートを SQL ファイルとともに使用して、プロジェクトのモデルを生成します。 これは編集モードまたは質問モードのどちらでも実行できます。 プロンプト generate the data access for the project
を使用するだけで、あら不思議!
プロンプトファイルの紹介
プロンプトファイルを使用すると、自分自身とチームのために再利用可能なプロンプトを作成できます。 これは、一貫性を強化すると同時に、面倒になる可能性のあるプロンプトを減らすのに役立ちます。
たとえば、データベーススキーマに基づいてインターフェイスを作成する再利用可能なプロンプトを作成したいとします。 データベーススキーマを含むプロンプトファイルを作成できます。 Copilot は、それを実行するための SQL スクリプトを喜んで生成します。
プロンプトファイルは .github/prompts
ディレクトリに配置され、*.prompt.md
形式の名前を持つ Markdown ファイルのみです。
データベースの説明を含む .github/prompts/database_users.prompt.md
があるかもしれません。 たとえば
# User Authentication
Our application will have `users` with the following information:
- The standard user information, including: `name`, `email` (unique).
- A link for a "magic" login, which will be a `GUID` as well as the expiration date for the link.
- Social login account IDs for Microsoft, GitHub, and Google.
- The timestamp of the last login.
- The timestamp for when the user was created.
次に、インターフェイスを生成する指示を含む generate-interface.prompt.md
という別のプロンプトファイルを作成できます。 プロンプトファイルは相互に参照できるため、データベーススキーマをシンプルな Markdown リンクとしてこのプロンプトファイルに渡すことができます。
Generate a TypeScript interface for the table specified by the user. Refer to the [user schema](database_users.prompt.md).
これらのプロンプトファイルをチャットで使用するには、添付ボタン (ペーパークリップ) を使用するか、⌥⌘/ (Windows, Linux Ctrl+Alt+/) を使用します。 メニューから [プロンプト] を選択し、使用するプロンプトファイルを選択します。 generate-interface.prompt.md
ファイルを使用すると、database_users.prompt.md
ファイルが自動的にプルインされることに注目してください。
結論
VS Code はカスタマイズ可能なアシスタントであり、適切に構成すると、チームのワークフローに不可欠な一部になる可能性があります。 カスタム指示を使用すると、開発者が制御できるようになります。
ハッピーコーディング!