AIコードはきれいに見える、それが落とし穴だ
あるAIプログラミングコンテストで、最先端モデルが生成するコードは表面的にはプロフェッショナルに見えるが、実際のデータと時間制約の下で小さなエラーにより失敗することが明らかになった。この結果は、AIがコードの「見た目」に優れているだけで、完全な検証ができないことを示している。
最近、ThinkPolが主催したAIプログラミングコンテストで、最先端のAIモデルが生成するコードの意外な弱点が明らかになった。このコンテストでは、Nemotron、MiniMax、Gemini、DeepSeek、GLM、Grok、Kimi、ChatGPTなどのモデルが、与えられた仕様に基づいてPythonコードを書き、TCPサーバーに接続してリアルタイムでアルゴリズム問題を解決する。各モデルは仕様を一度読むだけでボットを生成し、そのボットは標準ライブラリのみを使い、タイムリミット内で複数ラウンドを戦う。条件は厳しくない:固定された文書化されたプロトコル、問題以外の敵対的入力はなし、並行処理なし、セキュリティモデルなし、スキーマ進化なし、部分的な失敗なし、現実世界のデータ破損なし。それでも、ほとんどのモデルのコードは正しく接続できないか、基本的な行形式を誤解するか、予期しないことがあると静かにクラッシュする。18のチャレンジのうち、典型的な例は「CollectTheDots」問題である。各ボットは矩形内のN個の点を最小の非重なり円で覆う必要があり、10ラウンドで点の数は50から100まで変化する。NemotronのパーサーはDOT行を読む際に、フィールドインデックス1をx座標、インデックス2をy座標として誤って使用し、インデックスが1つずれて、すべての提出がサーバーに拒否された。MiniMaxは浮動小数点の精度問題で、境界近くの点で小さな許容誤差を追加したために6ラウンド中6回拒否された。Geminiのボットは299行のコードがあったが、開始96ミリ秒で切断され、過剰なtry/exceptのためにエラーログも残らなかった。DeepSeekは最初の7ラウンドで優勢だったが、第8ラウンドでグリッド解像度が合わずに最下位に転落した。GLMは最初の4ラウンドは有効だったが、第5ラウンド以降はタイムアウトした。最終的にGrokが優勝したが、解法が最も優れていたわけではなく、エラーの破壊力が最小だったからである。他のチャレンジでは、WarehouseRobotでNemotronのパーサーがトークン数を誤ってチェックしたためすべてのITEM行をスキップし、PalinPrimeBitsでKimiがシードバグによりほとんどのラウンドで失敗したが、第10ラウンドでは偶然正解した。Blurry Image RevealではChatGPTとMiMoが大きな画像データの解析でタイムアウトし、Geminiが簡潔なコードで勝利した。これらの失敗は、現在のAIモデルがコードの表面的な外観を模倣するのは得意だが、すべての入力に対する完全な検証ができないことを示している。彼らは「これまで見たコードのように見える」ことを最適化しており、「敵対的なオラクルとの接触に耐える」ことではない。実際のAI支援開発では、人間が実行して失敗を見てエラーを貼り付けて繰り返すフィードバックループが機能するが、それを取り除くと、静的なチェックや表面的なレビューは通っても、現実の複雑な条件の前で脆弱になる。コンテスト主催者は「コードが単に完成しているように見えるだけでは完成ではない。このコンテストでは、最も壊れにくいコードが勝った。現実のシステムでは、それでは十分でないかもしれない。失敗の代償はメダルが少ないだけでなく、誰もテストしていない条件での障害やバグだからだ」と結論付けている。全18チャレンジの結果とソースコードはaicc.rayonnant.aiで公開されている。