MEASURED · 2026-11-01 JST · 203 TASKS × 6 MODELS × 2 CONDITIONS

同じ質問を40回したら、答えが2種類返ってきた。

要点

  • 条文を渡すと、6モデルすべて改善した。最大 +55.2ポイント(GPT-5.4 Nano 37.9% → 93.1%)。
  • 同じリクエスト40回のうち15回は、6トークンで即答し、すべて不正解だった。残り25回は推論して全問正解。
  • 同じ条件の2回目で、qwen は82/203問、nano は20/203問が正誤反転した。1回の合格は再現性の証明にならない。

建築基準法203問を6モデルで実測しました。条文を渡すと全モデルが大きく伸び、最大で+55ポイント。ところが1問の同じリクエストを40回繰り返すと、推論をする応答と、6トークンで即答する応答が混ざり、即答した15回はすべて不正解でした。

正解は e-Gov 法令API の条文と、条文の式に数値を入れた決定論的計算だけから作りました。採点にLLMは使っていません。203問・採点コード・全応答・実行コマンドを下記で公開しています。

teai は、複数のモデルを同じAPI・同じ料金体系で使えるサービスです。この記事はその測定記録です。

測定経路である teai.io の開発者による実測です。独立第三者評価ではありません。

結果:条文を渡すと、ほぼ別のモデルになる

モデル条文なし条文を渡す1問あたり中央値p90
GPT-5.5
openai/gpt-5.5
90.1%99.5%$0.02453.7s7.6s
Gemini 3.5 Flash
google/gemini-3.5-flash
81.3%99.0%$0.00524.1s6.2s
Gemini 2.5 Flash
gemini-2.5-flash
59.6%99.0%$0.00284.5s8.0s
GPT-5.6 Luna
openai/gpt-5.6-luna
87.7%98.0%$0.00222.9s3.9s
GPT-5.4 Nano
openai/gpt-5.4-nano
37.9%93.1%$0.00143.8s9.5s
Qwen3.5 Flash
qwen/qwen3.5-flash-02-23
33.0%61.1%$0.00032.7s24.7s

203問・temperature 0・各条件1回。安い順ではなく、今回測った6モデルをそのまま並べています。差が最も大きかったのは Gemini 2.5 Flash(+39.4ポイント)と GPT-5.4 Nano(+55.2ポイント)でした。

種別ごと:採光と容積率で、モデル差が最も開く

条文を渡した状態の内訳です。数値穴埋めは6モデルすべて100%、誤り検出も96%以上でした。Qwen3.5 Flash を除く5モデルでは、7項目すべてが87%以上に収まっています。開きが最も大きいのは Qwen の採光補正係数(18%)で、その行を外すと最大の差は applied の 87%〜100% になります。applied は、前面道路の制限で容積率を決め、敷地面積を掛け、建蔽率側と並べて答える2段の計算です。

モデル条文の数値
n=23
条文の同定
n=27
建蔽率
n=30
容積率
n=30
採光補正係数
n=40
誤り検出
n=23
応用計算(2段)
n=30
GPT-5.5100%100%97%100%100%100%100%
Gemini 3.5 Flash100%100%97%100%100%96%100%
Gemini 2.5 Flash100%100%97%100%100%100%97%
GPT-5.6 Luna100%100%100%100%92%100%97%
GPT-5.4 Nano100%93%97%97%88%96%87%
Qwen3.5 Flash100%63%73%40%18%100%67%

黄色は90%未満。42セル中7セルで、うち5セルが Qwen3.5 Flash の1行(採光 18%、容積率 40%、条文同定 63%、建蔽率 73%、応用 67%)。残りは GPT-5.4 Nano の 応用計算(2段) 86.7%、GPT-5.4 Nano の 採光補正係数 87.5% です。Qwen は同じ条件の2回目で 91.6% まで戻っており、この低さが恒常的な能力なのか、下で扱う応答の振れの一部なのかは、この測定だけでは切り分けられません。

本題:同じリクエストが、2種類の応答を返す

203問の測定中、Qwen3.5 Flash だけが同じ条件の2回目で 61.1% → 91.6% と動きました(82/203問が正誤反転)。検索結果はほぼ同一(プロンプトのトークン中央値 2,356 → 2,354)だったので、検索側の問題ではありません。切り分けるため、1問(day-000・採光補正係数)の同一リクエストを40回投げました。

推論あり・正解 (25回)即答・不正解 (15回)
応答の型回数出力トークン中央値待ち時間中央値回答
推論あり25413522.4s0.504
即答(推論なし)1560.5s0.700

正解は 0.504 です。推論ありの25回は全問正解、即答の15回は全問不正解で、中間はありませんでした。同じ入力・同じ温度・同じ条文を渡しているのに、返ってくる応答の型自体が毎回変わる、というのがここで起きています。

モデルを変えると、この振れ方は変わる

同じ1問を GPT-5.4 Nano で20回投げると、即答は0回、20回すべて推論ありで正解でした。ところが203問を通すと、同じ nano でも 93.1% → 96.1% と20問が反転します(推論トークンの中央値は 398 → 386 でほぼ同じ)。つまり「特定のモデルが壊れている」のではなく、応答の型が確率で変わり、それが問題との相性で得点差になる、という構造です。

もう1つ見つかった失敗:推論が本文に漏れて途切れる

4問×5回の追加試行(20回)で、応答本文に推論の区切り記号が混ざり、本文が「第 20」で切れた例が1件ありました。APIが返した出力トークンは 18,830 で、こちらが指定した max_tokens 12,000 を超えています(理由は未確認)。答えとして成立していないため不正解に数えています。長く考えること自体は正解率を上げますが、推論が本文に漏れると、正しい考えを持っていても使える答えになりません。

途切れた応答の実物(先頭600文字)

</think>

第 20

APIが返した本文そのままです。推論の区切り記号が本文に混ざり、途中で終わっています。出力トークン 18,830、待ち時間 49.5秒。

再測定のまとめ

モデル条件1回目2回目反転した問題出力トークン中央値(1回目)(2回目)
Qwen3.5 Flash
qwen/qwen3.5-flash-02-23
条文あり61.1%91.6%8263501
Qwen3.5 Flash
qwen/qwen3.5-flash-02-23
条文なし33.0%34.0%32639110
GPT-5.4 Nano
openai/gpt-5.4-nano
条文あり93.1%96.1%20398386

1回目と2回目は同じ203問・同じプロンプト・同じ採点コードです。差は日時だけ(qwen は 00:32 と 09:41 に実行)。他4モデルは各1回のみで、分散は測れていません。

費用と精度の関係

モデル正解数 / 203203問の実費正解1件あたり
Qwen3.5 Flash124$0.07$0.0005
GPT-5.4 Nano189$0.28$0.0015
GPT-5.6 Luna199$0.44$0.0022
Gemini 2.5 Flash201$0.57$0.0028
Gemini 3.5 Flash201$1.05$0.0052
GPT-5.5202$4.98$0.0247

「正解1件あたり」は 203問の推計費用 ÷ 正解数です。誤答にも費用を払うため、1問あたりの安さと正解1件あたりの安さは一致しません。Qwen は1問 $0.0003 で最も安い一方、精度 61.1% なので正解1件あたりは $0.0005、GPT-5.6 Luna は1問 $0.0022 で正解1件あたり $0.0022 です。1問あたりの差は 6.5倍ですが、正解1件あたりでは 4.4倍に縮みます。

費用面では、条文ありの測定で最も実用的だったのは GPT-5.6 Luna(98.0%・1問 $0.0022・中央値2.9秒)でした。最高精度は GPT-5.5(99.5%)ですが1問 $0.0245 で、Luna の約11倍です。ただしこれは各1回の測定であり、上で見たような振れを含んでいません。数ポイントの差でモデルを選ぶなら、先に振れ幅を測るべきです。

この記事の数値はすべて公開JSONから再計算できます。下の記録には、203問の全文・全モデルの全応答(採点理由つき)・40回反復の生ログ・実行コマンドを収録しています。

実際の3問と、6モデルの回答

タスクセットから3問を抜き出し、条文を渡した条件の回答をそのまま載せています(表示は96文字まで)。正解は条文か計算から機械的に決まっており、モデルの回答を正解にしていません。

day-000 — 採光補正係数

建築基準法施行令第20条2項により、次の開口部の採光補正係数を計算せよ。
・用途地域: 準住居地域
・開口部から隣地境界線(または対向部)までの水平距離 D = 0.53 m
・開口部の中心までの垂直距離 H = 1.5 m
・開口部は道路に面しない
・外側に幅90cm以上の縁側がある
小数第3位までで答えよ(例: 1.234)。

正解(建築基準法施行令第20条から機械的に生成): 0.504

モデル判定回答(条文あり)
GPT-5.5○0.504
Gemini 3.5 Flash○0.504
Gemini 2.5 Flash○0.504
GPT-5.6 Luna○0.504
GPT-5.4 Nano○0.504
Qwen3.5 Flash×0.700
app-004 — 面積上限の算定

建築基準法第52条・第53条により、次の敷地に建てられる建築物の「延べ面積の上限」と「建築面積の上限」を求めよ。
・用途地域: 第二種中高層住居専用地域
・敷地面積: 500 m²
・都市計画で定められた容積率: 50/10
・都市計画で定められた建蔽率: 3/10
・前面道路の幅員: 5 m(特定道路の加算は考慮しない)
・防火地域・準防火地域の指定なし、角地ではない
「延べ面積=○m²、建築面積=○m²」の形式で、小数第1位まで答えよ。

正解(建築基準法第52条から機械的に生成): 延べ面積=1000.0m²、建築面積=150.0m²

モデル判定回答(条文あり)
GPT-5.5○延べ面積=1000.0m²、建築面積=150.0m²
Gemini 3.5 Flash○延べ面積=1000.0m²、建築面積=150.0m²
Gemini 2.5 Flash○延べ面積の上限と建築面積の上限を以下に示します。 **1. 延べ面積の上限** 建築基準法第52条に基づき、以下のいずれか低い方の数値が適用されます。 * **都市計画で定められた容積…
GPT-5.6 Luna○延べ面積=1000.0m²、建築面積=150.0m² ※建築面積は、参考条文に記載のない建築基準法第53条に基づく。
GPT-5.4 Nano×延べ面積=2500.0m²、建築面積=150.0m²
Qwen3.5 Flash○容積率の算定: 敷地面積500㎡ × 都市計画容積率(50/10) = 2500㎡ 前面道路幅員5m(12m未満)のため、建築基準法第52条第2項第2号の適用がある。 第二種中高層住居専用地域…
cite-hou-20 — 条文同定

建築基準法の条文を特定したい。次の内容はどの条文に規定されているか。「建築基準法」第〇条の形で条番号まで答えよ。

内容: 構造耐力

正解(建築基準法第20条から機械的に生成): 建築基準法第20条

モデル判定回答(条文あり)
GPT-5.5○建築基準法第20条
Gemini 3.5 Flash○建築基準法第20条
Gemini 2.5 Flash○建築基準法第20条
GPT-5.6 Luna○建築基準法第20条
GPT-5.4 Nano○建築基準法第20条
Qwen3.5 Flash×20

条件と費用の数え方

限界:これは小さな自作ベンチマークで、新しい非公開テストではありません。長文コンテキスト・画像・自由作文・コード開発・エージェント動作は対象外です。単一モデルの分散は qwen と nano でしか測っておらず、他の4モデルは1回だけです。公表時点の上流の構成や混雑で、応答時間も応答の型も変わります。

実務で使うなら、この3つを先に決める

決めること今回の実測が示すこと実装
条文を渡すか、覚えさせるか条文なしだと6モデル中5モデルが90%未満。条文を渡すと全モデルが改善(最大+55.2ポイント)。条文検索を前段に置き、出典の条番号も一緒に返させる。
1回で確定するか、機械で検査するか同じリクエストでも応答の型が変わり、型が変われば正誤も変わった(40回中15回が即答・全問不正解)。数値・○×・所定の書式で答えさせ、範囲外や空回答は自動で不合格にする。
1回の合格を、再現性とみなすか同じ条件の2回目で、qwen は82/203問、nano は20/203問が反転した。重要判定は同じ入力を2回以上通し、不一致を人間の確認に回す。

そのまま使える出力形式の例

次の形式だけで答えよ。前置き・説明・単位は書かない。
1行目: ANSWER=<数値>
2行目: ARTICLE=<法令名>第<条番号>条

# 受け側の機械検査(例)
- ANSWER が空、または数値に変換できない → 不合格
- ANSWER が想定範囲(例: 採光補正係数なら 0.1〜1.0)の外 → 不合格
- ARTICLE が検索で渡した条番号の集合にない → 不合格
- 2回実行して ANSWER が不一致 → 人間の確認へ

この形にすると、40回の反復で起きた「6トークンの即答」も、本文が途中で切れた応答も、機械的に不合格にできます。中身の正しさは別に、条文と計算で照合してください。

これは今回の203問での観測で、他の法令・他のモデルにそのまま当てはまる保証はありません。同じ手順を自分の条文で回せば、同じ形で確かめられます。

teai の API ドキュメント(OpenAI互換・モデル一覧) · 料金

記録を確かめる

203問の全文・全応答・採点理由・反復プローブ・実行コマンド(JSON)

測定コードとタスク生成コードは kenchiku-bench リポジトリで公開しています。条文取得(corpus/fetch_laws.py)→タスク生成(bench/tasks.py)→自己テスト(bench/selftest.py)→測定(bench/run.py)の順で、同じ条件を再現できます。自己テストはAPIを叩かず、採点ロジックと条文の引き当てだけを検査します。

同じ手順を teai の API で回すなら、任意のモデルIDで bench/run.py --rag を実行してください。モデルを差し替えても採点は変わりません。