GitHub CopilotにAIモデルの改良と新機能が追加されました
Published at February 14, 2023
Category: Product,GitHub Copilot
Author: Shuyin Zhao
Summary
GitHub Copilotのコード提案の核となるCodexモデルを改良しました。 GitHub Copilotは改良されたCodexモデルにより、より正確で反応の良いコード提案を実現し、開発者がより速くコーディングできるようアップグレードされました。
GitHub Copilot を最初に立ち上げて以来、基礎となる Codex モデルをアップグレードすることで、コード提案の品質と応答性の向上に努めてきました。また、GitHub Copilot のコード提案をより安全にし、開発者が作業中に安全でないコーディングパターンを特定できるように、新しいセキュリティ脆弱性フィルタを開発しました。
今週は、GitHub Copilot をより強力にし、開発者の反応を良くするために、個人向け Copilot と企業向け Copilot の両方で新しいアップデートを開始します(組織向けの新しいシンプルなサインアップも含まれます)。
さっそく見ていきましょう。
より強力なAIモデルとより良いコードサジェスト
GitHub Copilot のコードサジェストの品質を向上させるため、基礎となる Codex モデルを更新し、コードサジェストの品質を大幅に向上させ、ユーザーにサジェストを提供する時間を短縮することができました。
その一例です。2022年6月にGitHub Copilot for Individualsを初めてローンチしたとき、開発者のコードファイルの平均27%以上がGitHub Copilotによって生成されていました。現在では、すべてのプログラミング言語において、開発者のコードの平均46%がGitHub Copilotによって生成されており、Javaではその数字が61%に跳ね上がっています。
この作業は、GitHub Copilotを使用する開発者が、より正確でより反応の良いコード提案により、以前より速くコーディングできるようになったことを意味します。
以下は、これを実現するために行った主な技術的改善点です。
- アップグレードされたAI Codexモデル: GitHub Copilotを新しいOpenAI Codexモデルにアップグレードし、コード合成の結果をより良いものにしました。
より良いコンテキストの理解: GitHub Copilotは、Fill-In-the-Middle(FIM)と呼ばれる新しいパラダイムによって改良されました。コードの接頭辞だけを考慮するのではなく、既知のコードの接尾辞も活用し、GitHub Copilot が埋められるようなギャップを残します。こうすることで、意図するコードと、それがプログラムの残りの部分とどのように整合させるべきかについて、より多くのコンテキストを得ることができるようになったのです。GitHub CopilotのFIMは常に高品質なコードサジェストを生成し、それを遅延なく提供するための様々な戦略を開発してきました。
軽量なクライアントサイドモデル: VS CodeのGitHub Copilotエクステンションを更新し、コードサジェストの全体的な受け入れ率を向上させる軽量なクライアントサイドモデルを導入しました。そのため、GitHub Copilot では、ユーザーのコンテキストに関する基本情報 (たとえば、前回の提案が受け入れられたかどうか) を使用して、開発者のワークフローを混乱させるような不要な提案の頻度を減らすようにしました。その結果、不要な提案を4.5%削減し、GitHub Copilotを使用する開発者一人一人によりよく対応できるようになりました。さらに、2023年1月に出荷したこのクライアントサイドモデルの改良版では、コードの受け入れ率をさらに向上させることに成功しています。
新しいAIシステムでセキュリティ脆弱性をフィルタリング
GitHub Copilotの提案をより安全なものにするため、安全でないコーディングパターンをリアルタイムでブロックするAIベースの脆弱性フィルタリングシステムも発表されました。私たちのモデルは、ハードコードされた認証情報、SQLインジェクション、パスインジェクションなど、最も一般的な脆弱なコーディングパターンをターゲットにしています。
この新システムは、LLMを活用して静的解析ツールの動作を近似しています。GitHub Copilotは強力な計算リソースで高度なAIモデルを実行するため、非常に高速で、不完全なコードの断片から脆弱なパターンを検出することも可能です。このため、安全でないコーディングパターンは迅速にブロックされ、代替案で置き換えられます。
以下は、言語モデルによって生成された脆弱なパターンの例です。

注:GitHub Copilotは、データに見られるパターンを模倣することで、鍵やパスワードのような識別のための新しい文字列を生成することができます。以下の例は、必ずしも既存の、または使用可能な認証情報を示しているわけではありません。しかし、コード内でこれらの認証情報を表示することは、安全ではないコーディングパターンであり、私たちのソリューションで対処しています。
このようにAIを活用することで、脆弱性への対処方法を根本的に変え、限界のある従来の脆弱性検出ツールよりも大きな価値を提供することができます。
従来、セキュリティ脆弱性検出ツールは、ビルド時やリリース時に、リポジトリ全体を対象とした静的コード解析ツールで採用されてきました。これには3つの本質的な理由があります。
- コードが完全な形であるため、スキャンツールはコードベースに対する完全なコンテキストを持ち、コードが脆弱であるかどうかを決定する可能性のある依存関係を追跡することができます。
- 静的解析ツールは、コードが構文的に正しいと安全に仮定でき、言語コンパイラを活用してより高い精度を得ることができます。
- これらのフェーズには意味のある時間的制約がないため、静的解析ツールは脆弱性を検出するまでに時間がかかり、高速検出を目的としたものではありません。
GitHub Copilotは、開発者がエディタから直接、高速かつ正確な脆弱性検出を実現するなど、魔法のようなフロー状態に到達することを可能にします。このフィルタリングの仕組みは、開発者がGitHub Copilotを使ってより安全なコードを構築するための最初の重要なステップとなります。そして、脆弱性のあるコードパターンとないコードパターンを区別するために、LLMの指導を続けていきます。コードの提案で脆弱性のあるパターンを発見した場合は、copilot-safety@github.com に報告して、GitHub Copilot の改善に協力してください。
GitHub Copilot を使ってビルドを開始
アップグレードされたAIモデル、より優れたコードサジェスト、レスポンスの改善、セキュリティの強化 - これらの改善点はすべて、個人向けCopilotおよびビジネス向けCopilotを使用する開発者が利用できるようになりました。今後も、GitHub Copilot を利用する開発者のエクスペリエンスを向上させ、これらのアップデートはその始まりに過ぎません。
Source
GitHub Copilot now has a better AI model and new capabilities
Since we first launched GitHub Copilot, we have worked to improve the quality and responsiveness of its code suggestions by upgrading the underlying Codex model. We also developed a new security vulnerability filter to make GitHub Copilot’s code suggestions more secure and help developers identify …