0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Claude Code のモデル4種に同じ課題を96回解かせた

0
Posted at

Haiku 5.5・Sonnet 5.5・Opus 5.5・Fable 5.1 のどれを使うか。「難しいことは上のモデルに」とよく言われますが、どのくらいの難しさから上が要るのか、そのとき費用と時間はどれだけ変わるのかは、自分で測らないと分かりません。

そこで、隠しテストで機械的に合否が決まる小さな課題6つを、Claude Code(2.1.303)の claude -p で4モデルに各4回ずつ、計96回解かせました。測り方と判定基準は、走らせる前に書いて固定しています(途中で変えた点は「設定を1つ変えた理由」に書きました)。

結論

  • 96回のうち失敗は1回だけで、それも Fable の安全装置による停止でした。 区間の併合、TTL つき LRU キャッシュの不具合修正、式の評価、npm 風の semver 範囲判定、誤りの位置まで返す厳密な JSON パーサ。どれも Haiku 5.5 が 4回中4回解きました
  • 違ったのは費用で、成功1回あたり Haiku 0.0078ドル、Sonnet 0.067、Opus 0.152、Fable 0.432。Haiku と Fable で約55倍
  • 速さは費用の順ではありません。 所要時間の中央値は Sonnet が最短。難しめの課題では Haiku が Sonnet の2〜3倍の出力を使い、遅くなりました
  • --tools でツールを絞ると、Fable 5.1 は無害な課題でも安全装置で止まりました(9回中9回)。 Opus 5.5 も 9回中4回。ツールを絞らなければ Fable は24回中1回でした
  • この大きさの課題(1〜2ファイル、仕様が文章で明確)なら、まず Haiku か Sonnet で回し、落ちたら上げる、で足ります。上のモデルの出番は、この実測では見つけられませんでした

課題

どれも Python の標準ライブラリだけで書く小さな課題です。仕様は各ディレクトリの TASK.md に書き、作業ディレクトリには見えるテストを1〜2件だけ置きます。判定に使う隠しテストは、終わったあとに外から当てます。隠しテストは TASK.md に書いたことだけを試し、書いていない挙動では落としません。

ID 中身 隠しテストで見る端 件数
T1 ページ分割の off-by-one を直す 範囲外のページ、per_page ≤ 0 の例外、総ページ数 7
T2 区間の併合を実装 接する区間の併合、未ソート、入力を書き換えない、start > end の例外 12
T3 2ファイルの LRU+TTL キャッシュの不具合を直す get で新しさを更新、期限切れを len に数えない、追い出す順番 10
T4 四則・べき乗・括弧の式評価を実装(eval 禁止) べき乗の右結合、-2^2 = -4、2^-1、0除算、壊れた式の例外 10
T5 npm 風の semver 範囲判定 satisfies を実装 ^0.x、~、x 範囲、ハイフン範囲、||、プレリリースの扱い 74
T6 厳密な JSON パーサを実装(json モジュール禁止) 誤りの位置 pos("01"→1、'{"a" 1}'→5 など43件)、サロゲートペア、入れ子 5000 段、ランダムな往復 600件 78

隠しテストが正しいことは、先に参考解(自分で書いた答え)で全部通り、配った初期状態では落ちることで確かめました。T6 は、T1〜T5 で差が出なかったのを見てから足した課題です(足す前に予想を書きました)。入れ子 5000 段は、素直に再帰で書くと Python の既定の上限(1000)で落ちる罠として入れています。

測り方

1回ごとに使い捨てのディレクトリへ課題を複製し(git init 済み)、次のように起動しました。

claude -p "Complete the task described in TASK.md in this directory. When you are done, reply with a one-line summary." \
  --model claude-haiku-5-5 \
  --output-format json \
  --allowedTools Bash,Read,Edit,Write,Glob,Grep,Task \
  --permission-mode acceptEdits \
  --setting-sources project --strict-mcp-config --disable-slash-commands \
  --max-turns 80 --max-budget-usd 10 < /dev/null
  • 合否:隠しテストが全部通れば成功。別プロセスで60秒の打ち切りつき。目で採点はしていません
  • 費用:出力 JSON の total_cost_usd(Claude Code が出す定価換算)。時間は起動から終了までの壁時計
  • モデル:claude-haiku-5-5/claude-sonnet-5-5/claude-opus-5-5/claude-fable-5-1。effort は指定せず各モデルの既定
  • 並べ方:モデルを交互に回し、同時に4本まで
  • 安全装置の停止・API エラーも1回として数え、やり直しで上書きしていません
  • 環境:クラウドのコンテナ(Linux)、2026-10-19 実施

結果:全体

モデル 成功 費用合計 成功1回あたり 1回の費用(中央値) 所要時間(中央値)
Haiku 5.5 24/24 0.188ドル 0.0078ドル 0.0052ドル 19.4秒
Sonnet 5.5 24/24 1.609ドル 0.067ドル 0.051ドル 13.9秒
Opus 5.5 24/24 3.652ドル 0.152ドル 0.127ドル 27.2秒
Fable 5.1 23/24 9.930ドル 0.432ドル 0.354ドル 40.6秒

(T1〜T6 の各4回、計24回ずつ。中央値は24回の値)

Fable の1回の失敗は T4 で、中身を見る前に「safeguards flagged this message」で止まったものです。解いて間違えた回は、4モデルとも1回もありませんでした。

結果:課題別

成功数・1回の費用の中央値・所要時間の中央値です。

モデル T1 T2 T3 T4 T5 T6
Haiku 4/4・0.003・12秒 4/4・0.003・11秒 4/4・0.005・19秒 4/4・0.005・19秒 4/4・0.018・94秒 4/4・0.011・49秒
Sonnet 4/4・0.038・12秒 4/4・0.033・9秒 4/4・0.039・11秒 4/4・0.052・17秒 4/4・0.105・36秒 4/4・0.096・35秒
Opus 4/4・0.082・18秒 4/4・0.087・17秒 4/4・0.101・24秒 4/4・0.129・31秒 4/4・0.238・61秒 4/4・0.208・53秒
Fable 4/4・0.209・25秒 4/4・0.204・25秒 4/4・0.358・36秒 3/4・0.344・41秒 4/4・0.647・90秒 4/4・0.772・114秒

読み取れること:

  • 費用の比は課題でいくらか動く。1回の費用の中央値を Haiku=1 とすると、Sonnet 6〜12、Opus 14〜29、Fable 37〜76(T6 では 1:9:19:72)
  • 難しい課題ほど Haiku は遅くなる。T5 は 94秒で Sonnet(36秒)の2.6倍、T6 は 49秒で Sonnet(35秒)の1.4倍。出力トークンの中央値は T6 で Haiku 9,826、Sonnet 3,728。たくさん書いて、試して、直す進め方でした
  • Sonnet はどの課題でも最速か、それに近い。T1〜T6 の時間の中央値で、Sonnet が最速でなかったのは T1(Haiku と同じ12秒)だけです

予想はどれだけ外れたか

走らせる前に書いた予想と比べると、外れは「難しい課題で差が出る」側でした。

予想 結果
T1・T2 は全モデルほぼ成功 当たり(全部成功)
差が出るのは T5(semver)と T4 外れ。T5 も全モデル 4/4
T6 で Haiku は 0〜2/4 外れ。4/4
成功1回あたりの費用は Haiku が最安 当たり(Sonnet の約1/9)
Fable は最も高く、成功率の上積みは T5 だけ 費用は当たり、上積みはどこにもなし

今のモデルの「仕様が明確な小さな課題を解く力」を、低く見ていました。この大きさの課題を並べても、成功率では差がつきません。

設定を1つ変えた理由:--tools で絞ると安全装置に止められた

最初は、条件をそろえるために --tools Bash,Read,Edit,Write,Glob,Grep で使えるツールを絞っていました。その設定で36回走らせたところ、次のようになりました。

モデル 回数 安全装置による停止
Haiku 5.5 9 0
Sonnet 5.5 9 0
Opus 5.5 9 4
Fable 5.1 9 9

止まった回の出力はこういうものです(Fable)。

API Error: Fable 5.1's safeguards flagged this message (https://www.anthropic.com/legal/aup). Our intentionally broad safeguards allow us to deliver more capabilities faster, but can sometimes flag legitimate coding and cybersecurity tasks. ...
Details: `[cyber]`

ページ分割の off-by-one を直すだけの課題でも止まっています。メッセージ自体に「正当なコーディングの作業も止めることがある」と書かれている種類の停止です。

T1 で切り分けると、--tools ありは(ほかの指定を変えても)4回とも停止、--tools を外すと 2回とも成功でした。クラウド版にだけある道具を --disallowedTools で外す形も、T3 で 2回とも停止しました。安全装置の引き金を探り当てることが目的ではないので、切り分けはここでやめ、--tools を使わず既定のツール一式で測り直しました(上の結果はすべてこちら)。既定のままでも、Fable は 24回中1回止まっています。

使う側としての教訓は2つです。

  • 無人で回す処理に Fable 5.1・Opus 5.5 を使うなら、安全装置で止まる回がある前提で、止まったら別のモデルでやり直す仕組みを入れる。 停止の回も費用はかかります(Fable で1回 0.03〜0.5ドル)
  • ツールを絞る設定は、安全のつもりで入れても、上のモデルでは逆に止まりやすくなることがある。少なくとも今回の環境ではそうでした

費用を読むときの注意:最初の1回は高い

Claude Code は毎回、同じ長い前置き(システムプロンプトとツールの定義)を送り、それはプロンプトキャッシュに載ります。キャッシュが冷たい最初の1回は書き込みの分だけ高く、Sonnet で 0.186ドル、2回目以降の中央値は 0.040ドルでした(4.7倍)。上の表の費用は、同じ前置きを1時間以内に何度も使う、温まった状態の値です。たまに1回だけ動かす使い方では、表より高くなります。

どう使い分けるか

この実測から言えるのは、次のところまでです。

  1. 仕様を文章で書ける小さな作業(1〜2ファイル、テストで確かめられる)は、まず Haiku か Sonnet。 成功率は同じで、費用は Opus の 1/20〜1/2
  2. 時間を急ぐなら Sonnet。 Haiku は安いが、難しめの課題で試行錯誤が増えて遅くなる
  3. 失敗したら上げる。 上げる判断は、失敗という事実で行う。最初から上のモデルにする根拠は、この大きさの課題では見つかりませんでした
  4. 上のモデルを無人で回すなら、安全装置で止まったときの逃げ道を用意する

限界

  • 課題は小さく、仕様が明確です。大きなリポジトリ、曖昧な依頼、長い作業、設計の判断が要る仕事では、上のモデルの差が出る可能性があります。今回の課題では、その差を測れなかったということです
  • 回数は各モデル24回(課題ごとに4回)。「失敗0」は「この回数で失敗が見えなかった」です
  • クラウド版 Claude Code の既定のツール一式で走らせています。手元の Claude Code とはシステムプロンプトの長さが違うので、費用の絶対値は環境で変わります。比はおおむね保たれると考えていますが、確かめてはいません
  • effort は各モデルの既定のままです。上げれば費用と時間は増え、成功率は(すでに100%なので)変わらない見込みです
  • 安全装置の停止は、その時点のモデルと環境での値です。変わりうるものです

モデルに渡す指示(CLAUDE.md)の下書きは、質問に答えるだけで作れる無料ツールで作れます:https://acerola-tools.acerola.workers.dev/?from=qiita-claude-code-model-cost-96runs
本記事は Zenn にも掲載しています:https://zenn.dev/acerola_jp/articles/claude-code-model-cost-96runs

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?