本稿は、筆者が実施したモデル比較をもとに生成AIを使用して執筆しました。最終判断は筆者が行っています。
LLMを組み込んだアプリケーションでモデルを更新するとき、新しいモデルは「より高性能なのだから、少なくとも現在の挙動は維持される」と考えたくなる。
しかし実際には、モデル更新はライブラリのバージョンアップのような単純な差し替えではない。既存のアプリケーションとの互換性を、改めて検証する作業である。
後継モデルを含む比較構成で会話の評価が下がった
あるチャット機能で、代表的な会話と期待する結果を用意し、LLM-as-a-Judgeで評価している。
現行モデルでは20点満点中19.3点だった評価が、後継モデルを含む比較構成では15.0点になった。後継モデルが一般に低性能だと結論づけたいわけではない。あくまで、既存のアプリケーションとその会話設計に対しては、期待どおりに動かない場面が増えた、という結果である。
同じthinking levelでも、同じ条件ではない
モデル更新で見落としやすいのがthinking levelである。
設定値が同じ名前であっても、モデルが変われば、内部的な推論量や応答の傾向まで同じとは限らない。あるモデルのLOWと、別のモデルのLOWを、同じ実行条件として扱うことはできない。
さらに、プロンプトも中立な仕様書ではない。現在のモデルがどの程度指示に従うか、どのような場面で補足質問をするかといった振る舞いに、知らず知らず適応している。後継モデルでは、同じプロンプトでも会話の進め方が変わり得る。
つまりモデル更新とは、モデル名だけの変更ではない。モデル、thinking level、プロンプトの組み合わせを更新する作業である。
モデル提供者自身も、世代移行時には自分たちの評価セットで推論設定を改めて検証することを勧めている。Anthropic: Model migration guide
評価は「正解」を決めるものではない
今回の評価にはLLM-as-a-Judgeを使った。ただし、そのスコアを品質の絶対値とは考えていない。
LLM-as-a-Judgeには、冗長な回答を好む傾向や、比較順序に影響される傾向などの限界がある。Zheng et al., 2023 評価基準自体が現行モデルの振る舞いに過度に適応している可能性もある。
だから、スコアが下がっただけで結論は出せない。評価で差分を見つけ、失敗した会話ログを人間が読み、実際に意図した会話フローから外れているかを確認する必要がある。
それでも自動評価には価値がある。人間の印象だけでは見落としやすい変化を、同じ条件で繰り返し検出できるからだ。評価は採点機ではなく、調査すべき回帰を知らせる検知器として使うのがよい。
モデル更新時に確認すること
モデル更新では、次の単位で比較する。
- モデルとthinking levelの組み合わせ
- その組み合わせに対するプロンプト
- 代表的な会話での評価結果
- 失敗した会話ログと、その原因
- ユーザーが実際に望む体験との一致
ユーザーと開発者の(人間による)フィードバックを取り入れる
複雑な会話品質では、事前に用意したevalだけで正解を定義しきれない。開発者による会話ログのレビューだけでなく、リリース後にユーザーから得られるフィードバックも重要である。
フィードバックから見つかった問題は分類し、次回のモデル比較で確認できる代表的なテストケースとして追加する。自動evalは人間の判断を不要にするものではない。実利用で得た問題を継続的に検証できる形へ変えるための仕組みである。
















