大規模言語モデル(LLM)は人間が書いたような自然な文章を生み出すことができ、さらにコーディングも可能ですが、LLMが生成する文章やコードにはしばしば「幻覚(ハルシネーション)」と呼ばれる誤りが含まれることもあります。そのため、LLMの生成したコードは必ずしも正確とはいえませんが、エンジニアのサイモン・ウィルソン氏は自身のブログで「幻覚のせいでLLMを使った開発は無理だ」という指摘に疑問を呈しています。
LLMのコード生成には、幻覚によって存在しないライブラリや関数を使ってしまうという問題があり、LLMが生成したコードへの信頼性が低いという指摘があります。しかしウィルソン氏は「コードに誤りがあっても、単に実行するだけで即座にエラーが表示されるので、実際には最も対処しやすい問題だ」と述べています。
文章生成で幻覚が発生した場合、事実確認のスキルと批判的思考が必要であり、間違った情報を共有してしまうとユーザーの評判を直接傷つけるものとなってしまいます。しかし、コードの場合は「実行して動作するかを確認する」という強力なファクトチェックを行うことが可能です。
また、近年のChatGPT Code InterpreterやClaude Codeなどの「エージェント型」コードシステムでは、LLMシステム自体がエラーを認識し自動修正を行います。ウィルソン氏は「LLMを使ってコードを書いても実行すらしないなら、何をしているのだろうか」と問いかけました。
ただし、ウィルソン氏は「LLMが生成するコードは、変数名が適切だったり、コメントが充実していたり、型アノテーションが明確で論理構造が明瞭だったりするため、その見た目の良さが偽りの安心感をもたらす危険性がある」と指摘しています。
ウィルソン氏は、他の人が書いたコードや自分が書いたコードをレビューする時と同様に、LLMが生成したコードを積極的に実行してテストすることが重要だと説き、「コードが実際に動作するのを自分の目で確認するか、さらに良いのは、失敗して修正したことを確認するまでどんなコードであっても信用すべきではない」と主張しました。
LLMコードの幻覚を減らすためのヒントとして、著者は異なるモデルを試用したり、コンテキストを効果的に活用したりすることを推奨しています。たとえばウィルソン氏は、PythonとJavaScriptのコーディングにはClaude 3.7 Sonnet、OpenAIのo3-mini-high、GPT-4o with Code Interpreterがおすすめだとしています。そのほか、「数十行のサンプルコードを提供する」「GitHubインテグレーションで全リポジトリをコンテキストに入れる」などのテクニックもLLMのコーディングにおける幻覚を減らすヒントになると述べました。
最後にウィルソン氏は「LLMの生成したコード全行をレビューしなければならないなら、自分で書く方が速い」という主張に対し、「他人が書いたコードを読み、理解し、レビューするという重要なスキルへの投資不足を大声で宣言しているようなものだ」と反論。LLMが書いたコードをレビューすることは、他人が書いたコードをレビューする技術の良い練習方法だと結論づけました。
以下ソース
https://gigazine.net/news/20250304-llm-coding-hallu...
返信する