# 実験素材：AIは資料の数字をどこで間違える？

記事：`/ja/blog/ai-slide-numeric-accuracy-check`
実施日：2026-10-17。Claude Agent SDK（Python）で、Read・Write（ラウンド2の一部はBashも）だけを渡して実行しました。

## 中身

| ファイル | 内容 |
|---|---|
| `materials/metrics.csv` `regions.csv` `meeting-notes.md` | ラウンド1の入力資料（架空） |
| `materials/monthly.csv` | ラウンド2の入力資料（架空の月次売上） |
| `code/run.py` | ラウンド1の生成。条件A〜E、3モデル×各10回 |
| `code/run2.py` | ラウンド2の生成。暗算（Read/Write）とコード（Bash付き） |
| `code/run3.py` `judge3.py` | 追加実験：HaikuのデッキAをSonnet・Opusに見直させる。結果は `decks_round3_strong_review.json` `judge_scored_round3.json` |
| `code/run4.py` `judge4.py` | 追加実験：Haikuに「主張の台帳」（条件F）で頼む。結果は `decks_round4_claims_ledger.json` `judge_scored_round4.json` |
| `code/judge.py` `judge2.py` | 1行ずつの判定（Sonnet 5.5）。正解表とラベルの定義が入っている |
| `code/regex_check.py` `agg.py` `final.py` | 正規表現の照合、集計、人の目で直した後の再集計 |
| `decks_round1.json` | ラウンド1の全デッキと応答（run名/ファイル名 → 本文） |
| `decks_round2.json` | ラウンド2の全デッキ |
| `judge_scored_round1.json` | ラウンド1のモデル判定（行ごとのラベルと理由） |
| `judged_lines_round1.json` | 判定を人が確認した後の、誤り行の一覧（種類、デッキ、行番号、本文） |
| `wrong_lines_round2.json` | ラウンド2で誤りと確認した行番号 |

## 条件

- A：資料3つを渡し、「経営会議向けに8枚」とだけ頼む。
- B：A＋「売上と粗利益の正本はmetrics.csv、meeting-notes.mdは正本にしない、Q3の170は提案値」。
- C：B＋「作る前に数字の台帳を作り、台帳の数字だけ使い、最後に照合して直す」。
- D：Aで作ったデッキを、同じ会話で「元資料と1行ずつ照合して直して」。
- E：Aで作ったデッキを、別のAIに「元資料と1行ずつ照合して直して」。

- F（追加実験、Haikuのみ）：B＋「数字だけでなく原因・評価・見通しの文も台帳（claims.md）に書く。資料にないことは足さない。比較には基準を書く。資料が確認していない原因は仮説と書く」。

モデルは claude-haiku-4-5-20251001、claude-sonnet-5-5、claude-opus-5-5。各条件10回。

## 注意

- 判定にはSonnet 5.5を使い、誤りと判定された行はすべて人の目で確認して、判定ミスを除いた（除いた行は `final.py` の `DROP`）。
- 実行の途中で `run.py` を2回起動している（最初の並列数が低く遅かったため）。結果は最後の起動分だけを使った。
- 1つのデッキ内で同じ誤りが複数行に出ることがあるので、記事では「デッキ数」と「行数」を分けて書いている。
