正解でも、そのまま使えるとは限らない。
GPT-6.1 SolとGemini 3.8 Flashに、同じ小さな12課題を渡しました。Solは返答そのままで12件合格。Flashは11件合格で、応答時間の中央値は短め。残るSQLも、Markdownのコード囲みだけを除くと同じ検査に合格しました。
各課題1回、teai.ioの開発者が自社API経由で測った小規模な合成課題の記録です。独立第三者評価でも、モデル全般の順位でもありません。
今回の実測結果
| モデル | 厳密合格 | 囲み除去後* | 応答中央値 | 13リクエスト費用推計 |
|---|---|---|---|---|
| GPT-6.1 Sol | 12/12 | 12/12 | 4.275 s | ¥1.4883 |
| Gemini 3.8 Flash | 11/12 | 12/12 | 2.699 s | ¥1.3161 |
*事後の原因確認です。Flashで不合格だった1応答の外側のSQLコード囲みだけを除き、変更していないSQLテストデータで再検査しました。厳密合格数は変えていません。他の応答も囲み除去で直ると保証するものではありません。
26リクエストすべてHTTP 200でした。返答のモデル名とゲートウェイのserved情報は指定モデルと一致し、全件fallback_depth=0。実際の経路は両モデルともOpenRouterと記録されています。これはゲートウェイの申告情報の照合であり、上流モデルの実体を独立に証明したものではありません。
時間は送信からHTTP応答全体の受信・JSON読込までで、通信とゲートウェイの時間を含みます。最初のトークンまでの時間ではありません。中央値は各13リクエストで、ツールの2往復を別々に含みます。Solの最大観測値は32.867秒で、中央値だけでは待ち時間の体験を表せません。
SQLの不合格は、形式の違いでした
修正課題では「SQLite SQLだけ」と指定しました。Flashは答えをMarkdownのコード囲みで包み、その全文をSQLiteへ渡すと実行に失敗しました。冒頭と末尾の囲みだけを除くと、同額の別請求、複数支払い、請求のない顧客を含め、期待した行と列名が得られました。
```sql
SELECT
c.id AS customer_id,
COALESCE(inv.billed, 0) AS billed,
COALESCE(pmt.paid, 0) AS paid
FROM customers c
LEFT JOIN (
SELECT customer_id, SUM(amount) AS billed
FROM invoices
GROUP BY customer_id
) inv ON c.id = inv.customer_id
LEFT JOIN (
SELECT i.customer_id, SUM(p.amount) AS paid
FROM payments p
JOIN invoices i ON p.invoice_id = i.id
GROUP BY i.customer_id
) pmt ON c.id = pmt.customer_id
ORDER BY c.id ASC;
```
答えをそのまま実行するソフトウェアでは、形式も仕様の一部です。人が確認する作業なら、この返答は小さな整形で使える可能性があります。「SQLを考え間違えた」とまとめず、両方の見方を残します。
12課題で確かめたこと
| 課題 | Sol | Flash |
|---|---|---|
| 請求・入金集計と未定の期日 | PASS | PASS |
| 予算提案と承認済みの区別 | PASS | PASS |
| 記録内の不正な指示の扱い | PASS | PASS |
| 値引き・送料・税・クーポン計算 | PASS | PASS |
| 固定UTC+09:00への時刻変換 | PASS | PASS |
| 矛盾する論理条件 | PASS | PASS |
| 並び順の制約 | PASS | PASS |
| 返品規則の境界条件 | PASS | PASS |
| アクセス規則と拒否優先 | PASS | PASS |
| SQLの顧客別集計 | PASS | PASS |
| SQLのJOIN重複修正 | PASS | FAIL · コード囲み |
| 指定ツール呼出と最終JSON | PASS | PASS |
ツールはlookup_orderを強制指定し、引数を検査した後に固定の架空結果を渡して最終JSONを検査しました。自律的なツール選択や実注文サービスの検証ではありません。SQLの2課題は小さな同一のメモリ内テストデータを共有し、SQL全般を独立に網羅しているわけではありません。
条件と費用の数え方
- 開始は2026-10-04 01:28:15 JST(10月3日16:28:15 UTC)。各1回、temperature=0、max_tokens=1024、非ストリーミング。逐次呼出で、課題ごとに先に呼ぶモデルを交互に入れ替えました。
- API IDはopenai/gpt-6.1-solとgoogle/gemini-3.8-flash。同じシステム指示・課題文で、クライアント再試行は0回。各応答の配信モデル情報を照合し、モデル切替は観測されませんでした。
- 採点はJSON解析後の一致、前後空白除去後の文字列一致、読み取り専用SQLiteでの結果一致、または指定ツール呼出と最終JSONです。LLM採点は使っていません。原文・採点コードは下記で公開。SQL採点はテストデータ上の出力を検査し、構文上の指示すべてを検査するものではありません。
- 合計のteaiクレジット円換算推計は2.8044375円です。返された入出力トークン数に取得時の公開クレジット単価を掛け、1円=6クレジットで換算しました。照合済み請求額や上流事業者の確定原価ではありません。usageの欠落は0件でした。
- 推論前に200円上限を確認しました。1ドル200円、上流最大2試行を見込む事前引当は113円、実際のリクエスト引当合計は108円です。引当は予算管理値であり支出額ではありません。取得時の料金表もデータに収録しています。
- Sonnet 5.5は以前のアクセス拒否の解消が未確認のため対象外です。この実験では呼び出しておらず、点数も付けていません。
既存の合成課題を再利用したもので、新しい非公開テストではありません。1回の測定から再現率や統計的優位は推定できません。長文コンテキスト・画像・自由作文・コード開発・自律エージェントは対象外です。経路や混雑で応答時間も変わります。
記録を確かめる
JSONのsourcesに、ベンチ実行コード(task_benchmark_20261004.py)、課題文と採点(pareto_benchmark.py)、SQLiteテストデータと架空ツール(evaluate_selected_models.py)を収録しています。後ろ2つは再利用した依存コードで、各ファイルの単独実験用設定は今回の実行条件ではありません。今回の固定条件はmanifest.configにあります。
今回の学びは、内容と形式を分けて確かめることです。Solは12件とも直接使える返答。Flashは中央値の待ち時間が短く、1件だけ囲み除去が必要でした。モデルを選ぶ前に、実際のソフトウェアが求める仕様に合った検査を用意することが大切です。