GitHub Copilotが新しいAIモデルと新機能を搭載

Image of Shuyin Zhao

GitHubは、GitHub Copilotが開発者にとってよりパワフルで応答性の高い開発環境となるように新たなアップデートを発表しました。

Shuyin Zhao

GitHub Copilotの最初のリリース以来、私たちは、基盤となるCodexモデルをアップグレードすることで、コード提案の品質や応答性の改善に取り組んできました。また、GitHub Copilotによるコード提案の安全性を高め、安全でないコーディングパターンを開発者が作業中に特定できるよう、セキュリティの脆弱性に関する新たなフィルター機能も開発しました。

この度、Copilot for IndividualsとCopilot for Businessを対象に、企業向けのサインアップが簡素化されることを含む新たなアップデートを実施し、GitHub Copilotが開発者にとってよりパワフルで応答性の優れた開発環境となりました。

詳しく見ていきましょう。

 

AIモデルの強化とコード提案の品質向上

GitHub Copilotによるコード提案の改良のため、GitHubでは、基盤となるCodexモデルをアップデートしました。その結果、提案するコードの品質と、ユーザーにコード提案を提示するまでの時間を大幅に改善できました。

その一例として、GitHub Copilot for Individualsを2022年6月にリリースした当初は、開発者のコードファイルの平均27%以上がGitHub Copilotで生成されたものでしたが、現在、この数字は全プログラミング言語において平均で46%となり、Javaに限っては61%にまで上昇しています。

これは、GitHub Copilotを利用している開発者は、より正確で応答性の高いコード提案のおかげで、以前より短時間でコーディングできていることを意味します。

GitHub Copilotによるコード提案の全体的な承諾率の向上を示すグラフ

 

今回実施した技術面での改良について、主要なものをご紹介します。

  • AI Codexモデルのアップグレード: GitHub Copilotを新しいOpenAI Codexモデルにアップグレードしました。これにより、コード生成でより良い結果を得られます。
  • コンテキストの理解力を強化: GitHub CopilotをFIM (Fill in the Middle) と呼ばれる新たなパラダイムによって更新し、コード提案において開発者により良いプロンプトを提案するように改善しました。コードのプレフィックスだけを考慮するのではなく、既存のサフィックスも活用し、GitHub Copilotがその間を埋められるように隙間を設けておきます。こうすることで、開発者が意図するコードとプログラムの残りの部分とがどのように整合されるべきかについて、より多くのコンテキストを得ることができます。GitHubにおけるFIMは、一貫して質の高いコード提案を生み出し、その提案を遅延なく提供するための戦略を開発しています。
  • 軽量なクライアント側モデル: VS Code向けのGitHub Copilotの拡張機能を軽量なクライアント側モデルで更新し、コード提案の全体的な承諾率を向上させました。実現にあたっては、前回のコード提案を受諾したかどうか、といったユーザーのコンテキストに関する基本的な情報を使用し、開発者のワークフローを妨げる恐れのある望まれないコード提案の頻度を削減します。これにより、不要なコード提案を4.5%削減し、利用する開発者に対してGitHub Copilotの応答性を向上させることができました。また、2023年1月に出荷したこのクライアント側モデルの2回目の改良版では、コードの全体的な受諾率がさらに向上しました。

 

新たなAIシステムでセキュリティの脆弱性を除外

 GitHub Copilotのコード提案をより安全なものにするため、安全でないコーディングパターンをリアルタイムでブロックするAIベースの脆弱性フィルタリングシステムもリリースします。GitHubのモデルでは、資格情報のハードコーディングSQLインジェクションパスインジェクションなど、脆弱なコーディングパターンのうち、特に一般的なものを対象としています。

新しいシステムは大規模言語モデル (LLM) を活用しており、静的分析ツールと類似の挙動をします。また、GitHub Copilotは強力なコンピューティングリソースで高度なAIモデルを実行するため、信じられないほど高速であり、コードの不完全なフラグメントにおける脆弱なパターンを検出することもできます。つまり、安全でないコーディングパターンは速やかにブロックされ、別のコード提案に置き換えられるということです。

 

言語モデルによって生成された脆弱なパターンの一例をご紹介します。

注意: GitHub Copilotは、データに見られるパターンを模倣することにより、キーやパスワードなどID形式の新しい文字列を生成できます。本例は、必ずしも、既存の資格情報や使用可能な資格情報を示しているわけではありません。いずれにせよ、コード内で資格情報を表示することは、安全なコーディングパターンではなく、私たちのソリューションを用いて私たちが対処すべきものです。

 

こうしたAIの導入により、コードに脆弱性が侵入することを防ぐ方法を根本的に変えています

GitHub Copilotにより、開発者がエディター上で迅速かつ正確に脆弱性を防止することを含め、魔法のようなフロー状態に達することを可能にします。すなわち、GitHub Advanced Securityの脆弱性検出と修正機能の組み合わせにより、開発者がコードを保護するためのエンドツーエンドでシームレスな開発者体験を提供します。

この防止メカニズムは、開発者の皆さんがGitHub Copilotを活用してより安全なコードを開発するために欠かせない最初のステップです。脆弱なコードパターンとそうでないコードパターンを区別するべく、私たちはLLMの学習を続けていきます。GitHub Copilotの向上にご協力いただける方は、コード提案内に出てきた脆弱なパターンをcopilot-safety@github.comまでお知らせください。

 

GitHub Copilotを使って開発しましょう

AIモデルのアップグレード、より良いコード提案、応答性やセキュリティの強化など、この度の全アップデートは現在、Copilot for IndividualsやCopilot for Businessを使う開発者の皆様にご利用いただけます。これからも、GitHub Copilotが皆さんの開発に役立つよう、機能強化に取り組んでいきます。今後のアップデートにご期待ください。

ご利用はこちらから >