Claude Fable 5 vs GPT-5.5:max_tokens の見落としがモデル比較の結論を変えた理由
Crazyrouter の OpenAI-compatible API を使い、claude-fable-5 と gpt-5.5 を数学、物理、Canvas アニメーションの長いコード生成タスクで比較した。焦点は max_tokens、finish_reason=length、completion_tokens、ブラウザ検証である。

Claude Fable 5 vs GPT-5.5:max_tokens の見落としがモデル比較の結論を変えた理由#
先に結論を書く。今回のテストは「Claude Fable 5 はアニメーションを書けない」という話ではない。最初の max_tokens 設定が低すぎたために、評価を誤りかけたケースである。
最初の同条件テストでは、gpt-5.5 は完全な HTML を一度で出力し、ブラウザ検証にも通った。一方で claude-fable-5 のアニメーションコードは途中で切れたため、最初は長いコード生成が不安定に見えた。しかしレスポンスのメタデータを見ると、原因は明確だった。
finish_reason = length
completion_tokens = 3200
max_tokens = 3200
これは出力予算を使い切り、サーバーが長さ制限で応答を停止したことを示している。その後、claude-fable-5 の max_tokens を 3200 から 8000 に上げて再テストしたところ、完全な HTML が返り、finish_reason=stop で自然終了し、ブラウザ検証にも通った。
この記事では、テスト設計、3 つの課題、最初の誤判定、Claude Fable 5 の再テスト結果、そして今後の長文コード比較で記録すべき項目を整理する。

Last updated: 2026-07-06.
要点#
今回の結果は単純な勝敗ではない。
| 項目 | 結論 |
|---|---|
| 数学推論 | claude-fable-5 と gpt-5.5 はどちらも正解 |
| 物理総合問題 | どちらも正解。Claude はエネルギー損失の説明が強かった |
長いアニメーションコード、max_tokens=3200 | gpt-5.5 は完了、Claude は途中で切れた |
Claude 再テスト、max_tokens=8000 | Claude も完了し、ブラウザ検証を通過 |
修正後の結論は次の通り。
低い出力予算では GPT-5.5 のほうが安定していた。
Claude Fable 5 は能力的に失敗したのではなく、長いコード生成により大きな出力予算が必要だった。
短い推論、数学の導出、物理の説明では、このテストだけで大きな正確性の差は見えなかった。しかし完全なページ、アニメーション、ツール、長いコードファイルを一度に生成する場合は、max_tokens、completion_tokens、finish_reason、実行検証を必ず確認する必要がある。
Crazyrouter で同様の OpenAI-compatible リクエストを試せる。
https://crazyrouter.com/register?utm_source=crazyrouter_blog&utm_medium=article&utm_campaign=model_compare_series_20260706&utm_content=claude-fable-5-vs-gpt-55-max-tokens-animation-test-2026-ja__quick_answer
テスト環境#
今回のテストは Crazyrouter の OpenAI-compatible API で行った。
Base URL: https://cn.crazyrouter.com/v1
Endpoint: POST /v1/chat/completions
Test date: 2026-07-06
Models:
- claude-fable-5
- gpt-5.5
temperature: 0.2
API endpoint には UTM パラメータを付けない。UTM は登録リンクなど、人がクリックするリンクにだけ付ける。
最小リクエスト例:
curl https://cn.crazyrouter.com/v1/chat/completions \
-H "Authorization: Bearer $CRAZYROUTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-fable-5",
"messages": [
{
"role": "user",
"content": "Toss a fair coin until HH appears for the first time. Compute the expected number of tosses and show the derivation."
}
],
"temperature": 0.2,
"max_tokens": 3200
}'
model を gpt-5.5 に変えるだけで、同条件の比較を実行できる。
なぜ選択式だけにしなかったのか#
モデル比較を選択式や短い質問だけで行うと、「どちらも正解」という結果になりやすい。それは API の動作確認にはなるが、実際のワークフローで起きる問題は見えにくい。
今回は 3 種類の課題を使った。
| 課題 ID | 種類 | 確認したいこと |
|---|---|---|
| MATH-003 | 期待値 | 誤った確率直感ではなく、状態方程式を立てられるか |
| PHYS-003 | 物理推論 | 衝突時の運動量保存と衝突後のエネルギー関係を区別できるか |
| CODE-003-ANIM | フロントエンドアニメーション | 完全で実行可能なインタラクティブ長文コードを出力できるか |
最初の 2 つは推論の正確性を見る。3 つ目は出力長、構造維持、コードの完全性、実行結果を見る。
実運用でよく起きる問題は「モデルが何も知らない」ことではない。むしろ次のような問題が多い。
出力が途中で切れる
イベントハンドラがない
closing tag がない
コードはそれらしいがブラウザでエラーになる
静的チェックは通るが Canvas が動かない
課題 1:HH が初めて出るまでコインを投げる#
問題:
公平なコインを投げ続け、初めて連続した表 HH が出るまで待つ。
1. 停止までに必要な投げる回数の期待値を求める。
2. 状態方程式または再帰で導出する。
3. なぜ答えが 4 ではないのかを一文で説明する。
標準解法では 2 つの状態を定義する。
E0: 現在 H の接頭状態がない
E1: 直前が H で、次の H を待っている
E0 = 1 + 1/2 E1 + 1/2 E0
E1 = 1 + 1/2 * 0 + 1/2 E0
解くと E0 = 6
結果:
| モデル | 結果 | 観察 |
|---|---|---|
claude-fable-5 | 正解 | 状態定義が明確で、失敗時に進捗がリセットされる点を説明 |
gpt-5.5 | 正解 | 導出がより詳しく、なぜ 4 ではないかの説明も強い |
この課題では差は出なかった。どちらも 1 / (1/4) = 4 という直感的な誤りを避けた。
課題 2:弾丸、木片、ばね、摩擦#
問題の要約:
質量 m = 0.02 kg の弾丸が v = 300 m/s で静止した木片にめり込む。
木片の質量 M = 1.98 kg、ばね定数 k = 800 N/m。
机との動摩擦係数 μ = 0.10、g = 9.8 m/s^2。
求めるもの:
1. 衝突直後の共通速度。
2. ばねの最大圧縮量。
3. どこで運動量保存を使い、どこでエネルギー関係を使うのか。なぜ全過程に機械的エネルギー保存を適用できないのか。
標準計算:
衝突瞬間:
mv = (M + m)V
V = 0.02 * 300 / 2.00 = 3.0 m/s
衝突後の圧縮段階:
1/2(M + m)V^2 = 1/2kx^2 + μ(M + m)gx
9 = 400x^2 + 1.96x
x ≈ 0.148 m
結果:
| モデル | 結果 | 観察 |
|---|---|---|
claude-fable-5 | 正解 | 衝突前の運動エネルギー 900J、衝突後 9J という比較を加え、損失を直感的に説明 |
gpt-5.5 | 正解 | 手順がきれいで、運動量とエネルギーを使う区間を安定して分離 |
この課題も両方とも正解だった。衝突瞬間には運動量保存を使い、衝突後のばね圧縮では摩擦の仕事を含むエネルギー関係を使っていた。
課題 3:Canvas アニメーションを生成する#
このラウンドで最も情報量があったのは 3 つ目の課題だった。
要求は JavaScript の断片ではなく、完全な単一 HTML ファイルだった。
800x500 canvas
中央の星
少なくとも 5 個の周回粒子
requestAnimationFrame
半透明の軌跡
一時停止/再開ボタン
リセットボタン
速度スライダー
FPS と速度倍率の HUD
init / update / draw / animate 関数を含む
外部ライブラリ、画像、ネットワーク不要
この課題は 4 つを同時に確認する。
| 能力 | 確認内容 |
|---|---|
| 長文出力の完全性 | HTML、CSS、JS が閉じているか |
| 制約順守 | コントロール、関数名、Canvas サイズがあるか |
| 実行可能性 | ブラウザコンソールにエラーがないか |
| 実際のアニメーション | 時間経過後に Canvas ピクセルが変化するか |
最初の結果:GPT-5.5 は完了、Claude は途中で切れた#
最初の同条件テストでは、両モデルとも max_tokens=3200 を使った。
gpt-5.5 は完全な HTML を返した。
finish_reason = stop
<!DOCTYPE html> を含む
</html> を含む
requestAnimationFrame を含む
init / update / draw / animate を含む
一時停止、リセット、速度スライダーを含む
canvas = 800x500
ブラウザ検証:
コンソールエラー: なし
canvas サイズ: 800x500
コントロール: あり
700ms 後 changedPixels = 37512
hasAnimation = true
つまり静止画ではなく、実際に動いていた。
claude-fable-5 も方向性は正しかった。800x500 canvas、粒子設定、軌道、中央の星、HUD、コントロールのスタイル、init、update、draw の一部を書いていた。しかしファイルは途中で止まった。
重要なメタデータ:
max_tokens = 3200
finish_reason = length
completion_tokens = 3200
HTML was truncated
完全な </script> がない
</body> がない
</html> がない
「実行可能な HTML アニメーション」を求める課題では、この成果物を完了とは判定できない。
なぜ最初の解釈は誤りだったのか#
出力ファイルだけを見ると、次のような誤った結論を書きやすい。
GPT-5.5 はアニメーションを書けるが、Claude Fable 5 は書けない。
しかし finish_reason=length が解釈を変える。
Chat Completions で finish_reason=length は通常、設定された長さ上限に達したことを意味する。さらに次の値があった。
completion_tokens = 3200
max_tokens = 3200
この場合、応答は自然終了していない。出力予算を使い切ったと見るべきである。
したがって、最初の失敗をすぐに「モデル能力の不足」と判断すべきではない。より妥当な仮説は、その HTML が 3200 output tokens を超えていたということだ。
Claude Fable 5 の再テスト:max_tokens を 8000 に上げる#
この仮説を確認するため、同じアニメーション課題で claude-fable-5 を再テストした。
| テスト | max_tokens | finish_reason | completion_tokens | HTML は閉じたか |
|---|---|---|---|---|
| 同じ予算で再テスト | 3200 | length | 3200 | いいえ |
| 出力予算を増加 | 8000 | stop | 3975 | はい |
重要なのはここである。
max_tokens=3200 では、Claude は再び出力予算を使い切って切れた。
max_tokens=8000 では、3975 completion tokens で自然終了した。
つまり、このアニメーション課題には 3200 output tokens より少し多く必要だったが、8000 に近いほど長いわけではなかった。最初の設定がちょうど足りなかった。
Claude Fable 5 の 8000 版もブラウザ検証を通過した。
コンソールエラー: なし
canvas サイズ: 800x500
一時停止ボタン: あり
リセットボタン: あり
速度スライダー: あり
700ms 後 changedPixels = 15795
hasAnimation = true
修正後の結論:
Claude Fable 5 はアニメーション課題を能力的に失敗したわけではない。
max_tokens=3200 では全文を収められず、max_tokens=8000 では完了し実行できた。

全体結果#
| 指標 | 結果 |
|---|---|
| テストモデル | claude-fable-5, gpt-5.5 |
| Endpoint | POST /v1/chat/completions |
| 最初のテストリクエスト数 | 6 |
| HTTP 200 | 6/6 |
returned_model と requested_model の一致 | 6/6 |
最初のテストで finish_reason=stop | 5/6 |
| 最初の切断 | claude-fable-5 のアニメーション課題 |
| Claude 再テスト | max_tokens=8000 で完了 |
応答時間:
| 課題 | claude-fable-5 | gpt-5.5 |
|---|---|---|
| MATH-003 | 17.87s | 28.18s |
| PHYS-003 | 23.21s | 43.05s |
| CODE-003-ANIM | 40.84s | 79.22s |
この実行では Claude のほうが速かった。ただし長いコード課題では、速度だけを見てはいけない。速く切れた応答は完成した成果物ではない。
手動評価#
| 課題 | claude-fable-5 | gpt-5.5 | 説明 |
|---|---|---|---|
| MATH-003 | 5/5 | 5/5 | どちらも期待値 6 を正しく導出 |
| PHYS-003 | 5/5 | 5/5 | どちらも運動量とエネルギー関係を正しく使用 |
CODE-003-ANIM、元の max_tokens=3200 | 2/5 | 5/5 | Claude は途中で切れた。GPT は完了しブラウザ検証を通過 |
CODE-003-ANIM、Claude max_tokens=8000 再テスト | 5/5 | - | Claude も完了しブラウザ検証を通過 |
この表は 2 つの問いを分けている。
同じ呼び出し制約ではモデルはどう振る舞ったか。
十分な出力予算を与えたとき、モデルは何ができるか。
最初の問いでは、max_tokens=3200 の条件で GPT-5.5 のほうが安定していた。2 つ目の問いでは、Claude Fable 5 はアニメーション能力で失敗していない。
実際のモデル選定への示唆#
次のようなタスクでは、このテストだけで大きな正確性の差は見えない。
数学の導出
物理の説明
短いコード
構造化された説明
短い JSON
一方で次のようなタスクでは、見えている回答だけを比較してはいけない。
完全な HTML 生成
長い JavaScript ファイル
インタラクティブなフロントエンドデモ
ツールページ全体の生成
長い設定ファイルやテストコード
次の項目を一緒に記録すべきである。
| フィールド | 重要な理由 |
|---|---|
max_tokens | 今回の最大出力量 |
completion_tokens | 出力が上限に近いかどうか |
finish_reason | 自然終了か、切断か |
content_chars | 出力量の大まかな確認 |
| 静的チェック | 関数、コントロール、タグ、必須項目の存在 |
| 実行検証 | ブラウザ、コンソール、ピクセル変化など |
これらがないと、長文コード比較は簡単に誤読される。
推奨する記録形式#
長文コードのモデル比較では、次のようなメタデータを保存するのがよい。
{
"task_id": "CODE-003-ANIM",
"model": "claude-fable-5",
"endpoint": "/v1/chat/completions",
"max_tokens": 8000,
"temperature": 0.2,
"http_status": 200,
"requested_model": "claude-fable-5",
"returned_model": "claude-fable-5",
"finish_reason": "stop",
"completion_tokens": 3975,
"validation": {
"console_errors": 0,
"canvas": "800x500",
"changed_pixels_after_700ms": 15795,
"has_animation": true
}
}
結論はモデルのテキストだけでなく、こうしたメタデータと実行証拠を合わせて判断するべきだ。
Crazyrouter の OpenAI-compatible API で同様のテストを実行できる。
https://crazyrouter.com/register?utm_source=crazyrouter_blog&utm_medium=article&utm_campaign=model_compare_series_20260706&utm_content=claude-fable-5-vs-gpt-55-max-tokens-animation-test-2026-ja__api_example
関連記事#
この記事はモデル比較シリーズの方法論を修正する位置づけである。
関連する Crazyrouter 記事:
- Claude Fable 5 vs Claude Sonnet 5 API behavior test
- Claude Sonnet 5 vs GPT-5.4 API comparison
- DeepSeek V4 Pro compatibility with Codex and Claude Code
- Common gpt-image-2 ecommerce failure reasons
- OpenRouter alternatives for production teams
共通する原則は明確だ。モデル比較はマーケティングページや HTTP 200 だけで判断してはいけない。実際の payload、実際の応答、失敗メタデータ、実行検証を見る必要がある。
FAQ#
これは GPT-5.5 が常に Claude Fable 5 より強いという意味か?#
いいえ。今回示したのは、元のアニメーション課題の max_tokens=3200 条件では GPT-5.5 のほうが安定していたということだ。Claude Fable 5 は出力予算を増やすと同じ課題を完了した。
なぜ finish_reason=length が重要なのか?#
応答が自然に終わったのではなく、長さ制限に達したことを示すためである。長いコードでは closing tag、イベントバインディング、関数の末尾が欠ける可能性がある。
completion_tokens だけでは不十分なのはなぜか?#
completion_tokens=3200 だけでは判断できない。max_tokens=3200 と同じだったため、出力予算を使い切ったと判断できる。
なぜブラウザ検証が必要なのか?#
コード生成タスクはテキスト検査だけでは不十分である。ブラウザ検証ではコンソールエラー、Canvas サイズ、コントロールの存在、実際のピクセル変化を確認できる。
長いコードで max_tokens はどのくらい必要か?#
固定値はない。ただし HTML、CSS、JavaScript を含む完全なページでは、出力予算を低くしすぎると危険である。finish_reason=length が出たら、まず予算を上げて再テストするべきだ。
このテストで production routing を決められるか?#
参考にはなるが、単独の基準にはならない。コスト、レイテンシ、コンテキスト長、構造化出力の安定性、失敗率、リトライ戦略、タスク種別も合わせて見る必要がある。
最終結論#
今回の比較で重要なのは、どちらかのモデルが永続的に勝ったということではない。重要なのは、最初の結論が早すぎたという点である。
元のテスト:
GPT-5.5: max_tokens=3200、完全な HTML、ブラウザ検証通過。
Claude Fable 5: max_tokens=3200、finish_reason=length、completion_tokens=3200、出力が途中で切れた。
再テスト:
Claude Fable 5: max_tokens=8000、finish_reason=stop、completion_tokens=3975、完全な HTML、ブラウザ検証通過。
最終結論:
低い出力予算では GPT-5.5 のほうが安定していた。
十分な出力予算では Claude Fable 5 もアニメーション課題を完了できた。
長文コードのモデル比較では max_tokens、completion_tokens、finish_reason、実行検証が必須である。
今後のモデル比較では、この 4 項目を必須の証拠として記録するべきだ。そうしないと、出力予算の問題をモデル能力の問題として誤って記録してしまう。





