アプリケーション カードとは
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のセキュリティと品質のプラットフォームには、開発者がセキュリティの脆弱性を見つけて修正し、漏洩したシークレットを検出し、コードの品質を向上させる、AI を利用した機能がいくつか含まれています。 このアプリケーション カードには、次のエクスペリエンスが含まれます。
- Copilot コード スキャンの自動修正: プル要求と既定の分岐に対する CodeQL アラートの修正候補を自動的に生成します。
- 汎用シークレット検出: モデルを使用して、確定的なパターン マッチングでは見つからないソース コード内の非構造化シークレットを識別します。
- カスタム パターン正規表現ジェネレーター: AI を使用して、自然言語の説明からカスタム シークレット スキャン パターンの正規表現を生成します。
- GitHub Code Quality: コード品質の問題を表面化し、プル要求と既定のブランチに対する LLM を利用した修正候補を提供します。
Copilot自動修正は、コード スキャンアラートを修正し、新しいセキュリティ脆弱性の導入を回避するために役立つ、ターゲットを絞った推奨事項をユーザーに提供するコード スキャンの拡張です。 潜在的な修正は、コードベースのデータとコード スキャン分析のデータを使用して、大規模な言語モデル (LLM) によって自動的に生成されます。 Copilot自動修正は CodeQL 分析に使用でき、GitHub Copilot サブスクリプションは必要ありません。
コード スキャンのユーザーには、プル要求に関するセキュリティ アラートが既に表示されます。 ただし、開発者は多くの場合、セキュリティで保護されたコーディングに関するトレーニングをほとんど行っていないので、これらのアラートを修正するにはかなりの労力が必要です。 Copilot自動修正は、ベスト プラクティスに関する情報とコードベースやアラートの詳細情報を組み合わせて修正案を提示することで、導入のハードルを下げます。 脆弱性に関する情報を検索するところから始める代わりに、開発者は自身のコードベースに対する修正候補を示すコード提案から作業を開始できます。 開発者は、その修正候補がコードベースにとって最適な解決策かどうか、また意図した動作が維持されているかどうかを評価します。
シークレット スキャンの一般的なシークレット検出は、ソース コードやその他のGitHubサーフェスで非構造化シークレットを識別し、アラートを生成する、AI を利用したシークレット スキャンの拡張です。 GitHub Secret Protection と GitHub Advanced Security ユーザーは、ソース コードで見つかったパートナーまたはカスタム パターンのシークレット スキャン アラートを既に受け取ることができますが、非構造化シークレットを簡単に検出することはできません。 シークレット スキャンでは、モデルを使用してこれらのシークレットを識別します。 結果が検出されると、(リポジトリ、組織、または企業の セキュリティと品質 タブの下にある) シークレット スキャン アラートの "汎用" リストにアラートが表示されます。そのため、保守担当者とセキュリティ マネージャーはアラートを確認し、必要に応じて資格情報を削除したり、修正プログラムを実装したりできます。 一般的なシークレット検出では、GitHub Copilot サブスクリプションは必要ありません。
シークレット スキャンのカスタム パターン正規表現ジェネレーターを使用すると、正規表現を知らなくてもカスタム シークレット スキャン パターンを定義できます。 ユーザーは、検出する内容の自然言語の説明と、省略可能な例の文字列を入力すると、ジェネレーターは最大 3 つの候補正規表現を生成します。 これらのパターンは、カスタム パターンとしてデプロイされる前に、ドライラン メカニズムを使用して検証できます。 正規表現ジェネレーターでは、GitHub Copilot サブスクリプションは必要ありません。
GitHub Code Quality は、実行可能なフィードバックを表示し、pull request と既定のブランチでの結果に対する自動修正を提供することで、ユーザーがコードの信頼性、保守容易性、および全体的なプロジェクトの正常性を向上させるのに役立ちます。 Code Quality が有効になっている場合、CodeQL 品質クエリはコードの保守性、信頼性、またはスタイルに関する問題を特定し、LLM を利用した分析は決定論的エンジンが見つけることができるものを超える追加の分析情報を提供します。 品質の問題が検出されると、Copilot Autofix が適切な修正案を提案します。 プル要求では、結果は github-code-quality ボットによって残されたコメントとして表示されます。 既定のブランチでは、LLM を活用した検出結果が、**** タブにある ダッシュボードに表示されます。
GitHub Code Security AI 機能でサポートされている主な言語は英語です。
2. 主な用語
次の一覧は、GitHub Code Security AI 機能に関連する主な用語の用語集です。
- CodeQL: ソース コードのセキュリティの脆弱性を特定するためのGitHubのセマンティック コード分析エンジン。
- Copilot Autofix: コード スキャン アラートの修正候補を自動的に生成する、GitHubの LLM を使用した機能。 Copilot自動修正は CodeQL 分析に使用でき、GitHub Copilot サブスクリプションは必要ありません。
- 大規模言語モデル (LLM): 自然言語とコードを生成、分析、変換できるテキスト データの大規模な本文でトレーニングされたニューラル ネットワークの一種。 Copilot自動修正では、1 つ以上の LLM を使用してコード スキャン アラートを処理し、修正候補を生成します。
- シークレット スキャンの AI 検出: 一般的なシークレット検出を含む、シークレット スキャンを拡張する AI を利用した機能。 GitHub Copilot サブスクリプションは必要ありません。
- 一般的なシークレット検出: パートナーまたはカスタム パターンでカバーされていない非構造化シークレット (パスワードなど) の AI 識別。 一般的なシークレット検出では、モデルを使用して、ソース コード内のパスワードのような文字列をスキャンします。
- カスタム パターン: 特定の形式に一致するシークレットを検出するためにシークレット スキャンによって使用されるユーザー定義の正規表現。 カスタム パターン正規表現ジェネレーターは、自然言語の説明からこれらのパターンを作成するのに役立ちます。
- SARIF: 静的分析の結果交換形式 - CodeQL がコード スキャンの結果 (アラートの場所や説明を含む) を報告するために使用する標準形式です。
- GitHub Code Quality: コード品質の問題を示し、LLM を利用した修正プログラムを提供する機能。 Code Quality では、CodeQL 品質クエリと LLM を利用した分析を組み合わせて、保守性、信頼性、スタイルの問題を特定します。
- AI の結果: [セキュリティと品質] タブの下にダッシュボードがあり、既定のブランチの LLM を利用したコード品質の結果が表示されます。
3. 主な機能
ここで説明する主な機能は、Code Security AI の機能GitHub何を行うように設計されているか、およびサポートされているタスク全体でそれらの機能がどのように実行されるかを説明します。
- セキュリティ アラートの自動修正候補: Copilot自動修正では、プル要求と既定のブランチで検出された CodeQL アラートのコード変更候補が自動的に生成されます。 各提案には、提案されたコード変更と、修正プログラムの自然言語の説明の両方が含まれています。
- Alert-to-fix translation: Copilot Autofix は、コード スキャン アラートの説明と箇所を、根本的なセキュリティ脆弱性を解決する可能性のある、実際に適用できるコード変更に変換します。 システムは、SARIF 形式の CodeQL アラート データ、周囲のコード スニペット、クエリ ヘルプ テキストを使用して、関連する修正プログラムを生成します。
- Multi-language support: Copilot Autofix では、C#、C/C++、Go、Java/Kotlin、Swift、JavaScript/TypeScript、Python、Ruby、Rust の既定およびセキュリティ拡張 CodeQL クエリ スイートに含まれるクエリのサブセットの修正生成がサポートされます。 これらのクエリ スイートの詳細については、「CodeQL クエリ セット」を参照してください。
- AI を利用したパスワード検出: シークレット スキャンの汎用シークレット検出では、AI を使用してリポジトリのコンテンツをスキャンし、確定的なパターン マッチングでは見つからない非構造化シークレット (パスワードなど) を特定します。 検出されたシークレットは、[**** タブの下のシークレット スキャン アラート リストにアラートとして表示されます。
- AI を利用した正規表現の生成: シークレット スキャンの正規表現ジェネレーターは、検出するパターンの自然言語の説明と、省略可能なサンプル文字列を受け取り、最大 3 つの候補正規表現を生成します。 各結果には、AI によって生成されたプレーンな言語の説明が含まれており、デプロイ前にドライ ランを使用してパターンを検証できます。
- Code quality issue detection: GitHub Code Quality は、プル要求の変更されたコードに対して CodeQL 品質クエリを実行し、完全な既定のブランチで定期的に実行します。 これらのクエリは、保守性、信頼性、スタイルの問題を特定します。
- LLM を利用したコード品質分析: 既定のブランチにプッシュするたびに、LLM は最近変更されたファイルを分析して、決定論的エンジンが見つけることができる以上の品質の問題を検出します。 結果は 、AI の結果 ダッシュボードに表示されます。
- 品質結果の自動修正候補: いずれかの種類の分析によって品質の問題が検出されると、Copilot修正候補が生成されます。 プル要求では、
github-code-qualityボットは、提案された変更を含むコメントを投稿します。
4. 使用目的
GitHub Code Security AI 機能は、さまざまな業界の複数のシナリオで使用できます。 ユース ケースの例を次に示します。
- セキュリティ脆弱性の修復の精度向上: Copilot自動修正を使用して CodeQL アラートの修正候補をすばやく生成し、コード スキャン中に見つかったセキュリティの問題に対処するために必要な時間と専門知識を減らします。
- セキュア コーディングへのハードルを下げる: Copilot Autofix は、セキュア コーディングのトレーニング経験が限られている開発者を支援します。 開発者は、脆弱性を個別に調査する代わりに、コードベースの潜在的なソリューションを示すコード提案から始めます。
- Streamlining pull request review: コード スキャンでプル要求のアラートが検出されると、Copilot Autofix は推奨される修正プログラムをインラインで提供し、開発者はマージ前にセキュリティの問題を解決するのに役立ちます。
- 既定のブランチでのアラートの修正: Copilot自動修正では、既定のブランチで既存のアラートの修正候補を生成することもできます。これにより、チームはセキュリティ結果のバックログを減らすことができます。
- ソース コードで漏洩したパスワードを検出する: 一般的なシークレット検出を使用して、パートナーとカスタム シークレットのスキャン パターンの範囲外にあるリポジトリ内の非構造化シークレットを見つけます。
- コンテキスト アラートを使用して資格情報をトリアージする: パスワードが検出されると、アラートの一覧に AI 検出コンテキストを含むアラートが表示され、保守担当者とセキュリティ マネージャーが検索を確認してアクションを実行できるようになります。
- 正規表現の専門知識なしでカスタム シークレット スキャン パターンを作成する: 正規表現ジェネレーターを使用して、自然言語で検出する内容を記述することでカスタム パターンを定義します。正規表現を手動で記述する必要はありません。
- デプロイ前に生成されたパターンの検証: 正規表現を生成した後、ドライラン メカニズムを使用して、カスタム パターンとしてデプロイする前に、リポジトリまたは組織全体のパターンをテストします。
- リポジトリ全体でコード品質の問題を確認する: GitHub Code Quality を使用して保守性、信頼性、スタイルの問題を特定し、開発者と管理者がリスク領域にすばやく優先順位を付けることができます。
- コード品質に関する指摘事項の修正対応を加速: Copilot Autofix は、ベスト プラクティスに関する情報とコードベースの詳細を組み合わせて、コード品質に関する指摘事項の修正案を提案し、その修正候補をプル リクエスト上または AI findings ダッシュボードに直接表示します。
- pull requests に対する実用的なフィードバックの提供:
github-code-qualityボットは、プル要求に関する修正候補を含むコメントを投稿し、開発者がマージする前に品質の問題に対処するのに役立ちます。
5. モデルとトレーニング データ
Copilot自動修正では、大規模な言語モデルとやり取りする内部 GitHub Copilot APIを使用します。この場合、コードで推奨される修正プログラムと、それらの修正プログラムの説明テキストの両方が生成されます。
一般的なシークレット検出では、モデルを使用して非構造化シークレットをスキャンします。
カスタム パターン正規表現ジェネレーターは、LLM と GitHub Copilot API を使用して、ユーザーが指定した説明と例に一致する正規表現を生成します。
GitHub Code Quality の LLM を利用した分析では、Copilot言語モデルを使用して、最近変更されたファイルの品質の問題を分析します。 CodeQL 品質クエリ コンポーネントは LLM を使用しません。 コード品質の検出結果向けの Copilot Autofix は、コード スキャン向けの Copilot Autofix と同じ LLM パイプラインを使用します。
Copilotで使用できるモデルの比較については、AI モデルの比較 を参照してください。 サポートされているモデルの完全な一覧については、 AUTOTITLE を参照してください。 モデルがホストされる場所については、 GitHub Copilotのモデルのホスティング を参照してください。 GitHubのセキュリティと品質の背後にある基礎モデルのトレーニングに使用されるデータの詳細については、GitHub Copilot FAQ の「GitHub Copilotトレーニングが完了したデータ 」を参照してください。
Copilot自動修正によって処理されるデータは、LLM トレーニングの目的では使用されません。 この機能の使用は、GitHub Advanced Security に関連付けられている既存の使用条件によって管理されます。 詳細については、 追加の製品および機能に適用される GitHub 条件 を参照してください。
6. パフォーマンス
リポジトリCopilot自動修正が有効になっている場合、コード スキャン アラートは次のパイプラインを通じて処理されます。
- Input 処理: コード スキャン アラートが識別されると、GitHubは関連するデータを言語モデルのプロンプトにアセンブルします。 このデータには以下が含まれます。
- SARIF 形式の CodeQL アラート データ
- 各ソースの場所、シンクの場所、アラート メッセージまたはフロー パスで参照される任意の場所に関する短いスニペットを含む、ブランチの現在のバージョンのコード
- これらの場所のいずれかに関係する各ファイルの最初の最大 10 行
- 問題を特定した CodeQL クエリのヘルプ テキスト
- 言語モデル分析: アセンブリされたプロンプトが言語モデルに送信され、アラート コンテキスト、コード構造、クエリ ヘルプ情報が分析されます。
- 応答の生成: モデルは、提案されたコード変更と修正を説明する説明テキストの両方を含む潜在的な修正プログラムを生成します。
- 出力の書式設定: 提案はコード スキャン バックエンド内に格納され、プル要求またはアラートの詳細ページにインライン提案として表示されます。 コードベースでコード スキャンを有効にし、プル要求を作成する以外に、ユーザーの操作は必要ありません。
エクスペリエンス別の違い
AI シークレット検出 は入力を処理し、次のように出力を生成します。
- 入力処理: 入力は、ユーザーがリポジトリにチェックインしたテキスト (通常はコード) に制限されます。 システムは、このテキストをモデルに提供し、入力のスコープ内で非構造化シークレットを検索するようモデルに求めるメタ プロンプトを提供します。 ユーザーはモデルと直接対話しません。 単一の検出結果を検証するために、複数のモデルを使用できます。
- モデル分析: モデルは、パスワードなどの非構造化シークレットに似た文字列をスキャンします。
- 応答の生成: モデルは、応答に含まれる識別された文字列が実際に入力に存在することを確認します。
- 出力の書式設定: 検出された文字列は、通常のシークレット スキャン アラートとは別のリストのシークレット スキャン アラート ページにアラートとして表示されます。 各アラートは、それが AI によって検出されたことを示します。 汎用シークレットのアラートを表示する方法については、 シークレット スキャンからのアラートの表示とフィルター処理 を参照してください。
カスタム パターン正規表現ジェネレーター は、入力を処理し、次のように出力を生成します。
- 入力処理: ユーザーは、検出するパターンの自然言語テキストの説明と、一致する必要がある省略可能な文字列の例を入力します。
- Language モデル分析: 説明と例は、入力に一致する正規表現を生成するGitHub Copilot API を介して LLM に送信されます。
- 応答の生成: モデルは、最大 3 つの候補正規表現を返します。 各結果には、AI によって生成されたプレーンな言語の説明が含まれます。 一部の結果は非常に似ている場合があり、一部は意図したパターンのすべてのインスタンスと一致しない場合があります。
- 出力書式: 結果はカスタム パターン定義フォームに表示されます。 [結果の 使用] をクリックすると、式と例がメインのカスタム パターン フォームにコピーされます。ここで、ドライ ランを実行して、リポジトリまたは組織全体のパターンを検証できます。 詳細については、「シークレット スキャンのカスタム パターンの定義」を参照してください。
GitHub Code Quality LLM を使用した分析は入力を処理し、次のように出力を生成します。
- 入力処理: 既定のブランチにプッシュするたびに、最近変更されたファイルが他の関連するコンテキスト情報と組み合わされてプロンプトが形成されます。 プロンプトは、Copilot言語モデルに送信されます。
- 言語モデル分析: 言語モデルは、保守性、信頼性、およびその他の品質の問題についてコードを分析します。
- 応答の生成: モデルは、特定の行にリンクされた自然言語の提案とコード候補を含めることができる応答を生成します。
- 出力の書式設定: 結果は、[****] タブの下の ] ダッシュボードに表示されます。Code Quality がコードの提案を提供する場合は、数回のクリックで適用できる推奨される変更として表示されます。
プル要求におけるコード品質の指摘に対する Copilot Autofix:
- 入力処理: プル要求に対する CodeQL 分析からのコード品質の結果は、周囲のコード コンテキストと共に LLM に送信されます。
- 言語モデル分析: LLM は結果を分析し、潜在的な修正プログラムを生成します。
- 応答の生成: LLM が修正プログラムを生成できる場合は、推奨されるコード変更が生成されます。
- 出力の書式設定:
github-code-qualityボットは、提案された変更を含む pull request にコメントを投稿します。 ユーザーは、デフォルトブランチで結果の自動修正生成を要求することもできます。
7. 制限事項
GitHub Code Security の AI 機能の制限事項を理解することは、その機能が安全かつ効果的な範囲内で使用されているかどうかを判断するうえで重要です。 革新的なソリューションやアプリケーションで GitHub Code Security AI 機能を活用することをお勧めしますが、GitHub Code Security AI 機能は、考えられるすべてのシナリオ向けに設計されたわけではないことに注意してください。 ユース ケースを選択する際には、 GitHub 条件 と次の考慮事項を参照することをお勧めします。
- 非決定性: Copilot自動修正では、非決定論的な生成モデルが使用されます。 同じアラートとコードを使用しても、実行可能な提案を生成できない場合や、試行によって提案が異なる場合があります。
- 問題の複雑さとコンテキスト: 複雑なマルチファイル コードベース全体のデータ フローをトレースする必要があるアラートや、微妙なロジックの欠陥を表すものなど、一部のセキュリティ アラートは、モデルの解決が困難になる可能性があります。
- ファイル サイズ: 影響を受けるコードが非常に大きなファイルまたはリポジトリ内にある場合、LLM に提供されるコンテキストが切り捨てられる可能性があります。 コンテキストが制限されている場合、この機能は修正を試みません。
- 言語とフレームワークの対象範囲: Copilot Autofix では言語と CodeQL アラートの一覧が増えていますが、考えられるすべてのアラートの種類や言語はカバーされません。
- LLM 運用容量: 修正プログラムの生成には、LLM の運用容量が適用されます。 修正候補がない場合、または修正候補が内部テストに失敗した場合は、提案は表示されません。
- 英語中心のデータ: システムは主に、プロンプト、LLM のトレーニング データセット内のコード、内部評価に使用されるテスト ケースなど、英語のデータを使用します。 提案は、他の言語のソース コードとコメントの成功率が低くなる場合があります。
- 構文エラー: 構文的に正しくないコード変更の修正が提案される場合があります。
- 場所エラー: 正しくない場所で修正プログラムが提案される場合があります。 場所を編集せずにこのような修正プログラムを受け入れると、構文エラーが発生する可能性があります。
- セマンティック エラー: システムは構文的に有効な修正プログラムを提案しますが、プログラムのセマンティクスを変更することがあります。 システムはプログラマの意図を理解していない。
- セキュリティの脆弱性と誤解を招く修正: システムは、基になる脆弱性の修復に失敗したり、新しい脆弱性を導入したりしない修正プログラムを提案する場合があります。
- 部分的な修正: システムは、セキュリティの脆弱性に部分的にしか対処しない、または目的のコード機能のみを部分的に保持する修正プログラムを提案する場合があります。
- 依存関係の変更: 推奨される修正には、ソフトウェアの依存関係の追加または更新が含まれる場合があります。 システムは、どの依存関係バージョンがサポートされているか、またはセキュリティで保護されているかを認識せず、統計的に可能性のある名前で公開された、製造された依存関係を提案する場合があります。 マージする前に、必ず依存関係の変更を確認してください。
AI シークレット検出に固有の制限事項
- 不完全なレポート: AI シークレットの検出では、リポジトリにチェックインされた資格情報のインスタンスが見逃される可能性があります。 シークレットの AI 検出は、時間の経過と同時に改善されます。 コードのセキュリティ確保に関する最終的な責任はユーザーにあります。
- テスト コード: AI シークレット検出では、テスト コード内のシークレットが検出されない場合があります。 シークレット スキャンは、次のような特定の条件が満たされたときに検出をスキップします。
- ファイル パスに "test"、"mock"、または "spec" が含まれています
- ファイル拡張子が
.cs、.go、.java、.js、.kt、.php、.py、.rb、.scala、.swiftまたは.tsである。
カスタム パターン正規表現ジェネレーターに固有の制限事項
- 不完全なパターン カバレッジ: 生成された正規表現が、すべての目的のトークンと一致しない場合があります。 結果の品質は、入力の説明の特定性と明確さによって異なります。
- 無効または不適切な結果: ジェネレーターによって、意図したユース ケースに対して無効または不適切な正規表現が生成される可能性があります。
- 構造化パターンのみ: 正規表現ジェネレーターは、自由形式のテキスト マッチングではなく、構造化された予測可能な形式を検出するパターンの作成にのみ適しています。
- 英語中心のパフォーマンス: モデルは主に英語コンテンツでトレーニングされました。 英語以外の言語で自然言語入力プロンプトを提供すると、パフォーマンスが低下する可能性があります。
- 同様の結果: 返される正規表現の一部は互いに非常に似ている可能性があり、個別の候補パターンの有効な数が減ります。
GitHub コード品質に固有の制限事項
- Copilot コード レビューと共通の制限事項: Code Quality の LLM を活用した分析では、Copilot コード レビューと同じ基盤となる言語モデルと分析エンジンを使用しています。 不完全な検出、誤検知、コード提案の精度、潜在的なバイアスなど、同様の制限を共有します。 詳細については、「アプリケーション カード: GitHub Copilot エージェント」を参照してください。
- ベスト エフォート自動修正: コード品質の結果のCopilot自動修正はベスト エフォートベースで動作し、すべての結果に対して修正プログラムを生成することが保証されるわけではありません。
- Review required: 修正候補を受け入れる前に、常にCopilot自動修正の提案を確認し、必要に応じて変更を編集する必要があります。
8. 評価
パフォーマンスと安全性の評価では、有害なコンテンツを生成するリスクを特定しながら、根拠、関連性、一貫性などの要因を調べることで、AI アプリケーションが確実かつ安全に動作しているかどうかを評価します。 以下の評価は、既に実施されている安全コンポーネントを用いて行ったが、これも9に記載されている 。安全コンポーネントと軽減策。
パフォーマンスと品質の評価
GitHubセキュリティ AI 機能は、業界標準のベンチマーク (SWE-Benchなど) と内部で開発された評価スイートの組み合わせを使用して、サポートされているサーフェス全体で評価されます。 ベンチマーク タスクは、パブリック オープンソース リポジトリと合成シナリオから提供されます。アクセス許可なしに実際のユーザー クエリや顧客コードは使用されません。 各評価には、モデル出力の非決定的性を考慮する複数の独立した実行が含まれています。 主要なメトリックには、解決率 (正常に完了したタスクの割合)、トークン効率、待機時間、ツール呼び出しの信頼性などがあります。 モデルは、エラー率、応答待ち時間、集計使用パターンを使用して、運用環境で更新が行われ、継続的に監視されたときに再評価されます。
パフォーマンスと品質の評価方法
新しいモデルは、Code Security、Code Quality、Secret Protection にデプロイする前に段階的な評価プロセスを受けます。 インテグレーター チームは、その表面に固有のベンチマーク スイートを実行し、バグ修正、コード生成、マルチファイル リファクタリングなどの代表的なコーディング タスクでモデルをテストします。 確立されたベースラインと既存の運用モデルに対して結果がレビューされます。 モデルは、次のステージに進む前に、解決率、トークン効率、待機時間などの主要なメトリック間でベースライン パフォーマンスを満たすか、超える必要があります。
リスクと安全性の評価
AI によって生成されるコンテンツに関連する潜在的なリスクを評価することは、重大度が異なるコンテンツ リスクから保護するために不可欠です。 これには、有害なコンテンツの生成や脱獄攻撃の脆弱性のテストに対する AI アプリケーションの素因の評価が含まれます。 GitHubでは、
- 憎しみと不公平さ
- 性的
- Violence
- 自傷行為
- 保護材料
- 脱獄
- コードの脆弱性
品質と安全性に関する評価データ
当社の評価データは、 安全性 と 品質の重要な領域全体で AI アプリケーションのパフォーマンスを評価し、実際のシナリオとリスクをシミュレートするためにカスタム構築されています。 私たちは、多分野にわたる研究と専門家の意見に基づいて、懸念事項の関連評価の側面を特定することから始めます。 これらの懸念は、対象となる評価目標に変換され、評価メトリックの策定をガイドします。 safetyでは、望ましくない応答またはエッジケース応答を引き出す敵対的なプロンプトを作成し、その後、GitHubの標準との整合性を評価するためにトレーニングされた AI 支援アノテーターを使用してスコア付けされます。 品質を高めるために、取得拡張生成 (RAG) アプリケーションとエージェントの評価など、シナリオに関連するルーブリックベースのプロンプトを作成します。 データセットは、実際のユーザー シナリオをシミュレートするために、合成データセットやパブリック データセットなど、さまざまなソースからキュレーションされます。 キュレーションされたデータセットを使用すると、両方の評価が反復的に改良され、人間のアライメントが行われ、メトリックの有効性と信頼性が向上します。 この手法は、顧客が評価を使用してより優れた AI を構築する方法を反映した、反復可能で厳格な評価の基礎を形成します。
カスタム評価
GitHubでは、自動テスト ハーネスを使用して、Copilot自動修正候補の品質を継続的に監視します。 テスト ハーネスには、テスト カバレッジがあるコードが含まれる多様な公開リポジトリからの 2,300 件を超えるアラートが含まれています。 これらのアラートの提案は、開発者がコードベースにコミットする前に編集する必要がある量を判断するためにテストされます。 テスト アラートの多くでは、LLM によって生成された提案を as-is コミットしてアラートを修正し、既存のすべての CI テストに正常に合格し続ける可能性があります。
GitHub、コード スキャンを実行する前に、提案されたすべての変更 (編集されていない) をマージし、結果のコードでリポジトリの単体テストを実行することで、提案の有効性をテストします。
- コード スキャンアラートは提案によって修正されましたか?
- この修正プログラムでは、新しいコード スキャン アラートが導入されていますか?
- この修正プログラムでは、コード スキャンで検出できる構文エラーが発生しましたか?
- 修正によってリポジトリのテスト結果は変化しましたか?
さらに、GitHubは、多くの成功した提案をスポットチェックし、新しい問題を発生させることなくアラートを修正することを確認します。 これらのチェックの 1 つ以上が失敗した場合、手動トリアージでは、多くの場合、提案された修正プログラムはほぼ正しいが、ユーザーが識別して手動で実行できるいくつかの軽微な変更が必要であることを示しました。
システムは、潜在的な有害性を確認するためのストレステスト(レッドチーミング)も実施されており、LLMのフィルタリングシステムは、有害なおそれのある提案がユーザーに表示されるのを防ぐのに役立ちます。
AI シークレット検出は責任ある AI Red Teaming の対象であり、GitHubは時間の経過と同時に機能の有効性と安全性を監視し続けます。
カスタム パターン正規表現ジェネレーターの結果はドライラン メカニズムによって検証されます。これにより、ユーザーはリポジトリまたは組織全体で生成されたパターンをカスタム パターンとしてデプロイする前にテストできます。 この組み込みの検証手順は、生成された正規表現が運用環境で使用される前に期待どおりに動作することを保証するのに役立ちます。
GitHub Code Quality の LLM を利用した分析では、Copilotコード レビューの評価フレームワークが共有されます。 コード品質の検出結果に対する Copilot の自動修正提案は、コード スキャン向けの Copilot Autofix と同じテスト ハーネスを使用します。
9. 安全コンポーネントと軽減策
- Human-in-the-loop review: Copilot Autofix は、適用前に明示的な開発者レビューと同意を必要とする提案されたコード変更として、すべての提案を提示します。 開発者は、各提案を評価し、コードベースの意図された動作が維持されていることを確認する必要があります。
- コンテンツ フィルタリング: LLM のフィルタリング システムは、有害な可能性のある提案がユーザーに表示されることを検出し、防止します。 システムは、潜在的な脆弱性を特定するために、赤いチーミングによってストレス テストされます。
- 内部品質テスト: 内部テストに失敗した提案はユーザーに表示されません。 修正プログラムの生成は、システムが提案の品質に十分な信頼を持っている場合にのみ表示されます。
- Opt-in/opt-out コントロール: Copilot自動修正は既定で許可され、CodeQL を使用するすべてのリポジトリに対して有効になっていますが、管理者はエンタープライズ、組織、リポジトリの各レベルでCopilot自動修正を無効にすることができます。 詳細については、「セキュリティ アラートをスキャンするコードの自動修正を無効にする」を参照してください。
- 顧客データに関するトレーニングはありません: Copilot自動修正によって処理されるデータは、LLM トレーニングの目的では使用されません。 この機能の使用は、GitHub Advanced Security に関連付けられている既存の使用条件によって管理されます。
- 偽陽性フィードバック ループ: ユーザーが汎用シークレット検出アラートを閉じ、理由として「偽陽性」を選択すると、GitHub はその偽陽性の件数を基にモデルを改善します。 GitHubは、シークレット リテラル自体にアクセスできません。
- 生成されたパターンのドライラン検証: カスタム パターン正規表現ジェネレーターから生成された正規表現は、デプロイ前にドライラン検証手順を実行する必要があります。 ユーザーは、カスタム パターン フォームに結果を明示的にインポートし、リポジトリまたは組織全体でテストし、運用環境で使用する前にパターンが期待どおりに動作することを確認します。
- 明示的なユーザー アクションが必要です。正規表現ジェネレーターは、パターンを自動的にデプロイしません。 生成された式をカスタム パターン フォームにコピーするには、[ 結果の使用 ] をクリックし、パターンを手動で保存して有効にする必要があります。
- コード品質のフィードバック メカニズム: ユーザーは、
github-code-qualityボットのコメントのサムアップ ボタンとサムダウン ボタンを使用して、コード品質の提案に関するフィードバックを提供でき、提案の品質GitHub向上させることができます。 - プレビュー限定の提供: GitHub Code Quality はプレビュー版として限定提供されており、組織は本格導入の前にこの機能を評価できます。
10. GitHub Code Security AI 機能のデプロイと導入に関するベスト プラクティス
責任ある AI は、GitHubとその顧客の間で共有されるコミットメントです。 GitHubは、安全性、公平性、透明性を中核に AI アプリケーションを構築しますが、お客様は、独自のコンテキスト内で責任を持ってこれらのテクノロジをデプロイおよび使用する上で重要な役割を果たします。 このパートナーシップをサポートするために、デプロイ者とエンド ユーザーが責任ある AI を効果的に実装できるように、次のベスト プラクティスを提供します。
- 重大な判断やセンシティブな領域で GitHub Security の AI 機能を使用する際は、注意を払い、結果を評価してください: 結果的な決定とは、教育、雇用、金融プラットフォーム、政府のベネフィット、医療、住宅、保険、法的プラットフォームへの個人のアクセスに法的または重大な影響を与える可能性のあるもの、または物理的、精神的、または財政的損害をもたらす可能性がある決定です。 金融プラットフォーム、医療、住宅などの機密性の高いドメインでは、さまざまなグループに不釣り合いな影響を与える可能性があるため、特に注意が必要です。 これらの分野の意思決定に AI を使用する場合は、影響を受けた利害関係者が意思決定の方法を理解し、意思決定をアピールし、関連する入力データを更新できることを確認します。
- 法的および規制上の考慮事項を評価する: お客様は、AI プラットフォームとソリューションを使用する際に、潜在的な特定の法的および規制上の義務を評価する必要があります。これは、すべての業界またはシナリオでの使用に適していない可能性があります。 さらに、AI プラットフォームまたはソリューションは、該当するサービス条件および関連する行動規範で禁止されている方法で設計されておらず、使用されない場合があります。
- 受け入れる前に、常に提案を確認します。提案されたコード変更を評価して、コードの意図した動作を変更することなく、セキュリティの脆弱性が正しく修正されていることを確認します。 テスト カバレッジを適切に設定すると、修正によってコードベースの動作が変更されないことを確認できます。
- CI テストが成功したことを確認する: 修正候補または修正プログラムをコミットした後、コードベースの継続的インテグレーション テスト (CI) が引き続き成功し、プル要求をマージする前にアラートが解決済みとして表示されることを常に確認します。
- 依存関係の変更を慎重に確認する: 推奨される修正プログラムに依存関係の変更が含まれている場合は、追加または更新された依存関係がセキュリティで保護され、サポートされ、コードベースの意図された動作を維持していることを確認します。 依存関係レビュー API やアクションなどの依存関係管理ソリューションを使用して、変更を評価します。 詳細については、「依存関係の確認」を参照してください。
- 誤検知アラートを適切に閉じる: AI シークレット検出ではパートナー パターン検出よりも多くの誤検知が生成される可能性があるため、各アラートの精度を確認します。 アラートが誤検知であることが確認されたら、アラートを閉じて、GitHub UI で理由を "誤検知" としてマークします。 このフィードバックは、モデルの改善に役立ちます。
- 生成された正規表現パターンをドライ ランで検証する: カスタム パターン正規表現ジェネレーターを使用する場合は、生成されたパターンを組織全体にデプロイする前に、必ず代表的なリポジトリ間でドライ ランを実行します。
- 説明を使用して具体的にする: 生成される正規表現の品質を向上させるには、自然言語の説明で可能な限り具体的に記述し、検出するパターンを表す多様なサンプル文字列を含めます。
- 生成されたすべてのパターンを確認する: AI によって生成されたプレーンな言語の説明を含む、生成された正規表現のそれぞれを慎重に確認し、ニーズをより完全に満たすように結果を変更することを検討してください。 使用するカスタム パターンの決定は最終的にユーザーの責任です。
- 修正プログラムを適用する前にコード品質の結果を確認する: コード品質の結果と自動修正候補を受け入れる前に、コードベースの精度と適用可能性を常に確認してください。
- コード品質に関する提案に関するフィードバックを提供する:
github-code-qualityボットのコメントのサムアップボタンとサムダウン ボタンを使用して、ツールを改善し、懸念や制限に対処します。 - 必要に応じて人間の監視を実行する: 人間の監視は、AI アプリケーションと対話するときの重要なセーフガードです。 AI アプリケーションは継続的に改善されますが、AI は間違いを犯す可能性があります。 生成される出力は、不正確、不完全、バイアス、ずれ、または目的の目標とは無関係である可能性があります。 これは、入力のあいまいさや基になるモデルの制限など、さまざまな理由が原因で発生する可能性があります。 そのため、ユーザーは、GitHub Code Security AI 機能によって生成された応答を確認し、期待と要件に一致することを確認する必要があります。
- 過度の依存のリスクに注意してください。 AI への過剰な依存は、ユーザーが誤った AI 出力または不完全な AI 出力を受け入れた場合に発生します。これは、主に、AI 出力の間違いを検出するのが難しい可能性があるためです。 エンド ユーザーの場合、過度の依存により、生産性の低下、信頼の喪失、アプリケーションの破棄、財務上の損失、心理的損害、身体的危害などが生じる可能性があります。 (たとえば、医師が不適切な AI 出力を受け入れる)。
- 機密性の高いドメインでエージェント AI を設計する場合は、注意が必要です。 ユーザーは、エージェントアクションが元に戻せないか、非常に結果的である機密性の高いドメインでエージェント AI アプリケーションを設計またはデプロイするときは注意を払う必要があります。 GitHub 条件 で詳しく説明されているように、自律エージェント AI を作成する際にも、追加の予防措置を講じる必要があります。
- プル要求での CI テストの有効化: Copilot自動修正を有効にする前に継続的インテグレーション テストが実施されていることを確認し、開発者が修正を適用した後に機能要件が検証されるようにします。
- 依存関係管理ソリューションを使用する: プル要求に対する依存関係の確認を有効にして、自動修正候補によって導入された潜在的に危険な依存関係の変更をキャッチします。
- セキュリティ概要メトリックの確認: 組織のセキュリティ概要ダッシュボードを使用して、特定の期間のオープンおよびクローズされたプル要求で生成されたCopilot自動修正候補の合計数を表示します。 詳細については、「セキュリティの概要ダッシュボードのメトリック」を参照してください。
- シークレット検出の誤検知ボリュームを評価する: 誤検知ボリュームを評価し、アラート一覧のトリアージ プロセスを確立します。
- コード品質の提案の量と品質を監視する: コード品質の提案の量と品質を評価し、組織に合わせて有効化を調整します。
11. GitHubセキュリティ AI 機能の詳細を確認する
GitHub Security AI 機能の責任ある使用に関する追加のガイダンスについては、次のドキュメントを確認することをお勧めします。
- コード スキャンのアラート
- Pull RequestでCode scanningアラートをトリアージする
- コード スキャン アラートを解決する
- セキュリティ アラートをスキャンするコードの自動修正を無効にする
- 追加の製品および機能に適用される GitHub 条件
- シークレット スキャン
- AI によって検出されたシークレットに対する汎用的なシークレット検出を有効にする
- シークレット スキャン アラートの管理
- AI を使用したカスタム パターンの正規表現の生成
- シークレット スキャンのカスタム パターンの定義
- GitHub コード品質 のクイックスタートガイド
- アプリケーション カード: GitHub Copilot エージェント
- Code Quality フィードバックに関するコミュニティディスカッション