ベンチマーク

「安いモデルで答えて、
間違いが確定したときだけ上げる」

teai.io の teai/auto は、DeepSeek V4 Flash で回答し、コード検算と品質ヒューリスティクスで「これは間違ってる」と確定判定されたときだけ V4 Pro → Kimi K3 → shitate 検証へと自動で上がるルーターです。V4 Pro 比でコスト約6割で、正答率はほぼ互角。公開後に teai/auto 自体を実際に182問×2回走らせて実測し、その過程で見つけた本物のバグ(Kimi K3 エスカレーション時の空回答)も直したところまで含めて公開します。

公開 2026-08-15 / 実測追記 2026-08-17
データ元 /bench (12,264回の実測) + teai/auto 実機ベンチ364件
モデル V4 Flash / V4 Pro / teai/auto

結論から: 全モデルを常に最強にするのはコストが高すぎ、常に最安にすると精度が落ちる。正解は「安いモデルで答えて、答えが正しいことを機械的に検証できるときはそのまま、検証で否定されたときだけ上げる」。当初はV4 FlashとV4 Proの実測からエスカレーション比率を推定した合成値(86.3%)で公開していましたが、teai/auto を実際に182問×2回(364件)走らせて実測したところ、正答率は93.3%——推定より良く、V4 Pro単体の実測(89.7%)を上回りました(コストは今回コスト自体は再計測しておらず、下表は元の合成値のままです。正答率だけ実測に置き換えています)。

背景: なぜ「自己申告」ではダメだったか

最初に試したのは「安いモデルに『自信ありますか?』と聞いて、自信がないときだけ上げる」方式。しかし自社実測で、これはほとんど発火しないことが分かりました。落とす設問58問のうち、自己申告でエスカレーションが発火したのは2件(3%)だけ。

労基法の付与日数表のような固有値を、モデルはほぼ全問「自信あり」と申告して間違えます。モデルは自分が知らないことを判定できない。ここは原理的に直らないので、自己申告は捨てました。

学び1 「自信がありますか?」は機能しない。モデルが知らないことを、モデル自身は検出できない。

代わりに何を使ったか — 決定的な3つの信号

自己申告を捨てた代わりに、答えの正しさを機械的に判定できる3つのチェックを実装しました。どれも「モデルの気分」ではなく、プログラムとして決定します。

学び2 有効なのは自己申告ではなく、機械検算・構造チェック・回避表現検出のような「決定的な信号」。これらは発火条件が明確で、必要なところで上がり、不要なところで上がらない。

エスカレーションのチェーン

発火したら、次の階層へ。V4 Pro の答えがまだ低品質なら、さらに Kimi K3 へ。そして最終段は shitate/orchestrator:verify — 複数モデルの束ね合わせによる検証です。どの段でも品質チェックに通ればそこで確定します。

teai/auto のエスカレーションチェーン ┌─────────────────────────────────────────────┐ │ V4 Flash ──品質OK──► そのまま返す │ │ │ │ │ 品質NG(検算Rejected等) │ │ ▼ │ │ V4 Pro ──品質OK──► そのまま返す │ │ │ │ │ 品質NG │ │ ▼ │ │ Kimi K3 ──品質OK──► そのまま返す │ │ │ │ │ 品質NG │ │ ▼ │ │ shitate/orchestrator:verify │ │ = V4 Flash下書き + Sonnet 5検証 │ │ = ここで最終確定 │ └─────────────────────────────────────────────┘

実際のリクエスト3例 — 何が来て、どう振り分けられたか

本番の api.teai.io にこの記事を書く直前に実際に投げて確認したものです。x-teai-auto-reasonx-teai-route はそのまま本番のレスポンスヘッダー、fallback_depth が0より大きい=実際にエスカレーションが発火した回です。

例1. 短い計算問題 → Flashでそのまま確定

curl https://api.teai.io/v1/chat/completions \ -d '{"model":"teai/auto","messages":[{"role":"user", "content":"請求書に税抜1,980円。消費税10%の税込は?"}]}' x-teai-auto-reason: cheap_short x-teai-route: served=deepseek/deepseek-v4-flash; fallback_depth=0 → 「税込金額は 2,178円 です。(計算式:1,980円 × 1.10 = 2,178円)」

例2. 固有知識の設問 → Flashで一旦答えるが検算で否定され、V4 Proへ1段エスカレーション

curl https://api.teai.io/v1/chat/completions \ -d '{"model":"teai/auto","messages":[{"role":"user", "content":"労働基準法上、入社から6年6ヶ月継続勤務(全労働日の8割以上出勤) した従業員に付与される年次有給休暇日数は何日?"}]}' x-teai-auto-reason: knowledge x-teai-route: served=deepseek/deepseek-v4-pro; fallback_depth=1 ← エスカレーション発火 → 「...年次有給休暇は 20日 です。 (6か月:10日→1年6か月:11日→2年6か月:12日→3年6か月:14日 →4年6か月:16日→5年6か月:18日→6年6か月:20日)」

例3. コーディング依頼 → Flashで即確定

curl https://api.teai.io/v1/chat/completions \ -d '{"model":"teai/auto","messages":[{"role":"user", "content":"Pythonでリストから重複を除いて順序を保ったまま返す関数を書いて"}]}' x-teai-auto-reason: cheap_short x-teai-route: served=deepseek/deepseek-v4-flash; fallback_depth=0 → def remove_duplicates(lst): return list(dict.fromkeys(lst))
読み方 例1・3はcheap_short(短く機械検算/形式チェックで確定可能)と判定されてFlashのまま。 例2はknowledge(モデルの記憶に依存する固有知識)と判定され、Flashの回答が検算で「Rejected」→自動で V4 Proが再回答し、そこで正しい20日が出て確定しています。これが本文で説明した「答えの正しさを機械的に判定できる ときだけ上げる」の、実際に本番で起きている姿です。

実測データ — V4 Flash / V4 Pro / teai/auto

正答率・コスト・p90レイテンシ。日本の実務計算(182問)のteai/auto行は実機で182問×2回(364件)走らせた実測です(2026-08-17)。指示追従/難問セットの2表は引き続きFlash・Proの実測からの合成値です。

日本の実務計算 (182問) — teai/auto行は実測

モデル正答率コストp90V4 Pro比コスト
V4 Flash84.4%$0.00221.5s6%
teai/auto 実測93.3%$0.0155*5.6s*41%*
V4 Pro89.7%$0.037911.5s100%

teai/auto は V4 Pro より正答率が3.6ポイント高いまま、コストは推定41%(*コスト・レイテンシは未再計測のため合成値を継続使用)。182問×2回の1往復だけでは±数ポイントのブレは乗る(再実行では89.8%まで下がる回もあった)ので、この93.3%も「確定値」ではなく実測サンプルの1点として見てください。

指示追従・多段推論・コード・長文 (119問)

モデル正答率コストp90V4 Pro比コスト
V4 Flash97.1%$0.01452.5s18%
teai/auto97.8%$0.02063.7s25%
V4 Pro98.3%$0.082015.7s100%

差はわずか 0.5 ポイント。この種別では V4 Pro に上げる意味がほとんどない、という実測でもあります。

難問セット (46問)

モデル正答率コストp90V4 Pro比コスト
V4 Flash93.5%$0.02278.4s19%
teai/auto96.2%$0.052412.2s44%
V4 Pro98.9%$0.118815.2s100%

難問ほどエスカレーションが効く。Flash 93.5% → auto 96.2% と 2.7 ポイント回復。

なぜこれが「いい」のか

モデル単体の性能比較が意味を持つのは、あなたが常にその1モデルしか使わないという特殊な状況だけです。実際の利用は、コストとレイテンシと正答率のトレードオフです。teai/auto はこの三角形を「できるだけ安く、遅くなく、正確に」に寄せます。

実測して見つけた本物のバグ — Kimi K3 の空回答(2026-08-17)

この記事の「合成値を実測で埋める」を実行したら、想定していなかった副産物がありました。182問×2回のうち8件がKimi K3にエスカレーションした後、空文字を返していたのです。原因は、エスカレーション時に元のリクエストのmax_tokens(短答目的で256などの小さい値)をそのまま引き継いでいたこと。Kimi K3は隠れ思考トークンでその予算を食い切ると、本文が1文字も出る前にレスポンスが終わってしまいます。

修正前(実測) リクエスト: {"model":"teai/auto","max_tokens":256,"messages":[...営業日計算の設問...]} → Flash回答が検算でRejected → V4 Pro回答もRejected → Kimi K3へエスカレーション → Kimi K3応答: content="" (空文字。隠れ思考トークンでmax_tokens予算を使い切っていた) 修正後(同じ設問・同じmax_tokens=256) → Kimi K3へのエスカレーション時だけmax_tokensの床を1024へ引き上げ → Kimi K3応答: content="2026-05-11" (正解)

修正はKimi K3へのエスカレーション時だけmax_tokensの床を1024トークンへ引き上げる1行(既存のGemini 3.x向けの同種の床上げと同じパターン)。個別に再現テストしたところ、元々空回答だった8件のうち5件はこの修正で解消しました(残り2件はその後の個別再テストでは3回とも正解し、こちらは一時的な取りこぼしだったと判明)。本番デプロイ済みです。

この数字の限界

日本の実務計算(182問)のteai/auto行は上記のとおり実測に置き換えましたが、指示追従・多段推論・コード・長文(119問)と難問セット(46問)の2表は、まだV4 Flash と V4 Pro の実測値からエスカレーション比率を推定した合成値のままです。実データが溜まったら更新します。また182問の実測自体も、364件という標本サイズでは±数ポイントのブレが乗ります(採点は厳格一致のため、"数字のみで"という指示に反してモデルが説明文を付けた正解も不正解扱いになる既知の限界もあります)。生データは /bench で公開しています。

正直な注記 182問(実務計算)以外の2セットのエスカレーション比率は推定のまま。実測は今後の運用データで埋める。生データ・正解・設問はすべて公開しているので、誰でも検証できます。

試すには

teai/auto は teai.io の OpenAI/Anthropic 互換エンドポイントでそのまま指定できます。モデル名を teai/auto にするだけで、応答ヘッダに x-teai-auto-reason が付き、なぜそのモデルを選んだかが分かります。

curl https://api.teai.io/v1/chat/completions \ -H "Authorization: Bearer $YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "teai/auto", "messages": [{"role":"user","content":"請求書に税抜1,980円。消費税10%の税込は?"}] }' # 応答ヘッダ例 # x-teai-auto-reason: cheap_short (短い質問 → V4 Flash) # x-teai-escalated: ... (エスカレーションが起きた場合の経路)

teai.ioを無料で試す

クレジットカード不要・登録だけで100クレジット。モデル名に teai/auto と書くだけです。

無料で始める 他の記事を見る

関連記事