解説ねえ、トモヤくん!この「H…
解説
ねえねえ智也くん!この『C3-Bench』っていう論文、タイトルがかっこいいね!「コントロールできるコード補完」ってどういうこと?
ああ、それはAIにプログラミングを手伝ってもらう時に、ただコードを完成させるだけじゃなくて、人間の細かい注文をどれだけ守れるかっていう話だよ。
えっ、AIっていつも言った通りにやってくれるんじゃないの?「いい感じに書いて」って言えばやってくれるでしょ?
それが意外と難しいんだ。今までのAIの評価テストは「書いたコードがエラーなく動くか」しか見てなかったんだよ。でも実際の開発では「このアルゴリズムを使って」とか「3行以内で短く書いて」っていう制約が大事になるだろ?
あー、なるほど!カレーを作ってって頼んで、味は美味しいけど勝手に激辛にされたら困るもんね。そういう「作り方の指定」を守れるかどうかってことか!
例えは極端だけど、まあそういうことだね。この論文では、その「指示を守る能力」を測るために『C3-Bench』っていう新しいテストセットを作ったんだ。
そのテストって、具体的にどんなことをさせるの?
大きく分けて2つあるよ。1つは『ICC』。これは「特定のデータ構造を使え」とか「例外処理を入れろ」っていう、中身の書き方を指定するテスト。もう1つは『SCC』で、これは「1行だけ書け」とか「if文のブロックだけ作れ」っていう、コードの長さを指定するテストだね。
へぇー、長さまで指定されるんだ!厳しそう。それで、今のAIたちはちゃんとできたの?
40種類以上のモデルで実験したんだけど、面白い結果が出たよ。オープンソースのモデルは、普通のテストだとGPT-4みたいな高い性能を出すのに、この『指示を守るテスト』になると急に点数が下がっちゃうんだ。
えーっ!テスト勉強は得意だけど、先生の指示は聞かないタイプの子みたいだね。
はは、言い得て妙だね。既存のテストに特化して学習しすぎて、柔軟な指示への対応力が足りない可能性があるんだ。そこで著者たちは、Qwen2.5-Coderっていうモデルを使って、指示とコードがセットになった学習データを自動で作る仕組みを開発したんだよ。
データを自動で作っちゃうの?すごい!それで強くなったの?
そう。そのデータで学習した『Qwen2.5-Coder-C3』っていうモデルは、指示を守る能力が劇的に上がって、世界トップクラスの性能になったんだ。これがこの論文のすごいところだね。
すごーい!じゃあ、これからはもっと人間とAIが仲良くプログラミングできるようになるんだね。将来はどうなるのかな?
今後はもっと複雑な指示、例えばプロジェクト全体のルールを守らせるような研究が進むだろうね。ただ、まだ完璧じゃない。指示が矛盾してたり、すごく長いコードだったりすると失敗することもあるから、そこがこれからの課題かな。
なるほどねー。じゃあ私も、智也くんに「1秒で終わる宿題」を出すように指示したら、AIみたいにやってくれる?
それは指示を守る以前に、君が自分でやらないと意味がないだろ。僕はAIじゃないんだから、甘えるなよ。
要点
- 従来のコード補完の評価指標は「コードが正しく動くか」に偏っており、ユーザーの細かい指示(アルゴリズムの指定や行数制限など)を守れているかを評価できていなかった。
- 指示に従ったコード補完(Controllable Code Completion: CCC)を評価するための新しいベンチマーク「C3-Bench」を提案した。
- C3-Benchは、実装方法を指定するICC(Implementation-Control Completion)と、生成するコードの範囲を指定するSCC(Scale-Control Completion)の2つのタスクで構成される。
- 40以上のモデルを評価した結果、オープンソースモデルは従来のベンチマークでは高性能でも、指示に従う能力(C3-Bench)では商用モデルに大きく劣ることが判明した。
- Qwen2.5-Coderを活用したデータ合成パイプラインを構築し、指示に従う能力を強化したモデル「Qwen2.5-Coder-C3」を開発して高い性能を達成した。