Helping LLMs Improve Code Generation Using Feedback from Testing and Static Analysis

本論文は、テストと静的解析からのフィードバックを活用することで、オープンソースの LLM が生成したコードの品質評価や自己改善(特に修正能力)が可能であることを示し、LLM によるコード生成の安全性向上への有望な道筋を提示しています。

Greta Dolcetti, Vincenzo Arceri, Eleonora Iotti, Sergio Maffeis, Agostino Cortesi, Enea Zaffanella

公開日 2026-03-16
📖 1 分で読めます☕ さくっと読める

Each language version is independently generated for its own context, not a direct translation.

🍳 物語:AI 料理人と「味見・チェック」のチーム

この研究では、4 人の有名な「AI 料理人(LLM:Llama, Gemma, Mixtral など)」を雇いました。彼らの仕事は、注文された「料理(プログラミングの課題)」を、C という言語でレシピ(コード)として作ることです。

しかし、AI 料理人には 2 つの大きな弱点がありました。

  1. 味がおかしい(バグがある): 注文した料理と全然違う味が出たり、食べられなかったりする。
  2. 危険な食材を使っている(セキュリティの穴): 毒が入っていたり、火傷するリスクがある。

そこで研究者たちは、AI 料理人をただ放置するのではなく、**「味見係(テスト)」「安全検査員(静的解析)」という 2 人のプロを付け、AI を「自分で反省して直す」**というトレーニングを行いました。


🔄 3 つのトレーニング段階

この研究は、以下の 3 つのステップで進みました。

1. 料理を作る(コード生成)

まず、AI 料理人に「この食材で料理を作って」と注文します。

  • 結果: 100 個の料理を作ってもらいましたが、半分以下(約 46%〜65%)しか「正解の味」になっていませんでした。 残りは、火が通ってなかったり、具材が足りなかったりしました。
  • 安全チェック: さらに、毒や危険な食材がないか専門の検査員(Infer というツール)にチェックさせました。
  • 結果: 幸いにも、**9 割以上は「毒なし」**でしたが、それでもいくつかの料理に「危険な食材(メモリ漏れや空ポインタなど)」が混入していました。

2. 自分で味見をする(自己評価)

次に、「さっき作った料理が、本当に注文通りで安全か?」を、AI 料理人自身に聞いてみました。

  • 結果: AI は自分の料理の味をほとんど判断できませんでした。
    • 味がおかしい料理を「美味しい(正解)」と褒めちぎったり、
    • 安全な料理を「まずい(危険)」と誤解したり。
    • 自分自身が作った料理を特別に褒める傾向(自己愛)も見られませんでした。
    • 結論: 「AI は自分のミスを自分で見つけるのが、実はものすごく苦手」なのです。

3. 直してもらう(修復)

ここが最も重要な部分です。
「この料理、味が違うよ(テスト失敗)」や「ここに毒があるよ(検査結果)」という具体的なアドバイスを AI 料理人に渡しました。そして、「直して!」と頼みます。

  • 結果: 驚くほど上手に直せました!
    • 味がおかしかった料理の約 6 割が、アドバイスを与えたら正解になりました。
    • 毒が入っていた料理の約 9 割が、アドバイスを与えたら安全になりました。
    • 特に、大きなモデル(Llama 70B など)は、他の AI が作った失敗作も上手に直しました。

💡 この研究からわかったこと(結論)

  1. AI 単独では不完全: AI に任せて「とりあえずコードを作らせる」だけだと、バグや危険なコードが混ざりやすいです。
  2. 自己診断は苦手: AI に「自分のコードにミスがあるか?」と聞いても、ほとんど当てられません。
  3. フィードバックが魔法: しかし、「どこが間違っているか(テスト結果)」「何が危険か(検査結果)」という具体的な情報を教えてあげれば、AI は「あ、そうだったのか!」と理解して、コードを劇的に改善できます。

🚀 今後の展望

この研究は、**「AI が作ったコードを、人間がチェックするのではなく、自動でテストと検査を行い、その結果を AI に返して直させる」**という仕組み(パイプライン)の提案です。

まるで、**「AI 料理人が失敗したら、すぐに味見係が『塩が足りないよ』と教えて、AI が自分で味を調整する」**ようなシステムです。

これによって、将来的には AI が作るソフトウェアが、より安全で信頼できるものになることが期待されています。特に、メモリ管理が難しい C 言語のような分野でも、このアプローチが有効であることが示されました。


一言で言うと:
「AI にコードを書かせるのは便利だけど、そのまま使うと危険。でも、『どこがダメだったか』を具体的に教えてあげれば、AI は自分で上手に直せる! だから、AI と検査ツールのチームワークが重要だよ」というお話です。

このような論文をメールで受け取る

あなたの興味に合わせた毎日または毎週のダイジェスト。Gistまたは技術要約を、あなたの言語で。

Digest を試す →