# 段数と成功率の実験（記事 ai-workflow-step-count-reliability）

2026-10-07に実施。Claude Code 2.1.291の `claude -p` で、モデルは Haiku 4.5（`claude-haiku-4-5-20251001`）と Sonnet 5.5（`claude-sonnet-5-5`）。合計4,900回の呼び出し、list価格換算で約$36（実請求ではない）。

## 課題

「注文10件の請求額を、前の累計に足し込んで最終累計を出す」。1件の注文は商品行（数量×単価）のテキストで、書式は4種類が混ざる。請求額の規則は次のとおり。

- 数量が5以上の行だけ、小計を0.9倍して小数点以下切り捨て
- 全行の合計に消費税10%（切り捨て）を加えた税込額 gross を出す
- gross が5000円以上なら送料0、未満なら600円を足す

各段は独立の `claude -p`（ツールなし・設定なし・セッション保存なし）。前の段のモデル出力（累計）が次の段の入力になる。採点は、最終累計がコードで計算した正解と一致するか。合成データで、個人情報は含まない。

## 条件

| 名前 | 内容 | 本数 |
|---|---|---|
| B_haiku_8 | Haiku・1段=注文1件（8行）・10段チェーン | 100 |
| B_haiku_3 | Haiku・1段=注文1件（3行） | 60 |
| B_sonnet_8 | Sonnet・1段=注文1件（8行） | 30 |
| B_haiku_8_v3 | B_haiku_8の各段を3回実行して多数決 | 40 |
| C_haiku_8_parse | AIは数量と単価の読み取りだけ。割引・税・送料・累計はコード | 60 |
| A_haiku_1/3/6/10 | 同じ仕事（10件・各6行）を1・3・6・10段に分割 | 各60 |

B系は1本の10段チェーンの途中経過から、1段〜10段の成功率を同時に得ている（k段目の累計が正しいか）。同じチェーンの接頭辞なので、段数ごとの数値は独立ではない。

## 再現

```
python3 chain.py B_haiku_8 100 results/B_haiku_8.jsonl   # 条件名 本数 出力
python3 analyze.py                                       # 集計（Wilson 95%信頼区間つき）
python3 ../make_figures.py                               # 図版を再生成
```

`claude` コマンド（Claude Code）のログイン済み環境が必要。`results/*.jsonl` は生データ（1行=1チェーン。各段の直前の累計・モデルの答え・採点・投票内訳）。

## 注意

- Sonnetの実行では、Claude Codeが内部で使う補助呼び出しの分としてHaikuの利用も `modelUsage` に出る。費用にはそれも含まれる。
- 費用は `total_cost_usd`（list価格での換算額）。
- `claude -p` は日付や環境情報を文脈に入れる。システムプロンプトは短いものに差し替えている。製品版の挙動とは異なる。
