GitHub の GitHub Copilot チャット について
GitHub の GitHub Copilot チャット は、GitHub Copilot との対話を可能にするチャット インターフェイスであり、GitHub 内でコーディング関連の質問をすると回答を受け取ることができます。
チャット インターフェイスを使用すると、ドキュメントに移動したり、オンライン フォーラムを検索したりする必要なく、コーディング情報とサポートにアクセスできます。
メモ
Copilot チャット は、Visual Studio Code、Visual Studio、JetBrains IDE スイートでも使用できます。 ただし、これらの IDE で使用できる機能は、GitHub で使用できる機能とは異なります。
GitHub Copilot チャット は、構文、プログラミングの概念、テスト ケース、デバッグなど、さまざまなコーディング関連の質問に答えることができます。 GitHub Copilot チャット は、コーディング以外の質問に答えたり、コーディング以外のトピックに関する一般的な情報を提供したりするようには設計されていません。
GitHub の Copilot チャット でサポートされている主な言語は英語です。
GitHub Copilot チャット は、自然言語処理と機械学習を組み合わせて使うことで機能し、質問を理解して回答を提供します。 このプロセスは、いくつかの手順に分けることができます。
入力処理
ユーザーからの入力プロンプトは、Copilot チャット システムによって前処理され、コンテキスト情報 (現在の日時やユーザーが現在表示しているリポジトリの名前など) と組み合わせて、大規模言語モデルに送信されます。 ユーザーによる入力は、コード スニペットまたはプレーン ランゲージの形式をとることができます。
大規模な言語モデルではプロンプトが表示され、追加のコンテキスト (GitHub に格納されているリポジトリ データや Bing からの検索結果など) が収集され、プロンプトに基づいた応答が提供されます。 このシステムは、コーディング関連の質問にのみ対応することを目的としています。
言語モデルの分析
その後、前処理されたプロンプトが、大量のテキスト データでトレーニングされたニューラル ネットワークである Copilot チャット 言語モデルを通過します。 言語モデルにより、入力プロンプトが分析されます。
応答の生成
言語モデルによって、入力プロンプトとそれに提供されたコンテキストの分析に基づいた応答が生成されます。 言語モデルでは、追加のコンテキスト (GitHub に格納されているリポジトリ データ、Bing からの検索結果など) が収集され、プロンプトに基づいた応答が提供されます。 この応答は、生成されたコード、コードの提案、または既存のコードの説明の形式をとることができます。
出力の形式
Copilot チャット によって生成された応答は書式設定され、ユーザーに表示されます。 Copilot チャット では、生成された応答をわかりやすくするために、構文の強調表示、インデント、その他の書式設定機能を使用できます。 ユーザーからの質問の種類に応じて、ソース コード ファイル、問題、Bing 検索結果、ドキュメントなど、モデルが応答を生成するときに使用したコンテキストへのリンクも提供される場合があります。
Copilot チャット は、質問に最も関連性の高い回答を提供することを目的としています。 ただし、お探しの回答が必ず提供されるとは限りません。 Copilot チャット のユーザーは、システムによって生成された応答を確認して検証し、正確かつ適切であることを確認する必要があります。 さらに、製品開発プロセスの一環として、Copilot チャット の安全性を理解し、改善するためにレッド チームを編成しています。 入力プロンプトと出力候補は、コンテンツフィルターを通して処理されます。 コンテンツ フィルタリング システムは、有害、不快、またはトピック外のコンテンツを含む特定のカテゴリのコンテンツに対する出力を検出して防止します。 Copilot チャット のパフォーマンス向上の詳細については、「Copilot チャット のパフォーマンスの向上」を参照してください。
Copilot チャット のユース ケース
Copilot チャット は、さまざまなシナリオでコーディング支援を提供できます。
コーディングの質問への回答
Copilot チャット に特定のコーディングの問題に関するヘルプや説明を求めると、自然言語形式またはコード スニペット形式で応答を受け取ることができます。
Copilot チャット によって生成される応答では、モデルのトレーニング データセット、Bingからの検索結果、リポジトリ内のコードを使用して質問に回答できます。
これにより、一般的なコーディング タスクと課題のガイダンスとサポートが提供されるため、プログラマにとって便利なツールです。
コードの説明と改善点の提案
Copilot チャット は、コードの機能と目的に関する自然言語の説明を生成して、選んだコードを説明するのに役立ちます。 これは、コードの動作を理解したい場合や、コードのしくみを理解する必要がある技術以外の利害関係者にとって便利です。 たとえば、コード エディターで関数またはコード ブロックを選んだ場合、Copilot チャット は、コードの動作およびシステム全体に適合する方法について、自然言語の説明を生成できます。 これには、関数の入力および出力パラメーター、その依存関係、大規模なアプリケーションでの目的などの情報を含めることができます。
Copilot チャット は、エラーやエッジ ケースの処理の改善や、コードをより読みやすくするための論理フローの変更など、選んだコードに対する潜在的な改善を提案することもできます。
説明を生成し、関連ドキュメントを提案することで、Copilot チャット を使用すると、選んだコードを理解できるようになるため、コラボレーションが向上し、ソフトウェア開発がより効果的になる可能性があります。 ただし、生成された説明とドキュメントが常に正確または完全であるとは限らないので、Copilot チャット の出力を確認し、場合によっては修正する必要があることに注意してください。
コード修正の提案
Copilot チャット では、エラーまたは問題のコンテキストに基づいてコード スニペットと解決策を提案して、コード内のバグの修正を提案できます。 これは、バグの根本原因の特定に苦労している場合や、それを修正する最善の方法についてのガイダンスが必要な場合に便利です。 たとえば、コードでエラー メッセージまたは警告が生成された場合、Copilot チャット は、エラー メッセージ、コードの構文、周囲のコードに基づいて修正候補を提案できます。
問題を解決し、コードベースに組み込むことができるコード スニペットを生成する可能性がある変数、制御構造、または関数呼び出しに対する変更が、Copilot チャット によって提案されます。 ただし、提案される修正プログラムが常に最適または完全であるとは限らないので、提案を確認してテストする必要があることに注意することが重要です。
コーディング タスクの計画
Copilot チャット では、GitHub の問題を読み取って要約し、それに関する質問に回答し、次の手順を提案することができます。 これは、多くのコメントで長く複雑な問題があり、すぐに理解したい場合、また次に何をすべきかを把握したい場合に役立ちます。
ただし、Copilot チャット の回答と概要が常に正確または完全であるとは限らないため、正確性については Copilot チャット の出力の確認が必要であることに注意してください。
リリース、ディスカッション、コミットに関する情報を把握する
Copilot チャット は、特定のリリースで何が変更されたかを確認するのに役立ち、ディスカッションの情報を要約し、特定のコミットの変更を説明することができます。 これは、たとえばプロジェクトを初めて使用する場合、ディスカッションをすぐに理解したい場合、他の人が書いたコードに取り組む必要がある場合に便利です。 ただし、Copilot チャット のリリース、ディスカッション、コミットの概要は、必ずしも正確または完全であるとは限りません。
Copilot チャット のパフォーマンスの向上
Copilot チャット は、Q&A、コード生成、コード分析、コード修正などの幅広い実用的なアプリケーションをサポートすることができます。それらのパフォーマンス メトリックと軽減戦略はさまざまです。 パフォーマンスを向上させ、Copilot チャット の制限事項の一部に対処するために、さまざまな手段を採用できます。 Copilot チャット の制限事項の詳細については、「GitHub Copilot チャット の制限事項」を参照してください。
プロンプトをトピックに沿ったものにする
Copilot チャット は、コーディングのみに関連するクエリに対処することを目的としています。 そのため、プロンプトをコーディングの質問またはタスクに限定すると、モデルの出力品質が向上する可能性があります。
Copilot チャット は置き換えではなくツールとして使う
Copilot チャット はコードを生成するための強力なツールですが、人間によるプログラミングの代わりではなく、ツールとして使用することが重要です。 Copilot チャット によって生成されたコードを常に確認してテストし、要件を満たしていて、エラーやセキュリティ上の懸念がないことを確認する必要があります。
セキュリティで保護されたコーディングとコード レビュー プラクティスを使用する
Copilot チャット は構文的に正しいコードを生成できますが、常に安全であるとは限りません。 Copilot チャット の制限に対処するには、ハードコーディングされたパスワードや SQL インジェクションの脆弱性を避け、コード レビューのベスト プラクティスに従うなど、安全なコーディングのベスト プラクティスに常に従う必要があります。
フィードバックを提供する
メモ
Copilot pull requestの要約 に関するフィードバックを GitHub に提供する機能は、Enterprise 設定によって異なります。 詳しくは、「Enterprise 内で GitHub Copilot のポリシーと機能を管理する」をご覧ください。}
GitHub の Copilot チャット で問題や制限が発生した場合は、各チャット応答の下にあるサムダウン アイコンをクリックしてフィードバックを提供することをお勧めします。 これは、開発者がツールを改善し、懸念事項や制限事項に対処するのに役立ちます。
最新情報を入手する
Copilot チャット は新しいテクノロジであるため、時間の経過と共に進化する可能性があります。 GitHub の GitHub Copilot チャット の場合、常に最新の製品エクスペリエンスにアクセスできます。 新たに発生する可能性があるセキュリティ リスクやベスト プラクティスについては、常に最新の情報を入手する必要があります。
GitHub Copilot チャット の制限
Copilot チャット の使用時のパフォーマンス レベルは、コードベースや入力データなどの要因によって変わる可能性があります。 次の情報は、Copilot チャット に適用されるシステム制限とパフォーマンスに関する主な概念を理解するのに役立ちます。
制限付きのスコープ
Copilot チャット は、大量のコードでトレーニングされていますが、まだスコープが限られており、より複雑なコード構造やあいまいなプログラミング言語を処理できない場合があります。 各言語で、受け取る提案の品質は、その言語のトレーニング データの量と多様性によって異なります。 たとえば、JavaScript は、パブリック リポジトリで適切に表現されており、GitHub Copilot でサポートされている最適な言語の 1 つです。 パブリック リポジトリの表現が少ない言語は、Copilot チャット での支援がより困難になる場合があります。 さらに、Copilot チャット では、書き込まれるコードのコンテキストに基づいてのみコードを提案できるため、より大きな設計やアーキテクチャの問題を特定できない場合があります。
潜在的なバイアス
Copilot のトレーニング データ (既存のコード リポジトリから取得) と大規模な言語モデルによって収集されたコンテキスト (Bing 検索結果など) には、ツールによって永続化される場合があるバイアスとエラーが含まれていることがあります。 さらに、Copilot チャット は、特定のプログラミング言語やコーディング スタイルに偏っているおそれがあり、最適ではない、または不完全なコード提案につながる場合があります。
セキュリティ リスク
Copilot チャット は、書き込まれるコードのコンテキストに基づいてコードを生成します。これにより、慎重に使用しないと機密情報や脆弱性が公開されることがあります。 Copilot チャット を使ってセキュリティを重視するアプリケーション用のコードを生成する場合は、慎重に行う必要があり、常に生成されたコードを十分に確認してテストする必要があります。
パブリック コードとの一致
Copilot チャット は、確率論的な方法で新しいコードを生成できます。 トレーニング セット内のコードと一致するコードが生成される可能性は低いですが、Copilot チャット 候補には、トレーニング セット内のコードに一致するいくつかのコード スニペットが含まれている場合があります。
パブリック コードと一致する候補を無効にした場合、Copilot チャット では、GitHub のパブリック リポジトリにあるコードと一致するコードが表示されないようにするフィルターが利用されます。 ただし、独自に作成していないマテリアルを使用するコードと同じ予防措置を、その適合性を確保するための予防措置を含め、常に講じる必要があります。 これには、厳密なテスト、IP スキャン、セキュリティの脆弱性の確認などが含まれます。
パブリック コードと一致する候補を有効にした場合は、一致するコードが見つかると、Copilot チャット にメッセージが表示されます。 メッセージには、一致するコードを含む GitHub 上のリポジトリへのリンクと、検出されたライセンスの詳細が含まれています。 詳しくは、「GitHub Copilot の候補に一致するパブリック コードの検索」をご覧ください。
不正確なコード
Copilot チャット の制限事項の 1 つは、生成したコードが有効と思われるものでも、実際には意味的または構文的に正しくないか、開発者の意図を正確に反映していない場合があるということです。 不正確なコードのリスクを軽減するには、重要または機密性の高いアプリケーションを処理する場合は特に、生成されたコードを慎重に確認してテストする必要があります。 また、生成されたコードがベスト プラクティスと設計パターンに準拠し、コードベースの全体的なアーキテクチャとスタイル内に収まるように確認する必要もあります。
コーディング以外のトピックに対する不正確な応答
Copilot チャット はコーディング以外の質問に回答するようには設計されていないため、これらのコンテキストでは、回答が正確ではない場合があります。 ユーザーが Copilot チャット にコーディング以外の質問をした場合、無関係または無意味な回答が生成される場合や、または単に有用な回答を提供できないことを示す可能性があります。
Web 検索を活用して質問に答える
質問の内容によっては、GitHub Copilot チャット は、必要に応じて Bing 検索を使用して質問に答えることができます。 Copilot は、最近のイベント、新しいトレンドやテクノロジ、非常に特殊なサブジェクトについて照会があった場合、またはユーザーが Web 検索を明示的に要求した場合に Bing を使用します。 GitHub Enterprise の管理者は、エンタープライズ全体で Bing を有効にすることも、この決定を組織の管理者に委任することもできます。 詳しくは、「Enterprise 内で GitHub Copilot のポリシーと機能を管理する」をご覧ください。
Bing を活用する場合、Copilot はプロンプトの内容と追加の使用可能なコンテキストを使用して、ユーザーに代わって Bing 検索クエリを生成し、Bing Search API に送信します。 Copilot は、検索結果へのリンクとその応答を提供します。 Bing に送信される検索クエリは、Microsoft のプライバシーに関する声明によって管理されます。
GitHub Copilot
で自分のキーを持ち込んで使用する (Bring Your Own Key, BYOK)
GitHub Copilot チャット で Bring Your Own Key を使用すると、既定の Copilot モデルを超えて、サポートされているプロバイダーの大規模な言語モデルにチャット エクスペリエンスを接続できます。 サポートされているプロバイダーの例としては、Anthropic、AWS Bedrock、Google AI Studio、Microsoft Foundry、OpenAI、OpenAI 互換プロバイダー、xAI などがあります。 選択したプロバイダーの API キーは、Copilot 設定に直接追加します。
BYOK がアクティブな場合:
-
**特徴範囲**: 選択したモデルはGitHub Copilot チャット 内で使用されます。 エージェント モードでは、BYOK によってメインの会話が行われますが、コード アプリケーションやその他のツール呼び出しなどの特定のアクションでは、GitHubでホストされるモデルがそれらのタスク用に最適化されている場合があります。 これらの組み込みモデルは、BYOK プロバイダーを介して実行されません。 -
**安全プロセス**: どのプロバイダーがアクティブであるかに関係なく、結果が表示される前に、GitHubの安全システム (コンテンツ フィルタリングを含む) を通じて応答が引き続き渡されます。 -
**品質に関する考慮事項**: 提案は、選択したプロバイダーの強みとトレーニング範囲によって異なる場合があります。 -
**データ処理**: BYOK を使用する場合、プロンプトと応答は選択したプロバイダーに送信され、そのプロバイダーのデータ保持とプライバシー ポリシーの対象となる場合があります。 GitHub は、安全性フィルター処理のためにこのデータを一時的に処理しますが、セッション期間を超えて BYOK 会話コンテンツは保持されません。 -
**お客様の責任**: お客様は以下の責任を負います。- プロバイダー API キーのセキュリティ
- 使用コストまたはクォータ
- 出力の検証
- 選択したモデルが安全性と品質の要件を満たしているかどうかを評価する
- 選択したプロバイダーの条件に準拠する
- 選択したモデルが適用される法律に準拠しているかどうかを判断する
- 人間が出力を使用して人に影響を与える意思決定を行う前に、必ずレビューするようにする。
-
**エクスポートの制限**: 特定の AI モデルは、エクスポート制御の対象となる場合があります。 選択したプロバイダーとモデルが、管轄区域での使用が承認されていることを確認します。
BYOK を使用すると、GitHubの安全インフラストラクチャの恩恵を受けながら、ニーズに最適な言語モデルを選択できます。 モデルのパフォーマンスと安全性の特性はプロバイダーに依存します。
次のステップ
GitHub の GitHub Copilot チャット の使用方法の詳細については、次を参照してください。
- 「GitHub で GitHub Copilot に質問をする」はにあります。
参考資料
-
[AUTOTITLE](/free-pro-team@latest/site-policy/github-terms/github-copilot-pre-release-terms) -
[GitHub Copilot トラスト センター](https://copilot.github.trust.page/)