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