コーダーの皆さん、おめでとうございます!マイクロソフトは、LLMを使用して168のコードベースにわたるコーディングタスクを自動化するCodePlanを提案している。

コーダーの皆さん、おめでとうございます!マイクロソフトは、LLMを使用して168のコードベースにわたるコーディングタスクを自動化するCodePlanを提案している。

大規模なモデルの場合、ローカライズされたエンコード タスクに優れています。

しかし、タスクが複数の相互依存ファイルにまたがる場合、LLM では解決できません。

これに応えて、Microsoft の研究者は、CodePlan と呼ばれるタスクに依存しないニューラル ネットワーク フレームワークを設計しました。

写真

論文アドレス: https://arxiv.org/pdf/2309.12499.pdf

この論文では、CodePlan は、プログラム分析、計画、LLM を組み合わせた新しいアプローチである、複数ステップの編集チェーンを統合しています。

CodePlan がどのように設計されているかを詳しく見てみましょう。

CodePlan: ビッグモデル + プランニング

パッケージの移行、静的分析またはテストからのバグ レポートの修正、コード ベースへの型ヒントやその他の仕様の追加などのソフトウェア エンジニアリング アクティビティには、コード リポジトリ全体の広範な編集が伴います。

研究者たちはこれらの活動を「リポジトリレベルのエンコーディングタスク」と定義しました。

GitHub Copilot や Code Whisperer などのコーディング ツールには大規模なモデル機能が搭載されているため、プログラマーがローカライズされたコーディングの問題を解決するためのソリューションを提供しています。

しかし、現実には、リポジトリ レベルのコーディング タスクはより複雑であり、リポジトリ内のコードは相互に依存しており、リポジトリ全体がヒントに含めるには大きすぎる可能性があるため、LLM では直接解決できません。

この研究では、Microsoft チームはライブラリ レベルのコーディングを計画の問題として捉え、CodePlan と呼ばれるタスクに依存しないフレームワークを提案しました。

CodePlan は、複数のステップの編集チェーン (プラン) を組み合わせ、各ステップでコードの場所にある LLM を呼び出します。そのコードの場所のコンテキストは、リポジトリ全体、以前のコード変更、およびタスク固有の指示から取得されます。

CodePlan は、増分依存性分析、変更影響分析、および適応型計画アルゴリズムの新しい組み合わせに基づいています。

写真

下の図に示すように、複雑なライブラリ API の変更点が示されています。Microsoft の研究者の作業は、この変更に応じてコード ベースを移行することです。

写真

図 3 の左側は、複素数ライブラリを使用するコード ベースの関連部分を示しています。

具体的には、Create.cs ファイル内のメソッド func はライブラリ内の create_complex メソッドを呼び出し、Process.cs ファイル内のメソッド Process.cs は func を呼び出します。

写真

研究者は、図 1 のタスク記述と func 本体を LLM に渡して、図 3 の右側に示すように、変更された func コードを生成しました。

ご覧のとおり、LLM は create_complex API の呼び出しを正しく編集し、2 つの浮動小数点値のタプルではなく Complex 型のオブジェクトを返すようにしました。

この編集により、メソッド func のシグネチャが変更され、Complex 型のオブジェクトが返されるようになったことに注意してください。

これには、図 3 の左下隅に示すように、Process.cs の process メソッドなど、メソッド func の呼び出し元を変更する必要があります。プロセス メソッドの本体に適切な変更を加えないと、コードはビルドされません。

図 3 の右下には、プロセス メソッドを適切に変更した例が示されています。これにより、リポジトリを一貫した状態にして、コンパイル時にエラーが発生しないようにすることができます。

研究者にとって重要なことは、編集に必要な派生仕様を自動的に生成できる「リポジトリレベルのエンコーディングシステム」を構築することです。

LLM によって駆動されるライブラリ レベルのエンコーディング タスクは次のように定義されます。

写真

CodePlan フレームワークでは、入力はリポジトリ、自然言語命令または一連の初期コード編集を通じてシード仕様を表現するタスク、正確性オラクル、および LLM です。

CodePlan は、各ノードが LLM が満たす必要のあるコード編集義務を識別し、エッジがソース ノードの後に​​ターゲット ノードを満たす必要があることを示すプラン グラフを構築します。

CodePlan はコードの編集を監視し、プラン グラフを適応的に拡張します。

計画のすべてのステップが完了すると、リポジトリは Oracle によって分析されます。 Oracle がリポジトリを検証すると、タスクは完了します。エラーが見つかった場合、エラー レポートは次回のプラン生成および実行のシード仕様として機能します。

写真

さらに、CodePlan アルゴリズムは依存関係グラフも維持します。図 4 は依存関係グラフの構造を示しています。

写真

SOTA をリフレッシュ

研究者らは、パッケージ移行 (C#) と一時的なコード編集 (Python) という 2 つのリポジトリ レベルのタスクにおける CodePlan の有効性を評価しました。

各タスクは複数のコードベースで評価され、各コードベースでは複数のファイル (2 ~ 97 ファイル) への相互依存的な変更が必要になります。

写真

これまで、これほど複雑なコーディング タスクは LLM を使用して自動化されたことはありませんでした。

結果は、CodePlan がベースラインよりも真実と一致しており、エラーのないビルドや正しいコード編集などの有効性チェックに 5/6 のリポジトリが合格できることを示しています。

要約すると、CodePlan は、複雑なライブラリ レベルのコーディング タスクを自動化し、生産性と精度の両方を向上させる有望なアプローチを提供します。

多くの課題にうまく対処し、効率的で信頼性の高いソフトウェア エンジニアリング プラクティスの新たな可能性を切り開きます。

参考: https://twitter.com/adityakanade0/status/1706291449674039711

<<: 

>>:  ICCV'23論文表彰式は「神々の戦い」! Meta Split EverythingとControlNetが両方とも選出され、審査員を驚かせた記事がもう一つありました

ブログ    
ブログ    
ブログ    

推薦する

...

GoogleはAIモデルのトレーニングのためだけに「アメリカ版Tieba」のデータを購入するのに6000万ドルを費やした!アルトマンは第3位の株主である

事件は解決しました!先週、Redditは、匿名の企業が同社のユーザーコンテンツにアクセスしてAIモデ...

...

AIが高度な数学の核心を突破、微分方程式と不定積分を1秒以内に解き、その性能はMatlabをはるかに上回る

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

中国の創作力はGPT-4を超える、「最高の文章力」を持つ中国のビッグモデルWeaverが登場

ChatGPT などの一般的な大規模モデルは数百の機能をサポートしていますが、一般的な日常的なユーザ...

メジャーアップデート!マイクロソフトが人工知能プラットフォーム「Windows ML」を発表

マイクロソフトは、Windows 開発者に、コードネーム Redstone 4 と呼ばれる今春の W...

...

RPAは人工知能の究極の発展方向でしょうか?

ロボティック・プロセス・オートメーション (RPA) は、単調で反復的なタスクを排除するのでしょうか...

マスク氏はテスラ向けにChatGPTをカスタマイズする予定

編纂者:ヤン・ジェン制作:51CTO テクノロジースタック(WeChat ID:blog) Chat...

アルゴリズムを超えて: 人工知能と機械学習が組織に与える影響

[[319769]]今日、デジタルサイエンスは企業にとってますます魅力的になっています。しかし、デジ...

...

自動運転車は複雑な相互作用の問題をどのように解決するのでしょうか?清華大学とMITが共同でM2Iソリューションを提案

自動運転車が公道を走るようになると、必然的に道路上の「暗黙のルール」のいくつかを学習する必要が出てき...

...