「ChatGPTなどLLMはプログラミングにおいてどのように使えるか」というテーマで、網羅的な調査が報告されました。
50以上のモデル、30以上の評価タスク、500以上の関連研究をもとに結果がまとめられています。
@ Ziyin Zhang et al., “A Survey on Language Models for Code”
LLMはコード処理の高い能力を持ちます。
また、LLM技術を応用したGitHub Copilotなどの商業サービスやオープンソースモデルも登場している状況です。
今回研究者らは改めてプログラミングにおけるLLMの役割を総合的に調べて整理しました。
■コード処理において現時点でLLMができること
1. オブスキュレーション(変数/メソッド名の変更)
2. デオブスキュレーション(識別子名の回復)
3. ユニットテストの生成
4. アサーション生成(正確性の検証)
5. プログラムの変異体の生成
6. コード合成
7. コード変換
8. コード修正
9. コード理解(検出や分類)
10. ドキュメント翻訳
11. ログ解析
12. プログラム合成
13. リポジトリ全体の評価
ただし、一般的なLLMと、コード処理に特化して訓練されたLLMが複数登場しており、求める精度によって使い分けることも重要です。
なお、公開されているGitHubページには、調査結果の根拠になった論文やリポジトリのリンクが掲載されています。