前回の記事で、安いモデル1本とフロンティアモデル1本を比べました。
今回は範囲を広げて、GPT-4o・Claude(Sonnet 5・Opus 4.8)・Gemini 2.5 Pro・DeepSeek・Kimi K2.5・GLM-5・Qwen3.5・Grok-3・Mistral Large
の10モデルに、teai.io自身のAPI経由で同じ20問(条文の裏取り込み)を投げました。shitate/legal(te legalのRAG)も参考値として並べています。
一番の発見はランキングではなく、2つの異なるベンダーのモデルが、一言一句同じ誤答をしたことと、 自分のベンチ自体に2つの採点バグがあったこと、そしてベンチ中に本番の別のバグを1つ踏んだことです。全部書きます。
| モデル | 正答 | 備考 |
|---|---|---|
| Claude Sonnet 5 | 20/20 | |
| Gemini 2.5 Pro | 20/20 | |
shitate/legal(RAG) | 20/20 | 実行モデルはdeepseek-chat |
| GPT-4o | 19/20 | |
| GLM-5 | 19/20 | max_tokens不足のバグを修正して再測定(元は6/20、後述) |
| Claude Opus 4.8 | 18/20 | |
| DeepSeek Chat | 18/20 | |
| Qwen3.5 Plus | 18/20 | 採点バグ修正後(元は8/20) |
| Grok-3 | 18/20 | |
| Kimi K2.5 | 16/20 | 一部途中で切れた回答あり |
| Mistral Large | 16/20 |
上位はほぼ横並びで、フロンティアモデルなら日本法の基本的な数字はよく知っています。差がついたのは中位〜下位で、その中身が今回の本題です。
「8時間を超えて働く場合、休憩時間は何分以上必要ですか?」という設問に対して、この2モデルはこう答えました。
労働基準法で定められている通り、8時間を超えて働く場合、休憩時間は45分以上必要です。
一言一句同じです。正しくは「1時間(60分)以上」(労働基準法第34条・6時間超で45分、8時間超で1時間)。 別ベンダー・別アーキテクチャの2モデルが、ここまで一致した誤答をするのは偶然とは考えにくく、 同じ誤りを含む学習データ・二次資料(ブログや解説記事)が広く出回っている可能性が高いと見ています。 「有給休暇を年何日以上取得させる義務があるか」でも、Claude Opus 4.8・DeepSeek・Grok-3の3モデルがほぼ同じ説明 (「年間最低10日」)で同じ数字を外しました(正しくは「年5日の取得義務」)。複数モデルの多数決だけでは、 同じ誤りを共有していると意味がありません——これは前回のsure mode記事で見つけた教訓の再確認です。
「相続放棄をするには、いつまでに何をする必要がありますか?」に対するMistral Largeの回答です。
800の収入印紙、切手などです。
設問と無関係な内容で、他の19問はまともに答えていることを考えると単発の生成ゆらぎと見ていますが、 「時々まったく無関係なことを自信満々に言う」というモデルの一面がベンチで実際に出た例として記録しておきます。
前々回と同じで、モデルがまとまって間違えたように見えたら自分の採点を疑う方が当たります。
| バグ | 内容 |
|---|---|
| 数字の間の半角スペース | Qwen3.5 Plusは「8 日間」「60 分以上」のように数字と単位の間に半角スペースを入れる癖があり、単純な部分文字列一致の採点スクリプトが「8日」「60分」を拾えず不正解扱いにしていた。スペースを正規化して再採点したら8/20→18/20に変わった |
| 言い回しの網羅漏れ | 「通信販売にはクーリングオフ制度がありますか?」への正解は「原則としてない」だが、GPT-4oの「適用されません」のような言い回しをキーワードリストが拾えていないケースが残っている可能性がある(全件は洗い出していない) |
上の結果表はスペース正規化を反映した後の数字です。ただし2つ目のバグは網羅的には直しておらず、表の数字にも多少残っている可能性があります。
GLM-5だけ突出して悪い結果でしたが、内容を見て原因が分かりました。max_tokens=400で聞いた「遺留分とは何ですか?」への実際のAPIレスポンスです。
{
"choices": [{"finish_reason": "stop", "message": {"content": ""}}],
"usage": {"completion_tokens": 400, "prompt_tokens": 53, "total_tokens": 453}
}
completion_tokensがちょうど400(=上限)なのにcontentは空文字、finish_reasonは"stop"(打ち切りの"length"ではない)。
GLM-5は推論モデルで、内部の思考トークンに400トークン全部を使い切り、可視の回答が1文字も出る前に応答が終わっています。
max_tokens=2000に上げて同じ質問を再送すると、正しい回答が返ってきました(completion_tokens=1002)。
つまりGLM-5は日本法を知らなかったのではなく、短いmax_tokensだと空文字を返しながら満額課金される状態でした。 これは以前社内で見つけて修正したはずのパターン(推論モデルのmax_tokens不足による空出力課金)と同じで、GLM-5個別には まだ残っていたことになります。
max_tokens=2000に揃えて20問全部を測り直したところ、19/20まで上がりました(唯一の誤答は「通信販売にはクーリングオフ制度がありますか?」への言い回しの違いで、他モデルでも同種の取りこぼしが出た設問です)。
上の結果表の数字はこの再測定後のものです。GLM-5は知識では上位勢と並んでいたのに、デフォルトのmax_tokens設定だけで最下位に沈んでいたことになります。
推論モデル全般に言えることとして、短いmax_tokensでの空出力課金バグは個別モデルごとに再発しうるため、恒久対応(推論モデル検出時のmax_tokens引き上げ、または空出力時の返金)は別途検討します。
今回のRAG参考値(shitate/legal)は20/20でフロンティアモデル勢と並びました。仕組みは
前回の記事の通りで、259件の条文裏取り済みコーパスを検索してから答えています。
curl https://api.teai.io/v1/chat/completions \
-H "Authorization: Bearer $TEAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "shitate/legal",
"messages": [{"role":"user","content":"遺留分とは何ですか"}]
}'
teai/autoでも法律・フリーランス実務・OSSライセンスの質問なら自動でこのRAGが乗ります。詳細はSente Skillsへ。