Skip to main content

GitHub Copilot Chat の回答のカスタマイズについて

好みや要件に合わせて GitHub Copilot Chat の回答をカスタマイズする方法について説明します。

メモ

この記事のこのバージョンでは、GitHub Web サイトのカスタム指示について説明します。 他の環境については上のタブをクリックしてください。

メモ

この記事のこのバージョンでは、VS Code 内のカスタム指示とプロンプト ファイルについて説明します。 他の環境については上のタブをクリックしてください。

メモ

この記事のこのバージョンでは、Visual Studio のカスタム指示について説明します。 他の環境については上のタブをクリックしてください。

GitHub Copilot Chat の回答のカスタマイズについて

GitHub Copilot では、十分なコンテキストを提供すれば、個人の好み、チームの作業方法、使うツール、プロジェクトの詳細などに合わせてカスタマイズされたチャットの回答を得ることができます。 チャットの質問にこのコンテキストの詳細を繰り返し追加するのではなく、この情報を自動的に追加するカスタム指示を作成できます。 追加情報はチャットには表示されませんが、Copilot が使用して、より高品質の応答を生成できます。

カスタム指示の種類

  • 個人のカスタム指示は、GitHub Web サイト全体の Copilot Chat とのすべての会話に適用されます。 好みの言語や回答スタイルなどの個別の設定を指定できるため、自分のニーズに合わせた回答を確実に受け取ることができます。
  • リポジトリのカスタム指示は、特定のリポジトリのコンテキスト内の会話に適用されます。 プロジェクト固有のコーディング標準、フレームワーク、またはツールを定義するのに役立ちます。 たとえば、リポジトリで TypeScript と特定のライブラリを使うように指定し、すべての共同作成者に対して一貫性のある回答を確保できます。
  • Organization のカスタム指示 (パブリック プレビュー) は、GitHub Web サイト上の organization のコンテキスト内の会話に適用されます。 共通言語やセキュリティ ガイドラインなど、organization 全体の設定を適用するのに最適です。 Organization のカスタム指示は、Copilot Enterprise サブスクリプションを持つ organization の organization 所有者のみが設定できます。

GitHub Copilot は、チームの活動方法、使用するツール、またはプロジェクトの詳細に合わせて調整されたチャット応答を提供できます (そのために十分なコンテキストを指定した場合)。 このコンテキストの詳細をチャットの質問に繰り返し追加するのではなく、この情報を自動的に追加するファイルをリポジトリ内に作成できます。

VS Code で GitHub Copilot Chat にコンテキストと指示を提供するには、次の 2 種類のファイルを使用できます。

  • リポジトリ カスタム指示を使うと、リポジトリのコンテキストで行われる会話に適用されるリポジトリ全体の指示とユーザー設定を、1 つのファイルで指定できます。
  • プロンプト ファイル (パブリック プレビュー) を使うと、共通のプロンプト指示と関連するコンテキストを Markdown ファイル (*.prompt.md) に保存し、後でそれをチャット プロンプトで再利用できます。 プロンプト ファイルは、VS Code でのみ使用できます。

カスタム命令は、各 AI ワークフローにコードベース全体のコンテキストを追加するのに役立ちますが、プロンプト ファイルを使うと、特定のチャット操作に命令を追加できます。

GitHub Copilot は、チームの活動方法、使用するツール、またはプロジェクトの詳細に合わせて調整されたチャット応答を提供できます (そのために十分なコンテキストを指定した場合)。 このコンテキストの詳細をチャットの質問に繰り返し追加するのではなく、この情報を自動的に追加するカスタム指示ファイルをリポジトリ内に作成できます。 追加情報はチャットには表示されませんが、Copilot が使用して、より高品質の応答を生成できます。

カスタム指示の使用

カスタム指示は自然言語の指示で構成された、短い自己完結型の文章である場合に最も効果的です。 個人、リポジトリ、(使用できる場合) organization のいずれのレベルで指示を追加するかを選ぶときは、指示を適用するスコープを考慮してください。

メモ

  • 複数の種類のカスタム命令を会話に適用できます。 個人用命令は最も優先順位が高く、その後にリポジトリ命令、最後に organization 用命令の順になります。 ただし、関連するすべての命令セットは引き続き結合され、Copilot Chat に提供されます。
  • 可能な限り、競合する命令セットを提供しないようにする必要があります。 回答の品質に問題がある場合は、リポジトリ命令を一時的に無効にすることもできます。 「GitHub Copilot のリポジトリ カスタム命令を追加する」をご覧ください。

カスタム指示の種類ごとに、一般的なユース ケースと例を次に示します。

  • 個人のカスタム指示:
    • 優先する個別の言語: Always respond in Portuguese.
    • 個別の回答のユーザー設定: Explain a single concept per line. Be clear and concise.
  • リポジトリのカスタム指示:
    • コーディング標準: Use early returns whenever possible.
    • フレームワーク: Use Vue with the PrimeVue library. または Use Typescript rather than Javascript.
    • コード スタイルの基本設定: Use camel case for variable names.
  • Organization のカスタム指示:
    • 特定の質問に対する回答方法説明します: For questions related to security, use the Security Docs Knowledge Base or advise people to consult with #security on Slack.
    • 1 つの言語のみを使う会社の優先する言語: Always respond in Portuguese.
    • Organization 全体の設定: Do not generate code blocks in responses.

リポジトリのカスタム指示について

リポジトリのカスタム指示は、リポジトリ内に作成する 1 つのファイル .github/copilot-instructions.md で構成されます。 ファイルに追加する指示は、チャットの質問を補完するコンテキストや関連情報を追加する、短い自己完結型の文章にすることをお勧めします。

一般的な使用用途は次のとおりです。

  • テストの生成。 特定のテスト フレームワークの使用を指定するなど、テストの生成に関する指示を作成します。
  • コード レビュー。 コード内の特定のエラーを探すようにレビュー担当者に指示するなど、コードのレビューに関する指示を指定します。
  • コミット メッセージの生成。 コミット メッセージを生成する手順 (形式や含める情報の種類など) を記述します。

This example of a .github/copilot-instructions.md file contains three instructions for Copilot.

We use Bazel for managing our Java dependencies, not Maven, so when talking about Java packages, always give me instructions and code samples that use Bazel.

We always write JavaScript with double quotes and tabs for indentation, so when your responses include JavaScript code, please follow those conventions.

Our team uses Jira for tracking items of work.

プロンプト ファイルについて

メモ

プロンプト ファイルは パブリック プレビュー 段階であり、変更される可能性があります。

プロンプト ファイルを使うと、追加のコンテキストを含む再利用可能なプロンプト命令を作成し、共有することができます。 プロンプト ファイルはワークスペースに格納される Markdown ファイルです。Copilot Chat でプロンプトを記述する既存の形式 (たとえば、Rewrite #file:x.ts) を模倣したものです。 これにより、自然言語命令、追加のコンテキストだけでなく、依存関係としての他のプロンプト ファイルへのリンクも組み合わせて使用することができます。

一般的な使用用途は次のとおりです。

  • コードの生成。 コンポーネント、テスト、または移行 (React フォーム、API モックなど) 用の再利用可能なプロンプトを作成します。
  • ドメイン専門知識。 プロンプトを通じて、セキュリティ対策やコンプライアンス チェックなどの専門知識を共有します。
  • チーム コラボレーション。 仕様とドキュメントを参照して、パターンとガイドラインを文書化します。
  • オンボード。 複雑なプロセスやプロジェクト固有のパターンにはステップバイステップ ガイドを作成します。

ワークスペースには複数のプロンプト ファイルを含めることができます。そのそれぞれに異なる目的のプロンプトを定義します。

次の例は、プロンプト ファイルの使用方法を示しています。

  • New React form.prompt.md - React を使ってフォームを生成する再利用可能なタスクの命令が含まれています。

    Your goal is to generate a new React form component.
    
    Ask for the form name and fields if not provided.
    
    Requirements for the form:
    - Use form design system components: [design-system/Form.md](../docs/design-system/Form.md)
    - Use `react-hook-form` for form state management:
      - Always define TypeScript types for your form data
      - Prefer *uncontrolled* components using register
      - Use `defaultValues` to prevent unnecessary rerenders
    - Use `yup` for validation:
      - Create reusable validation schemas in separate files
      - Use TypeScript types to ensure type safety
      - Customize UX-friendly validation rules
    
  • API security review.prompt.md - REST API のセキュリティ プラクティスに関する再利用可能な情報が含まれており、REST API のセキュリティ レビューを行うために使用できます。

    Secure REST API review:
    - Ensure all endpoints are protected by authentication and authorization
    - Validate all user inputs and sanitize data
    - Implement rate limiting and throttling
    - Implement logging and monitoring for security events
    …
    

リポジトリのカスタム指示について

リポジトリのカスタム指示は、リポジトリ内に作成する 1 つのファイル .github/copilot-instructions.md で構成されます。 ファイルに追加する指示は、チャットの質問を補完するコンテキストや関連情報を追加する、短い自己完結型の文章にすることをお勧めします。

一般的な使用用途は次のとおりです。

  • テストの生成。 特定のテスト フレームワークの使用を指定するなど、テストの生成に関する指示を作成します。
  • コード レビュー。 コード内の特定のエラーを探すようにレビュー担当者に指示するなど、コードのレビューに関する指示を指定します。
  • コミット メッセージの生成。 コミット メッセージを生成する手順 (形式や含める情報の種類など) を記述します。

This example of a .github/copilot-instructions.md file contains three instructions for Copilot.

We use Bazel for managing our Java dependencies, not Maven, so when talking about Java packages, always give me instructions and code samples that use Bazel.

We always write JavaScript with double quotes and tabs for indentation, so when your responses include JavaScript code, please follow those conventions.

Our team uses Jira for tracking items of work.

次のステップ