アプリケーション カードとは
GitHub’s application and platform cards are intended to help you understand how our AI technology works, the choices application owners can make that influence application performance and behavior, and the importance of considering the whole application, including the technology, the people, and the environment. Application cards are created for AI applications and platform cards are created for AI platform services. These resources can support the development or deployment of your own applications and can be shared with users or stakeholders impacted by them.
As part of its commitment to responsible AI, GitHub adheres to Microsoft's six core principles: fairness, reliability and safety, privacy and security, inclusiveness, transparency, and accountability. These principles are embedded in the Responsible AI Standard, which guides teams in designing, building, and testing AI applications. Application and Platform Cards play a key role in operationalizing these principles by offering transparency around capabilities, intended uses, and limitations. For further insight, readers are encouraged to explore Microsoft’s Responsible AI Transparency Report and GitHub 条件.
1. 概要
GitHub Copilotには、提案や会話だけでなく、コードのレビュー、ユーザーに代わってアクションを実行し、アプリケーションを構築できるエージェント機能がいくつか含まれています。 このカードでは、次のエクスペリエンスについて説明します。
-
Copilot コード レビュー: GitHub.com のプル要求の相違とメタデータをレビューし、フィードバック コメントと推奨される変更を生成します。
-
Copilot クラウド エージェント: 割り当てられた問題に対応してブランチの作成、コードの記述、プル要求のオープンを行うことができる、GitHub.com 上の非同期エージェント。 クラウド エージェントは、セキュリティ スキャンが自動化された一時的なファイアウォール環境で実行されます。
-
Copilot CLI: ファイルの作成と変更、コマンドの実行、マルチステップ タスクの実行を実行できるコマンドライン ツールです。 すべてのアクションには明示的なアクセス許可プロンプトが必要であり、現在のディレクトリにスコープが設定されます。
-
Copilot SDK: 開発者が Copilot を使用してカスタム AI を利用したアプリケーションを構築できるようにするプログラム ライブラリ。 SDK は、JSON-RPC 経由で Copilot CLI と通信し、カスタム エージェント、MCP サーバー統合、ライフサイクル フック、およびセッション管理をサポートします。
-
GitHub Spark (プレビュー): エージェントがコードを記述し、開発環境でコマンドを実行するマネージド アプリ構築エクスペリエンス。 Spark はマネージド ランタイムを提供し、GitHub Models SDK を使用して推論機能を追加できます。
これらの機能は、人間による監視、出力のレビュー、責任ある使用という共通の原則を共有しますが、実行環境、アクセス許可、データ フローは異なります。 以下のセクションでは、コンテキスト内の各エクスペリエンスについて説明します。
2. 主な用語
次の一覧に、GitHub Copilot エージェントに関連する主な用語の用語集を示します。
-
Code suggestion: pull request に対するフィードバックの一環として、Copilot のコード レビューによって提案される特定のコード変更。 コード候補は、数回のクリックで適用できる変更候補として表示されます。
-
コンテンツフィルタリング:ユーザーに表示される前に、有害、不快、または安全でないコンテンツを検出してブロックするためのプロンプトと応答をスキャンする安全システム。
-
カスタム指示: リポジトリのメンテナーが設定できる、Copilot のコード レビューのフィードバックを導くための、コーディング スタイルとベスト プラクティスに関する自然言語による説明。 カスタム命令はCopilot特定のコードベースの規則と標準を理解するのに役立ちます。
-
ハルキュレーション: 言語モデルが出力を生成する現象で、妥当と思われるが、実際には正しくない、提供されたコンテキストでサポートされていない、または完全に製造されている。 コード レビューでは、存在しない問題やコードの誤解に基づく問題を強調するフィードバックとして、幻覚が現れる可能性があります。
-
大規模言語モデル (LLM): 自然言語とコードを生成、分析、変換できるテキスト データの大規模な本文でトレーニングされたニューラル ネットワークの一種。 Copilotエージェントは、1 つ以上の LLM を使用してコンテキストを処理し、応答を生成します。
-
エフェメラル開発環境: クラウド エージェント セッションごとに作成された一時的な分離コンピューティング環境。 セッションが終了すると環境が破棄され、実行の間に状態が保持されなくなります。
-
ファイアウォール: 承認されていないホストへの送信接続を防ぎ、コードまたはデータの偶発的または悪意のある流出から保護する、クラウド エージェントに対して既定で有効になっているネットワーク レベルの制御。
-
AI クレジット: Copilot機能の消費量の単位。 Copilotコード レビューを使用するたびに、AI クレジットが消費されます。
-
Permission プロンプト: Copilot CLI の対話型確認手順。エージェントが続行する前に、ファイルの変更、コマンドの実行、現在のディレクトリ外のファイルへのアクセスなどのアクションの承認をユーザーに求めます。 アクセス許可プロンプトは、ローカル エージェント実行の重要な安全メカニズムです。
-
Copilot SDK: 開発者がセッションの作成、プロンプトの送信、Copilotからのストリーミング応答の受信によって、カスタム AI を利用したアプリケーションを構築できるようにするプログラム ライブラリ (
@github/copilot-sdk)。 SDK は JSON-RPC 経由で Copilot CLI と通信します。 -
JSON-RPC: Copilot SDK と Copilot CLI の間で使用される通信プロトコル。 SDK は、モデルの相互作用とツールの実行を処理する CLI プロセスに構造化された要求を送信します。
-
カスタム エージェント (SDK): 独自のシステム プロンプト、スコープ付きツール、およびオプションの MCP サーバーを持つ SDK 内の名前付きエージェント構成。 SDK ランタイムは、ユーザーの意図に基づいてサブエージェントに自動的に委任できます。
-
Hooks (SDK): Copilot SDK のライフサイクル コールバック。これにより、開発者は、ツールの使用の前後、セッションの開始時または終了時、エラー時など、セッション中の特定のポイントにカスタム ロジックを挿入できます。
-
管理ランタイム: アプリケーションのニーズに合わせてスケーリングし、インフラストラクチャを手動で管理する必要がない、GitHub Spark によって提供されるフル マネージド ホスティング環境。
-
Spark: GitHub Spark を使用して構築されたアプリケーション。 Spark は、単純なユーティリティからフル スタック Web アプリケーションまで多岐に及び、構成可能な可視性を使用してパブリック インターネットにデプロイできます。
-
ターゲット編集: GitHub Spark の機能を使用すると、アプリケーション内の特定の要素を選択し、グローバルな変更を適用するのではなく、そのスタイル、物質、または動作を絞り込むためのプロンプトを表示できます。
3. 主な機能
ここで示す主な機能と能力は、GitHub Copilot エージェントが何を行うように設計されているか、およびサポートされている各タスクでどのように動作するかを説明しています。
-
自動コード レビュー フィードバック: ユーザーがCopilotに対してレビューを要求すると、コードの変更と関連する追加のコンテキストがスキャンされ、コードに関するフィードバックが提供されます。 フィードバックには、自然言語のコメントや、特定の行やファイルにリンクされた特定のコード候補が含まれる場合があります。
-
カスタマイズ可能なレビュー ガイダンス: Copilot のコード レビューは、コーディング スタイルやベスト プラクティスを自然言語で記述したカスタム指示によってカスタマイズできるため、フィードバックにリポジトリの慣例や標準が反映されます。
-
自動プル要求の作成: Copilotクラウド エージェントは、問題、プル要求コメント、またはCopilot Chatからタスクを取得し、ブランチを作成し、調整されたコード変更を生成して、プル要求を開くことができます。 最初のプル要求が作成されると、エージェントはフィードバックとレビューに基づいて反復処理できます。
-
エフェメラル、ファイアウォールによる実行: タスクの作業中に、クラウド エージェントは独自のエフェメラル開発環境にアクセスできます。この開発環境では、コードに変更を加えたり、自動テストを実行したり、リンターを実行したりできます。 データ流出を防ぐため、ファイアウォールは既定で有効になっています。
-
自動セキュリティ スキャン: コード生成中、クラウド エージェントは、CodeQL、シークレット スキャン、依存関係分析を使用して新しく生成されたコードのセキュリティ脆弱性を自動的に分析し、問題が導入される前に解決しようとします。
-
External 統合: クラウド エージェントは、workIQ や Microsoft 365 などの MCP や、Microsoft Teams、Linear、Slack、Jira などの外部アプリケーションから情報とコンテキストを受け取ることができ、チームはタスクを割り当て、既存のワークフロー内で進捗状況を直接追跡できます。
-
ローカル エージェント実行 (Copilot CLI): Copilot CLI は、自律的にファイルの作成と変更、コマンドの実行、マルチステップ タスクを実行できる、チャットのようなインターフェイスをターミナルに提供します。 すべてのアクションのスコープは現在のディレクトリであり、エージェントがファイルを変更したりコマンドを実行したりする前に、明示的なアクセス許可プロンプトが必要です。
-
アプリケーションビルド (Spark): GitHub Spark は、ユーザーがコードを手動で記述またはデプロイすることなく、フルスタック Web アプリケーションを作成およびデプロイするための自然言語中心の開発環境を提供します。 Spark には、アプリケーションのニーズに合わせてスケーリングするフル マネージドランタイム環境が用意されています。
-
Inference capabilities (Spark): Spark の SDK は GitHub Models とネイティブに統合されるため、モデル推論をアプリケーションに組み込むことができます。 アプリケーションに推論機能が必要であると Spark が判断した場合は、Spark SDK を使用して追加されます。
4. 使用目的
GitHub Copilot エージェントは、さまざまな業界の複数のシナリオで使用できます。 ユース ケースの例を次に示します。
-
人間によるコードレビューを補完: Copilot のコードレビューは、開発者のコードに対して迅速にフィードバックを提供することを目的としており、開発者がコードをより迅速にマージ可能な状態に整えられるようにし、全体的なコード品質の向上にもつながります。
-
コードベースのメンテナンス: クラウド エージェントは、セキュリティ関連の修正、依存関係のアップグレード、および対象となるリファクタリングに取り組むことができます。
-
機能開発: クラウド エージェントは、増分機能要求の実装、追加のテスト スイートの開発、ドキュメントの作成または更新を行うことができます。
-
新しいプロジェクトの実装: クラウド エージェントと Copilot CLI は新しい概念を実現し、開発者がアイデアをすばやく探索できるようにします。
-
環境を設定する (CLI): Copilot CLI はターミナルでコマンドを実行して、既存のプロジェクトで動作するようにローカル環境を設定できます。
-
適切なコマンドを見つける(CLI): Copilot CLI は、実行したいタスクに適したコマンドを提案し、見慣れないコマンドを自然言語で説明できます。
-
カスタム AI アプリケーション (SDK): Copilot SDK を使用すると、開発者は独自の製品やワークフローでコード生成、自然言語対話、タスク自動化にCopilotを活用するアプリケーションを構築できます。
-
マルチエージェント オーケストレーション (SDK): カスタム エージェントとサブエージェントを使用して、開発者は、複数の特殊なエージェントが、ユーザーの意図に基づく自動委任を使用して複雑なタスクで共同作業する高度なワークフローを構築できます。
-
外部ツール (SDK) を使用したアプリケーションの拡張: SDK の MCP サーバーのサポートにより、開発者はアプリケーションを外部のデータ ソースとサービスに接続でき、エージェントが実行できるタスクの範囲が広がります。
-
** Web アプリケーションの構築とデプロイ (Spark)**: GitHub Spark を使用して、自然言語を使用してフル スタック Web アプリケーションを構築できます。 Spark の統合ランタイム環境を使用すると、アカウントのアクセス許可に基づいて構成可能な可視性を使用して、これらのアプリケーションGitHubパブリック インターネットにデプロイできます。
-
迅速なプロトタイプ作成 (Spark): Spark は、開発者、デザイナー、製品マネージャー、その他のビルダーが、ゼロからアプリケーションを構築したり、複雑なモックアップを構築したりする必要なく、アイデアを迅速にプロトタイプ化するのに役立ちます。 プロトタイプは、共有を容易にするためにデプロイすることも、非公開のままにすることもできます。
5. モデルとトレーニング データ
GitHub Copilotエージェントは、さまざまな AI モデルを活用して、ユーザーに表示されるエクスペリエンスを高めるものです。 Copilotで使用できるモデルの比較については、AI モデルの比較 を参照してください。 サポートされているモデルの完全な一覧については、 AUTOTITLE を参照してください。 モデルがホストされる場所については、 GitHub Copilotのモデルのホスティング を参照してください。 GitHub Copilot Agents の基盤モデルのトレーニングに使用されたデータの詳細については、上記でリンクしている AI モデル比較と、GitHub Copilot FAQ の GitHub Copilot はどのようなデータでトレーニングされていますか? を参照してください。
Copilot コード レビューは、慎重に調整されたモデル、プロンプト、システムの振る舞いを組み合わせて使用し、幅広いコードベース全体で一貫して質の高いフィードバックを提供するよう専用に設計された製品です。 モデルを変更すると、レビュー コメントの信頼性、ユーザー エクスペリエンス、品質が損なわれる可能性があるため、モデルの切り替えはサポートされていません。 Copilot コード レビューでは、組織の [モデル] 設定ページで有効になっていないモデルを使用することがあります。
Copilot クラウド エージェントは、大規模な言語モデルを使用して、タスクの推論、コードの生成、および一時的な開発環境内のツールの活用を行います。 エージェントは、さまざまなプログラミング言語で評価されています。 英語は、プロンプトと応答でサポートされている主要な言語です。
Copilot CLI では、大規模な言語モデルを使用して、タスクの推論、コードの生成、ファイルの変更、ローカルターミナル環境でのコマンドの実行を行います。 エージェントは、さまざまなプログラミング言語で評価されています。 英語は、プロンプトと応答でサポートされている主要な言語です。
Copilot SDK は、同じ基になるモデルと機能を使用して、JSON-RPC 経由で Copilot CLI と通信します。 SDK を使用して構築されたアプリケーションでは、認証されたCopilotユーザーまたは組織で使用できるのと同じモデルが使用されます。 開発者は、独自の API キー (BYOK) を使用してカスタム モデル プロバイダーを使用することもできます。
GitHub Spark では、大規模な言語モデルを使用して、開発環境内でそのエージェントに電力を供給します。 エージェントはコードを記述し、アプリケーションをビルドするためのコマンドを実行します。 Spark の SDK は、GitHub モデルとネイティブに統合されるため、アプリケーションでモデル推論機能を組み込むことができます。 GitHub モデルで使用されるモデルの詳細については、「GitHub モデルの責任ある使用を参照してください。 Spark は、推論のためにアプリケーション内で作成するプロンプトをテストしません。含まれている機能が意図したとおりに動作することを確認する必要があります。
6. パフォーマンス
エクスペリエンス別の違い
Copilot クラウドエージェント
Copilot クラウド エージェントは、自然言語処理と機械学習の組み合わせを使用して、タスクを理解し、コードベースに変更を加えることで機能します。 このプロセスは、いくつかの手順に分けることができます。
- Prompt 処理: 問題、pull request コメント、またはCopilot Chat メッセージを通じて提供されるタスクは、他の関連するコンテキスト情報と組み合わせてプロンプトを形成します。 そのプロンプトは、処理のために大規模言語モデルに送信されます。 入力には、プレーンな自然言語、コード スニペット、または画像の形式を使用できます。
- 言語モデル分析: プロンプトは、大規模な言語モデルを介して渡されます。これは、大量のデータに対してトレーニングされたニューラル ネットワークです。 言語モデルは、タスクに関するエージェントの理由を支援し、必要なツールを活用するために、入力プロンプトを分析します。
- 応答の生成: 言語モデルは、プロンプトの分析に基づいて応答を生成します。 この応答は、自然言語の提案とコードの提案の形式を取ることができます。
- 出力形式: エージェントは初回の実行が完了すると、自身が加えた変更内容でプルリクエストの説明を更新します。 エージェントは、アクセスできなかったリソースに関する補足情報を含め、解決する手順に関する提案を提供する場合があります。 pull request 内でコメントを付けたり、エージェントに明示的にメンションしたりすることで、フィードバックを提供できます (
@copilot)。 その後、エージェントはそのフィードバックを再送信してさらに分析し、更新された変更に対応します。
Copilotクラウド エージェントは、タスク解決に最も関連性の高いソリューションを提供することを目的としています。 ただし、お探しの回答が必ず提供されるとは限りません。 お客様は、Copilotクラウド エージェントによって生成された応答が正確かつ適切であることを確認し、検証する責任を負います。
Copilot コード レビュー
Copilotコード レビューでは、コードが検査され、自然言語処理と機械学習の組み合わせを使用してフィードバックが提供されます。 このプロセスは、いくつかの手順に分けることができます。
- 入力処理: コードの変更は、他の関連するコンテキスト情報 (pull request のタイトルや本文など)、および定義されているカスタム命令と組み合わせてプロンプトを形成します。 このプロンプトは、大規模な言語モデルに送信されます。
- 言語モデルの分析: プロンプトは Copilot の言語モデルに送られます。これは、大量のテキストデータでトレーニングされたニューラル ネットワークです。 言語モデルにより、入力プロンプトが分析されます。
- 応答の生成: 言語モデルは、入力プロンプトの分析に基づいて応答を生成します。 この応答は、自然言語の提案とコードの提案の形式を取ることができます。
- 出力形式: 応答は、サポートされているエディターで直接、または GitHub.com の pull request レビューとしてユーザーに表示され、特定のファイルの特定の行にリンクされたコード フィードバックを提供します。 Copilotがコードの提案を提供している場合、提案は提案された変更として提示されます。これは数回のクリックで適用できます。
Copilot CLI (コパイロット CLI)
Copilot CLI は、自然言語処理と機械学習の組み合わせを使用して、タスクを理解し、コードベースに変更を加えることで機能します。 このプロセスは、いくつかの手順に分けることができます。
- 入力処理: 入力が関連するコンテキスト情報と組み合わされてプロンプトが形成されます。 そのプロンプトは、処理のために大規模言語モデルに送信されます。 入力は、単純な自然言語、コード スニペット、またはターミナル内のファイルへの参照の形式をとることができます。
- 言語モデル分析: プロンプトは、大規模な言語モデルを介して渡されます。これは、大量のデータに対してトレーニングされたニューラル ネットワークです。 言語モデルは、タスクに関するエージェントの理由を支援し、必要なツールを使用するために、入力プロンプトを分析します。
- 応答の生成: 言語モデルは、プロンプトの分析に基づいて応答を生成します。 この応答は、自然言語の提案、コードの提案、ファイルの変更、およびコマンドの実行の形式をとることができます。
- 出力の書式設定: 応答は書式設定され、構文の強調表示、インデント、およびその他の書式設定機能を使用して表示されます。 エージェントは、タスクを完了するために、ローカル環境でコマンドを実行し、ファイル システム内のファイルを作成、編集、または削除することもできます。 このようなすべてのアクションには、明示的なアクセス許可プロンプトが必要です。
対話型チャット ウィンドウで応答を返した後、エージェントにフィードバックを提供できます。 エージェントは、そのフィードバックを言語モデルに再送信してさらに分析し、追加の応答を返します。
Copilot SDK
Copilot SDK には、Copilotのエージェント機能へのプログラムによるインターフェイスが用意されています。 SDK でビルドされたアプリケーションは、次のプロセスに従います。
- セッションの作成: アプリケーションは SDK とのセッションを作成し、モデル、システム プロンプト、使用可能なツール、カスタム エージェント、MCP サーバー、フックを指定します。 SDK は、Copilot CLI への JSON-RPC 接続を確立します。
- プロンプト送信: ユーザー入力がセッションに送信されます。 SDK は、プロンプトを (セッション コンテキストと共に) CLI にルーティングし、言語モデルに転送します。
- エージェントの実行: タスクに関する言語モデルの理由。ツールの呼び出し、サブエージェントへの委任、または MCP サーバーへの接続が可能です。 ライフサイクル フックは各段階で起動し、アプリケーションがカスタム ロジックを挿入できるようにします。
- 応答ストリーミング: 応答はアプリケーションにストリーミングされ、インターフェイスに適した任意の形式で表示できます。 SDK は、テキスト、ツール呼び出し、エラー、完了シグナルの構造化イベントを提供します。
GitHub Spark
GitHub Spark では、エージェントベースのアプローチを使用してアプリケーションをビルドおよび変更します。 このプロセスは、いくつかの手順に分けることができます。
- Input 処理: 入力プロンプトは、Copilotによって前処理され、現在の Spark 入力からのコンテキスト情報 (現在のアプリケーションからのコード、以前のプロンプト、開発環境からのエラー ログなど) で補強され、開発環境内の大規模な言語モデル搭載エージェントに送信されます。 システムは、送信されたプロンプトに基づいてコードを生成するように設計されており、会話による対話は実行できません。 プロンプトの優先言語は英語です。
- 言語モデル分析: プロンプトは、テキスト データの大きな本文でトレーニングされたニューラル ネットワークである大規模な言語モデルを介して渡されます。 言語モデルは、タスクに関するエージェントの理由を支援し、必要なツールを活用するために、入力プロンプトを分析します。
- エージェントの実行: エージェントは開発環境で実行され、プロンプトと追加のコンテキストを受け入れ、アプリケーションの更新方法を決定します。 エージェントは、コードの記述、コマンドの実行、実行出力の読み取りを行うことができます。 機能し、正確なコードを確保するために、すべてのアクションが実行されます。 エージェントからの唯一の出力はアプリケーション コードです。
Spark は、最新の設計とセキュリティで保護されたデプロイを Spark のランタイム コンポーネントにシームレスに統合するフレームワークと SDK を使用します。 デザイン フレームワークは柔軟でモジュール式で、目的の外観に合わせてテーマを変更できます。 Spark のランタイム統合では、Web デプロイのベスト プラクティスを使用して、セキュリティで保護されたスケーラブルなデプロイを確保します。
7. 制限事項
エージェント機能GitHub Copilot制限事項を理解することは、それらが安全で効果的な境界内で使用されていることを判断するために重要です。 革新的なソリューションやアプリケーションでこれらの機能を活用することをお勧めしますが、可能なすべてのシナリオ向けに設計されたわけではないことに注意することが重要です。 ユース ケースを選択する際には、 GitHub 条件 と次の考慮事項を参照することをお勧めします。
-
見落とされたコード品質の問題: Copilot は、特に変更が大規模または複雑な場合、コード内に存在するすべての問題を見つけられないことがあります。 関連するすべての問題を確実に特定して修正するには、Copilotコード レビューを人間の慎重なコード レビューで補完する必要があります。
-
誤検知: Copilotコードレビューにはハルシネーションを起こすリスクがあり、レビュー対象のコードに実際には存在しない問題や、コードの誤解に基づく問題を指摘することがあります。 Copilotコード レビューによって生成されたコメントは、アクションを実行して変更を加える前に、慎重に確認して検討する必要があります。
-
不正確または安全でないコード提案: Copilot のコード レビューでは、コメントの一部として、具体的なコード提案が提供される場合があります。 生成されたコードは有効であるように見えますが、実際には意味的または構文的に正しくないか、コメントで特定された問題を正しく解決できない可能性があります。 さらに、Copilotによって生成されたコードには、セキュリティの脆弱性やその他の問題が含まれている可能性があります。 Copilotによって生成されたコードは、常に慎重に確認してテストする必要があります。
-
潜在的なバイアス: Copilot のトレーニング データは既存のコード リポジトリから収集されており、そこにはバイアスや誤りが含まれている可能性があり、それらがツールによって引き継がれるおそれがあります。 さらに、Copilotコード レビューは、特定のプログラミング言語やコーディング スタイルに偏りがあり、最適ではないフィードバックや不完全なフィードバックにつながる可能性があります。
-
制限付きスコープ (クラウド エージェント): クラウド エージェントによって使用される言語モデルは、コードの大規模な本文でトレーニングされていますが、まだスコープが限られており、特定のコード構造を処理できない場合や、プログラミング言語が不明瞭になる場合があります。 言語ごとに、提案の品質は、その言語のトレーニング データの量と多様性によって異なります。
-
不正確なコード (クラウド エージェント): クラウド エージェントは、有効と思われるコードを生成する可能性がありますが、実際には意味的または構文的に正しくないか、開発者の意図を正確に反映していない可能性があります。 特に重要なアプリケーションや機密性の高いアプリケーションを扱う場合は、生成されたコードを慎重に確認してテストする必要があります。
-
セキュリティ リスク (クラウド エージェント): クラウド エージェントは、リポジトリ内の問題またはコメントのコンテキストに基づいてコードと自然言語を生成します。これは、慎重に使用しないと機密情報や脆弱性が公開される可能性があります。 マージする前に、エージェントによって生成されたすべての出力を十分に確認する必要があります。
-
パブリック コードの一致 (クラウド エージェント): クラウド エージェントは、"公開されているコードに一致する提案" ポリシーが "ブロック" に設定されている場合でも、一致するコードまたは公開されているコードに近いコードを生成する場合があります。 この場合、Copilotは、一致したコードの詳細を表示するためのリンクと共に、エージェント セッション ログに一致するものを表示します。
-
Limited scope (CLI): Copilot CLI で使用される言語モデルは、コードの大規模な本文でトレーニングされていますが、まだスコープが限られており、特定のコード構造を処理したり、プログラミング言語を隠したりできない可能性があります。 言語ごとに、提案の品質は、その言語のトレーニング データの量と多様性によって異なります。
-
不正確なコード(CLI): Copilot CLI では、有効に見えるコードが生成される場合がありますが、実際には意味的または構文的に正しくなかったり、開発者の意図を正確に反映していなかったりする可能性があります。 特に重要なアプリケーションや機密性の高いアプリケーションを扱う場合は、生成されたコードを慎重に確認してテストする必要があります。
-
セキュリティ リスク (CLI): Copilot CLI では、ローカル環境のコンテキストに基づいてコードと自然言語が生成され、慎重に使用しないと機密情報や脆弱性が公開される可能性があります。 エージェントによって生成されたすべての出力を十分に確認する必要があります。
-
パブリック コード一致 (CLI): Copilot CLI では、"公開されているコードに一致する候補" ポリシーが "ブロック" に設定されている場合でも、一致するコードまたは公開されているコードに近いコードが生成される場合があります。
-
コマンド実行リスク (CLI): Copilot CLI でコマンドの実行を要求または許可する場合は、特に、推奨されるコマンドの破壊的な可能性に関して、追加の注意が必要です。 ファイルの削除またはハード ドライブのフォーマットに関するコマンドが発生する可能性があり、誤って使用した場合、問題が発生する可能性があります。 最終的には、Copilot CLI によって実行されるコマンドを担当します。
-
INherited limitations (SDK): Copilot SDK は Copilot CLI と通信するため、SDK で構築されたアプリケーションは、特定のプログラミング言語の制限付きスコープや不正確または安全でないコード生成の可能性など、同じモデル制限を継承します。
-
カスタム エージェントの複雑さ (SDK): カスタム エージェント、ツール、またはフックが正しく構成されていないと、予期しない動作が発生する可能性があります。 開発者は、カスタム エージェント構成の動作をテストおよび検証する責任があります。
-
MCP サーバー信頼 (SDK): SDK を介して接続されている MCP サーバーは、外部ソースからのツールとデータを公開できます。 悪意のあるサーバーや正しく構成されていないサーバーによって有害な動作が発生したり、機密データが公開されたりする可能性があり、接続された MCP サーバーが信頼できることを確認する必要があります。
-
BYOK モデル分散 (SDK): サードパーティのモデル プロバイダーで Bring Your Own-Key 構成を使用する場合、動作はGitHubホスト型モデルとは異なる場合があります。 開発者は、選択したプロバイダーからの応答の安全性と品質を評価する責任があります。
-
ユーザー意図の解釈 (Spark): Spark は意図の解釈において常に正しいとは限りません。 Spark の提供されるプレビューを常に使用して、アプリケーション内の正確な動作を確認する必要があります。
-
適用範囲の限定 (Spark): Spark は大量のコードや関連アプリケーションを用いて学習していますが、複雑なアプリケーションや真に新規のアプリケーションへの対応は難しい場合があります。 Spark は、一般的で個人的なアプリケーション シナリオ (生産性ツール、学習支援、生活管理ユーティリティなど) や、自然言語の指示が英語で提供される場合に最適に実行されます。
-
パブリック コードの一致 (Spark): "パブリック コードに一致する候補" ポリシーが "ブロック" に設定されている場合でも、Spark は公開されているコードに一致またはほぼ一致するコードを生成することがあります。 この場合、Copilotは、コードの元のソースを指すコード参照を提供しません。
-
セキュリティ制限 (Spark): Spark のランタイムはアプリケーションのデプロイに関するベスト プラクティスに従う一方で、コードの確率論的な生成を行います。これにより、特にトレーニング セットでこれらの脆弱性が一般的な場合に脆弱性が発生する可能性があります。 個人データまたは機密データを管理するアプリケーションを構築する際には注意が必要です。必ず、生成されたアプリケーションを詳しく確認してテストしてください。
8. 評価
パフォーマンスと安全性の評価では、有害なコンテンツを生成するリスクを特定しながら、根拠、関連性、一貫性などの要因を調べることで、AI アプリケーションが確実かつ安全に動作しているかどうかを評価します。 以下の評価は、既に実施されている安全コンポーネントを用いて行ったが、これも9に記載されている 。安全コンポーネントと軽減策。
パフォーマンスと品質の評価
GitHub Copilotエージェントは、業界標準のベンチマーク (SWE-Benchなど) と内部で開発された評価スイートの組み合わせを使用して、サポートされているサーフェス全体で評価されます。 ベンチマーク タスクは、パブリック オープンソース リポジトリと合成シナリオから提供されます。実際のユーザー クエリや顧客コードは使用されません。 各評価には、モデル出力の非決定的性を考慮する複数の独立した実行が含まれています。 主要なメトリックには、解決率 (正常に完了したタスクの割合)、トークン効率、待機時間、ツール呼び出しの信頼性などがあります。 モデルは、エラー率、応答待ち時間、集計使用パターンを使用して、運用環境で更新が行われ、継続的に監視されたときに再評価されます。
パフォーマンスと品質の評価方法
GitHub Copilot エージェントの新しいモデルは、デプロイ前に段階的な評価プロセスを受けます。 インテグレーター チームは、その表面に固有のベンチマーク スイートを実行し、バグ修正、コード生成、マルチファイル リファクタリングなどの代表的なコーディング タスクでモデルをテストします。 確立されたベースラインと既存の運用モデルに対して結果がレビューされます。 モデルは、次のステージに進む前に、解決率、トークン効率、待機時間などの主要なメトリック間でベースライン パフォーマンスを満たすか、超える必要があります。 部門横断の審査委員会は、いずれのモデルについても、ユーザー向けデプロイが承認される前に、承認するか見送るかの正式な判断を下します。
リスクと安全性の評価
AI によって生成されるコンテンツに関連する潜在的なリスクを評価することは、重大度が異なるコンテンツ リスクから保護するために不可欠です。 これには、有害なコンテンツの生成や脱獄攻撃の脆弱性のテストに対する AI アプリケーションの素因の評価が含まれます。 GitHubでは、
- 憎しみと不公平さ
- 性的
- Violence
- 自傷行為
- 保護材料
- 脱獄
- コードの脆弱性
品質と安全性に関する評価データ
当社の評価データは、 安全性 と 品質の重要な領域全体で AI アプリケーションのパフォーマンスを評価し、実際のシナリオとリスクをシミュレートするためにカスタム構築されています。 私たちは、多分野にわたる研究と専門家の意見に基づいて、懸念事項の関連評価の側面を特定することから始めます。 これらの懸念は、対象となる評価目標に変換され、評価メトリックの策定をガイドします。 safetyでは、望ましくない応答またはエッジケース応答を引き出す敵対的なプロンプトを作成し、その後、GitHubの標準との整合性を評価するためにトレーニングされた AI 支援アノテーターを使用してスコア付けされます。 品質を高めるために、取得拡張生成 (RAG) アプリケーションとエージェントの評価など、シナリオに関連するルーブリックベースのプロンプトを作成します。 データセットは、実際のユーザー シナリオをシミュレートするために、合成データセットやパブリック データセットなど、さまざまなソースからキュレーションされます。 キュレーションされたデータセットを使用すると、両方の評価が反復的に改良され、人間のアライメントが行われ、メトリックの有効性と信頼性が向上します。 この手法は、顧客が評価を使用してより優れた AI を構築する方法を反映した、反復可能で厳格な評価の基礎を形成します。
カスタム評価
Copilot のエージェント型機能には、潜在的なリスクを特定して対処するために、RAIレッドチーミングが実施されています。 当社は、これらの機能の有効性と安全性を経時的に監視し続けます。 詳細については、Microsoft セキュリティ ブログの「Microsoft AI Red Team building future of safer AI を参照してください。
9. 安全コンポーネントと軽減策
Copilot クラウドエージェント
- 特権エスカレーション制御: クラウド エージェントは、リポジトリの書き込みアクセス権を持つユーザーからの対話にのみ応答します。 エージェントによって発生したプル要求によってトリガーされるアクション ワークフローは、実行前に書き込みアクセス権を持つユーザーからの承認を必要とします。 エージェントは非表示の文字をフィルター処理します。これにより、ユーザーはコメントや問題の内容で有害な指示を非表示にすることができます。
- 制約付きアクセス許可: クラウド エージェントは、プル要求を作成しているリポジトリにのみアクセスでき、他のリポジトリにはアクセスできません。
@copilot経由でトリガーされた場合は既存のプル リクエスト ブランチに、それ以外の場合は新しいcopilot/ブランチにのみプッシュできます。 これは、Copilot が既定のブランチ (たとえば、main) に直接プッシュできないことを意味します。 エージェントは Actions 組織またはリポジトリ のシークレットにアクセスできません。copilot環境に特別に追加されたシークレットと変数のみがエージェントに渡されます。 - 追跡可能性の向上: クラウド エージェントのコミットは、共同作成者としてマークされたタスクを開始した人間と共に、Copilotによって作成されます。 これにより、エージェントによって生成されたコードと、タスクを開始したユーザーを簡単に識別できます。 クラウド エージェントのコミットは署名されているため、GitHubでは "検証済み" として表示されます。 これにより、コミットが GitHub Copilot クラウド エージェントによって行われ、改変されていないことを確信できます。 各コミット メッセージには、エージェント セッション ログへのリンクが含まれています。 これにより、エージェントが作成した任意のコミットからセッションログ全体への永続リンクが作成されるため、コードレビュー中に Copilot が変更を行った理由を把握したり、後から監査目的で追跡したりできます。
- データ流出防止用のファイアウォール: 既定では、クラウド エージェントには、誤って、または悪意のあるユーザー入力が原因で、コードやその他の機密データの流出を防ぐためのファイアウォールが有効になっています。
- セキュリティの脆弱性検出の自動化: コードの生成中に、クラウド エージェントは新しく生成されたコードを自動的に分析してセキュリティの脆弱性を検出し、それらを解決しようとします。 分析は、CodeQL (潜在的な脆弱性とエラーを特定するため)、シークレット スキャン (シークレットが導入されていないことを確認するため)、依存関係分析 (参照先の依存関係の既知の脆弱性を確認するため) を使用して実行されます。
Copilot CLI (コパイロット CLI)
- Directory スコープのアクセス: 既定では、Copilot CLI は、呼び出されたディレクトリ内および以下のディレクトリ内のファイルとフォルダーにのみアクセスできます。 エージェントが現在のディレクトリの外部にあるファイルにアクセスする場合は、アクセス許可を求められます。
- ファイルの変更を求めるメッセージが表示されます: Copilot CLI は、ファイルを変更する前にアクセス許可を要求します。 アクセス許可を付与する前に、正しいファイルが変更されていることを確認する必要があります。
- コマンド実行のプロンプト: Copilot CLI は、危険なコマンドを実行する前にアクセス許可を要求します。 実行するアクセス許可を付与する前に、これらのコマンドを慎重に確認する必要があります。
- 構成可能なアクセス許可: Copilot CLI 固有のアクセス許可またはすべてのアクセス許可を付与するには、さまざまなコマンド ライン オプション (たとえば、
--allow-tool=[TOOLS...]、--allow-all-tools、--allow-all(または対話型セッションで使用するスラッシュ コマンドと同等の/allow-all) を使用します。 詳細については、「GITHUB COPILOT CLI コマンド リファレンス」を参照してください。 通常、Copilot CLI をオートパイロット モードで使用する場合は、タスクで動作するアクティビティを承認しなくても、タスクを自律的に完了するための完全なアクセス許可を付与します。 詳細については、「GitHub Copilot CLI が自律的に動作できるようにする」を参照してください。 - セキュリティに関する考慮事項: Copilot CLI の使用時のセキュリティプラクティスの詳細については、「GITHUB COPILOT CLI について」を参照してください。
Copilot SDK
- CLI から継承された安全制御: Copilot SDK は Copilot CLI と通信し、その権限モデルと安全制御を継承します。 ツールの実行とファイルの変更には、引き続き適切なアクセス許可が必要です。
- フックベースの監視: SDK のライフサイクル フック (
onPreToolUseやonPostToolUseなど) を使用すると、開発者はツールの実行前後にカスタムの安全性チェック、監査ログ、承認ワークフローを実装できます。 - MCP サーバーの分離: MCP サーバーは個別のプロセスとして実行されます。 開発者は、セッションごとに使用できるサーバーを制御でき、外部ツール アクセスのスコープを制限できます。
- セッション スコープ: 各 SDK セッションは、独自のコンテキスト、ツール、アクセス許可で分離されます。 開発者は、各セッション内で使用できるデータと機能を制御できます。
- BYOK の責任: Bring Your Own-Key 構成を使用する場合、プロンプトと応答は構成されたプロバイダーに直接送信されます。 開発者は、選択したプロバイダーのデータ処理ポリシーを確認する責任があります。
独自のモデル プロバイダーを使用する場合のデータ処理 (CLI)
独自のモデル プロバイダーを使用するように Copilot CLI を構成すると、プロンプト、コード コンテキスト、生成された応答が、構成したプロバイダーに直接送信されます。 これらは、GitHub経由でルーティングされません。 お客様は、選択したプロバイダーのサービス利用規約とデータ処理ポリシーを確認し、遵守する責任を負います。
Telemetry
オフライン モードなしで独自のモデル プロバイダーを使用する場合、Copilot CLI は通常どおりテレメトリを GitHub に送信し続けます。 このテレメトリにはプロンプトやコードは含まれませんが、使用状況メタデータは含まれます。
COPILOT_OFFLINE環境変数を true に設定してオフライン モードを有効にすると、すべてのテレメトリが無効になります。 オフライン モードでは、Copilot CLI は、構成されたモデル プロバイダーに対してのみネットワーク要求を行います。
認証と機能の可用性
独自のモデル プロバイダー (BYOK) を使用する場合、GitHub認証は必要ありません。 GitHub認証がないと、次の機能は使用できません。
/delegate。GitHub のサーバー側 Copilot にセッションを引き継ぐもの- GitHub MCP サーバー
- GitHub コード検索
オフライン モードでは、web_fetch や GitHub Code Search などの Web ベースのツールも無効になります。
GitHubホストモデルへのフォールバックなし
モデル プロバイダーの構成が無効な場合、Copilot CLI はエラーで終了します。 GitHubホスト型モデルにはフォールバックしません。 接続拒否、認証エラー、モデルが見つからない、タイムアウトなどの一般的なエラーにより、実用的なガイダンスを含むわかりやすいメッセージが生成されます。
GitHub Spark
- コンテンツ保護: Spark には、有害、ヘイトフル、または不快なコンテンツに対する保護が組み込まれています。
- コンテンツレポート: 問題のあるコンテンツや不快なコンテンツをフィードバックを通じて報告したり、迷惑メールやスパムとして報告したりできます。 不快なコンテンツの例は、Spark の URL を使用して copilot-safety@github.com に報告する必要があります。
- セキュリティで保護されたランタイム: Spark のランタイム統合では、Web デプロイのベスト プラクティスを使用して、セキュリティで保護されたスケーラブルなデプロイを確保します。
10. GitHub Copilot のエージェント機能をデプロイし導入するためのベスト プラクティス
責任ある AI は、GitHubとその顧客の間で共有されるコミットメントです。 GitHubは、安全性、公平性、透明性を中核に AI アプリケーションを構築しますが、お客様は、独自のコンテキスト内で責任を持ってこれらのテクノロジをデプロイおよび使用する上で重要な役割を果たします。 このパートナーシップをサポートするために、デプロイ者とエンド ユーザーが責任ある AI を効果的に実装できるように、次のベスト プラクティスを提供します。
-
結果の決定や機密性の高いドメインでCopilotエージェント機能を使用する場合は注意を払い、結果を評価します: 結果的な決定とは、教育、雇用、金融プラットフォーム、政府のベネフィット、医療、住宅、保険、法的プラットフォームへの個人のアクセスに法的または重大な影響を与える可能性のあるもの、または物理的、精神的、または財政的損害をもたらす可能性がある決定です。 金融プラットフォーム、医療、住宅などの機密性の高いドメインでは、さまざまなグループに不釣り合いな影響を与える可能性があるため、特に注意が必要です。 これらの分野の意思決定に AI を使用する場合は、影響を受けた利害関係者が意思決定の方法を理解し、意思決定をアピールし、関連する入力データを更新できることを確認します。
-
法的および規制上の考慮事項を評価する: お客様は、AI プラットフォームとソリューションを使用する際に、潜在的な特定の法的および規制上の義務を評価する必要があります。これは、すべての業界またはシナリオでの使用に適していない可能性があります。 さらに、AI プラットフォームまたはソリューションは、該当するサービス条件および関連する行動規範で禁止されている方法で設計されておらず、使用されない場合があります。
-
必要に応じて人間の監視を実行する: 人間の監視は、AI アプリケーションと対話するときの重要なセーフガードです。 AI アプリケーションは継続的に改善されますが、AI は間違いを犯す可能性があります。 生成される出力は、不正確、不完全、バイアス、ずれ、または目的の目標とは無関係である可能性があります。 これは、入力のあいまいさや基になるモデルの制限など、さまざまな理由が原因で発生する可能性があります。 そのため、ユーザーは Copilot のエージェント機能によって生成された応答を確認し、それらが自らの期待と要件に合致していることを確認する必要があります。
-
過度の依存のリスクに注意してください。 AI への過剰な依存は、ユーザーが誤った AI 出力または不完全な AI 出力を受け入れた場合に発生します。これは、主に、AI 出力の間違いを検出するのが難しい可能性があるためです。 エンド ユーザーの場合、過度の依存により、生産性の低下、信頼の喪失、アプリケーションの破棄、財務上の損失、心理的損害、身体的危害などが生じる可能性があります。 (たとえば、医師が不適切な AI 出力を受け入れる)。
-
機密性の高いドメインでエージェント AI を設計する場合は、注意が必要です。 ユーザーは、エージェントアクションが元に戻せないか、非常に結果的である機密性の高いドメインでエージェント AI アプリケーションを設計またはデプロイするときは注意を払う必要があります。 GitHub 条件 で詳しく説明されているように、自律エージェント AI を作成する際にも、追加の予防措置を講じる必要があります。
-
Copilotコード レビューを使用して人間のレビューを補完し、置き換えるのではなく: Copilotコード レビューはコード品質を向上させるための強力なツールですが、人間のレビューを置き換えるのではなく、ツールとして使用することが重要です。 Copilotコード レビューによって生成されたフィードバックを常に確認し、コードが要件を満たしていることを確認するために、慎重な人間によるレビューでCopilotのフィードバックを補完する必要があります。
-
フィードバックを提供する: Copilot のコード レビューで問題や制限事項がある場合は、Copilot のコメントにある高評価ボタンと低評価ボタンを使用してフィードバックをお寄せいただくことをお勧めします。 これは、ツールGitHub改善し、懸念事項や制限事項に対処するのに役立ちます。
-
カスタム命令を設定する: Copilot がコーディング スタイルやベスト プラクティスを理解できるようにするためのカスタム命令を設定できます。これにより、レビュー フィードバックの関連性と品質が向上します。
-
クラウド エージェントのタスクが適切な範囲に設定されていることを確認します。クラウド エージェントに割り当てるプロンプトの範囲が明確で、範囲が広いほど、結果は向上します。 理想的な問題には、問題の明確な説明、完全な受け入れ基準、および変更する必要があるファイルに関するヒントが含まれます。
-
追加のコンテキストを使用してクラウド エージェントをカスタマイズする: クラウド エージェントはセマンティック コード検索にアクセスできます。これにより、テキストの正確な一致だけでなく、意味に基づいて関連するコードを見つけることができ、タスクをより迅速に完了できます。 パフォーマンスをさらに向上させるには、カスタム Copilot命令を実装して、エージェントがプロジェクトとその変更をビルド、テスト、検証する方法について理解を深めるのに役立ちます。
-
代わりではなく、クラウド エージェントをツールとして使用する: クラウド エージェントによって生成されたコンテンツを常に確認してテストし、要件を満たし、マージ前にエラーやセキュリティの問題がないことを確認する必要があります。
-
クラウド エージェントで安全なコーディングとコード レビューのプラクティスを使用する: クラウド エージェントは構文的に正しいコードを生成できますが、必ずしも安全であるとは限りません。 セキュリティで保護されたコーディングとコード レビューのベスト プラクティスに従います。 厳格なテスト、IP スキャン、セキュリティの脆弱性のチェックなど、独自に生成されなかったマテリアルを使用するコードと同じ予防措置を講じてください。
-
最新の状態に保つ: クラウド エージェントは進化するテクノロジです。 新しいセキュリティ リスクや、出現する可能性のあるベスト プラクティスを最新の状態に保ちます。
-
代わりではなく、Copilot CLI をツールとして使用します: Copilot CLI によって生成されたコマンドとコードを常に確認して、要件を満たし、エラーやセキュリティ上の問題がないことを確認する必要があります。
-
実行前にコマンドを確認する (CLI): Copilot CLI がコマンドの実行を提案する場合は特に注意してください(特にファイルを変更または削除するコマンド)。 最終的には、エージェントの実行を許可するコマンドを担当します。
-
CLI タスクを適切な範囲に保つ: 指定したプロンプトをより明確かつ適切に範囲指定すればするほど、結果は向上します。 問題の明確な説明、受け入れ基準、および変更する必要があるファイルに関するヒントを含めます。
-
Provide feedback (CLI): Copilot CLI で問題や制限事項が発生した場合は、
/feedbackコマンドを使用してフィードバックを提供します。 -
カスタム エージェントの動作を検証する (SDK): SDK でビルドされたアプリケーションを運用環境にデプロイする前に、カスタム エージェント、ツール、フックを徹底的にテストします。 ツールの構成とシステム プロンプトによって、安全で予期される動作が生成されることを確認します。
-
MCP サーバー接続 (SDK) の監査: 信頼できる MCP サーバーにのみ接続します。 各サーバーが公開するツールとデータを確認し、アプリケーションのセキュリティ要件に合っていることを確認します。
-
安全フック (SDK) を実装する: SDK のライフサイクル フックを使用して、コンテンツ フィルタリング、監査ログ、ツール承認ワークフローなどのガードレールをアプリケーションに実装します。
-
適切なスコープ セッション (SDK): タスクに必要なツール、エージェント、アクセス許可のみを使用して各 SDK セッションを構成します。 狭いスコープで十分な場合は、広範なアクセス権を付与しないでください。
-
BYOK プロバイダー ポリシー (SDK) を確認する: Bring Your Own-Key 構成を使用している場合は、選択したモデル プロバイダーのサービス条件とデータ処理ポリシーが組織の要件を満たしていることを確認します。
-
Spark プロンプトを特定のトピックに保持する: 意図した動作と対話についてより具体的な情報を得られるほど、出力が向上します。 特定のシナリオ、モックアップ、仕様などの関連するコンテキストを組み込むことは、Spark が意図を理解するのに役立ちます。 Spark には以前のプロンプトのコンテキストが組み込まれているため、トピック外のプロンプトは後続のリビジョンのパフォーマンスを妨げる可能性があります。
-
Spark でターゲット編集を使用する: 対象の編集を使用すると、絞り込みを絞り込むためのアプリケーション内の要素を指定できます。 グローバル プロンプトではなく、可能な限り対象を絞った編集を使用すると、より正確な変更が行われ、副作用が少なくなります。
-
Spark の出力を確認する: Spark の提供されるアプリケーション プレビューを常に使用して、アプリケーションがさまざまなシナリオで意図したとおりに動作することを確認します。 コードに慣れている場合は、生成されたコードを確認して、品質基準を満たしていることを確認します。
-
推論機能が意図したとおりに動作する (Spark): Spark アプリケーションが GitHub Models SDK を介して推論機能を使用している場合は、作成したプロンプトをテストして、適切な結果が得られるようにする必要があります。
11. GitHub Copilotエージェント機能の詳細を確認する
Copilotエージェント機能の責任ある使用に関する追加のガイダンスについては、次のドキュメントを確認することをお勧めします。
- GitHub Copilot を使ったコードレビュー
- GitHub Copilotを使用してタスクに取り組むためのベスト プラクティス
- 開発環境を構成する
- GitHub Copilot クラウド エージェントのファイアウォールのカスタマイズまたは無効化
- 初めてのCopilot搭載アプリを構築する
- リポジトリの MCP サーバーを構成する
- GITHUB COPILOT CLI について
- 最初のひらめき
- GitHub Spark を使用した AI を利用したアプリの構築とデプロイ
- GitHub Sparkの請求
- GitHub モデルの責任ある使用
- GitHub プレリリース ライセンス条項
- 追加の製品および機能に適用される GitHub 条件
- Copilot トラスト センター