コーダーの皆さん、おめでとうございます!マイクロソフトは、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が両方とも選出され、審査員を驚かせた記事がもう一つありました

ブログ    

推薦する

医療における人工知能: COVID-Net プラットフォームを使用してコロナウイルスを診断する方法

COVID-NetとオープンソースのAIベースのプラットフォームは、コロナウイルスの発生によって引き...

人工知能が都市の健康に革命をもたらす方法

今日、健康は精神的、社会的、政治的、経済的、都市的健康など、さまざまな分野に関連しています。今日、都...

基数ソートのヒント 1 つ、ソート方法 2 つ、ソートアルゴリズム 3 つ

[[421174]]基数ソートコンセプト基数ソートは、整数をビットごとにソートする非比較整数ソート ...

人工知能はどこにでもありますが、計画とコーディングは始めましたか?

人々は「ソフトウェア 2.0」の時代に入りつつあります。人工知能、ディープラーニング、機械学習、高度...

...

...

大規模言語モデルの最大のボトルネック:レート制限

マット・アセイ企画 | ヤン・ジェン制作:51CTO テクノロジースタック(WeChat ID:bl...

Docker Compose + GPU + TensorFlow が生み出す魔法の火花

Docker は素晴らしいです。開発と配布に Docker を使用する人が増えています。 Docke...

騒動を巻き起こしたディープマインドの論文は万能ではない

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

交通分野における人工知能、ビッグデータ、その他の技術の応用に関する簡単な議論

人工知能、ビッグデータ、モノのインターネット、クラウドコンピューティングなどの技術の台頭と発展に伴い...

2020 年に AI、分析、データ ガバナンスに影響を与える 5 つのトレンド

企業レベルの人工知能は、まさに臨界質量に達しました。 AI があらゆるビジネスの主要な構成要素となる...

...

...

...

中国では人工知能が非常に人気のある職業になる

中国IDCサークルニュース:中国のオンライン求人プラットフォームBoss Zhipinは、中国政府が...