claude-sonnet-5
生データでも集計できる。 ただし保守的に落とす
両条件で17〜19項目一致。貸切日の除外計算まで自発的に行う。 一方、条件Aでは天候分析を丸ごと「対象外」とした。慎重さと網羅性がトレードオフになっている。
Case 05 / 飲食店の月次レポート
架空の飲食店の日次売上から月次レポートを生成させ、生データを渡す条件と集計済みの表を渡す条件で比較しました。同じモデル・同じプロンプトでスコアが 0/19 から 18/19 に変わっています。
Conclusion
架空の飲食店の日次売上から月次レポートを生成させ、生データを渡す条件と集計済みの表を渡す条件で比較しました。同じモデル・同じプロンプトでスコアが 0/19 から 18/19 に変わっています。
渡すデータの形を変えただけで、点数が0点から18点になった
飲食店の日次売上から月次レポートを作らせました。生の明細を渡すと19項目中0件しか正しく計算できなかった32Bが、集計済みの表を渡すと18件を正解しました。モデルもプロンプトも同じで、変えたのは入力の形だけです。
間違っていても、レポートの見た目は整っていた
計算を誤ったときも、出力は体裁の整ったレポートとして返ってきます。明らかに壊れた出力なら気づけますが、数字が違うだけの整った文章は、検算しない限り誤りに気づけません。レポート生成をAIに任せるうえで、もっとも警戒すべき失敗の形です。
「集計はプログラム、解釈はAI」という切り分けが有効だった
前のケース(アクセス解析)で出た「ローカルLLMに実数の導出は任せられない」という結論は、「計算を外に出せば任せられる」と更新できます。AIに何をさせないかを決めることが、そのまま精度の設計になります。
Input
小規模飲食店の月次レポートは、POSデータは持っているのに活用できていない典型例。 数字を集計する手間と、そこから何が言えるかを考える手間の両方が店主一人にのしかかる。 売上データは取引先・原価・従業員数と紐づく機微情報でもあり、閉域で回せる価値があります。
QUESTION 1
QUESTION 2
QUESTION 3
QUESTION 4
架空の店舗「みなも亭」(カフェ&ダイニング/20席/水曜定休)の2026年5月・6月の日次売上。 実在の店舗とは無関係です。
CSVの列:日付/曜日/天候/営業/ランチ客数/ランチ売上/ディナー客数/ディナー売上/備考
| ID | 内容 | 根拠となる数値 |
|---|---|---|
| I1 必須 | 減収の構造は「客数減 × 単価増」 | 売上 -7.6%、客数 -10.1%、客単価 +2.8% |
| I2 必須 | ランチ新メニューが客単価を押し上げた | 1,177円 → 1,422円(+20.8%) |
| I3 | 雨天のディナー客数が明確に少ない | 雨 10.8人 vs 晴 16.9人 |
| I4 | 金曜ディナーの客単価が突出 | 金 4,829円 vs 他曜日 3,517〜3,603円 |
| I5 | 月曜が最も弱い | 月 19.2人/60,712円 vs 土 29.7人/114,017円 |
| I6 | ディナーの席回転率が1.0を下回る | ディナー 0.76(ランチ 1.22) |
| 罠 | 内容 | 誤答したときの値 |
|---|---|---|
| 罠1 | 客単価を、日別客単価の単純平均で出す | 2,278円(正解 2,325円・差47円) |
| 罠2 | 休業日(6/10)を平均の母数に含める | 日平均売上 88,863円(正解 92,281円) |
| 罠3 | 貸切日(6/20・22名132,000円)を通常営業の傾向に混ぜる | 「土曜のディナー客単価が高い」 |
| 罠4 | 母数5日の「曇」から結論を導く | 「曇の日が最も売れる」 |
Process
プロンプトは全モデルで同一、1文字も変えていません。
1
両条件・全モデルへ1文字も変えず投入する。 差し込むデータだけが違う状態を保つ。
2
3モデル × 2条件 ×
n≧3= 18件(+クラウド6件)。
3
19項目の一致と、罠1〜4の踏み方、5セクションの有無、前月比の方向が判定される。
4
7軸に ◎○△× を付け、判定理由を1行ずつ残す。
条件AとBのスコア差を必ず記録する——これがこのケースの中心的な数字。
Scoring
採点キーはモデル出力を1件も見ないうちに確定させています。実行後に基準を足したり緩めたりしていません。
全ケース共通の7軸を、このタスク用に読み替えて使う。採点キーはモデル出力を1件も見ないうちに確定させてある。
| 軸 | 共通の名称 | このケースでの読み替え |
|---|---|---|
| ① | 網羅性 | 指定した5セクションと必須指標を漏れなく出せているか |
| ② | 抽出の正確性 | 集計値の計算精度(客単価・平均・前月比・回転率) |
| ③ | 属性の正誤 | 曜日・時間帯・天候の区分に、正しい数値が紐づいているか |
| ④ | 曖昧な事項の扱い | 母数の小さい区分・休業日・貸切日を適切に扱えるか |
| ⑤ | ハルシネーション | データにない数値・事実の創作 |
| ⑥ | ノイズ除外 | 特異日を一般傾向として扱わない。一般論の施策を並べない |
| ⑦ | フォーマット遵守・日本語品質 | 5セクション構成、見出し、日本語の自然さ |
Result
◎=誤りゼロ / ○=軽微な誤り1〜2 / △=誤り3以上または重大な誤り1 / ×=破綻
| 軸 | Sonnet 5 | 32B | 14B | 8B |
|---|---|---|---|---|
| ①網羅性 | ○ | ◎ | △ | ◎ |
| ②抽出の正確性 | ◎ | × | × | × |
| ③属性の正誤 | ◎ | × | × | × |
| ④曖昧な事項の扱い | ◎ | △ | △ | △ |
| ⑤ハルシネーション | ◎ | × | × | × |
| ⑥ノイズ除外 | ◎ | △ | △ | △ |
| ⑦フォーマット・日本語 | ◎ | ◎ | × | ○ |
| 軸 | Sonnet 5 | 32B | 14B | 8B |
|---|---|---|---|---|
| ①網羅性 | ◎ | ○ | ◎ | ○ |
| ②抽出の正確性 | ◎ | ◎ | ○ | ○ |
| ③属性の正誤 | ◎ | ◎ | ○ | ○ |
| ④曖昧な事項の扱い | ◎ | ○ | ◎ | △ |
| ⑤ハルシネーション | ◎ | ◎ | ○ | × |
| ⑥ノイズ除外 | ◎ | ◎ | ◎ | ○ |
| ⑦フォーマット・日本語 | ◎ | ◎ | ◎ | ◎ |
①網羅性 ②抽出の正確性 ③属性の正誤 ④曖昧な事項の扱い ⑤ハルシネーション ⑥ノイズ除外 ⑦フォーマット遵守・日本語品質
Discussion
条件Aで32Bが出したレポートは、5セクション構成を守り、前月比の方向(減収)も当てていた。 読める形をしているのに、数字だけが全部違う。
| 項目 | 32Bの出力 | 正解 | 誤差 |
|---|---|---|---|
| 総売上 | 4,444,100円 | 2,399,310円 | 1.85倍 |
| 営業日数 | 29日 | 26日 | +3日 |
| 客単価 | 4,297円 | 2,325円 | 1.85倍 |
| ランチ客単価 | 3,666円 | 1,303円 | 2.8倍 |
条件Aでは、出力トークンが本文量に対して異常に膨らんだ。
| モデル | 条件 | 出力トークン | 本文文字数 | 比 | 応答時間 |
|---|---|---|---|---|---|
| qwen3-14b | A | 11,356 | 2,165 | 5.2 | 1,389秒(23分) |
| qwen3-14b | B | 2,108 | 1,556 | 1.4 | 33秒 |
| qwen3-8b | A | 9,030 | 2,029 | 4.4 | — |
| qwen3-8b | B | 3,169 | 1,822 | 1.7 | — |
天候別のディナー平均客数は 晴16.9 / 曇19.6 / 雨10.8 で、曇が晴を上回る。 これは曇が5日しかなく金・土が2日含まれるため(晴は10日中3日が月曜)で、 曜日構成の偏りによる見かけの差。「曇の日が売れる」とは言えない、という罠を仕込んだ。
| モデル | 結果 | 実際の記述 |
|---|---|---|
| 14B(条件B) | 明示的に回避 | 「日数が少ない曜日(例:土曜日3日)や天候(例:曇り5日)については、傾向として断定できない」 |
| Sonnet 5(条件B) | 明示的に回避 | 雨の落ち込みを正しく指摘したうえで「金曜は4日分のみのデータであり、傾向として断定はできません」 |
| Sonnet 5(条件A) | 保守的に回避 | 「天候別の売上影響については、区分ごとの日数が少なく本レポートの分析対象外とした」 |
| 32B・8B(条件B) | 触れずに回避 | 天候別の分析に言及しなかった。罠は踏んでいないが「配慮した」わけではない |
集計済みを渡しても、すべてが解決したわけではない。
| モデル | 出力 | 問題 |
|---|---|---|
| 8B | 「ディナーの売上は貸切イベントを除くと前月比1.2%増加(1,572,160円 vs 1,550,000円推定)」 | 集計表に5月のディナー売上は載っていない。実際は1,764,660円。推定値を創作している |
| 8B | 「客単価が前月比21.7%上昇」 | 新メニュー前後の変化は+20.8%、月次の前月比は+2.8%。2つを混同したうえでどちらとも違う値 |
| 14B | 「6月15日以降のランチ客数が前半比で10%増加」 | 正しくは+4.8%(310人→325人)。表に載っている値の誤読 |
claude-sonnet-5
両条件で17〜19項目一致。貸切日の除外計算まで自発的に行う。 一方、条件Aでは天候分析を丸ごと「対象外」とした。慎重さと網羅性がトレードオフになっている。
qwen3:32b
条件Bで18/19。貸切日の扱いも正確で提案も根拠付き。 条件Aでは0/19。体裁を保ったまま全数値を誤るため気づきにくく危険。
qwen3:14b
罠4を明示的に回避した唯一のローカルモデル。 一方で条件Aは1件タイムアウト・1件23分。条件Bでも表の値の誤読があり14/19。
qwen3:8b
数値一致は16.7/19と健闘するが、集計表にない値を作った。 前月比と新メニュー効果の混同もある。速いが、出力をそのまま信じられない。
検証03(GA4データ → 解析インサイトレポート)の結論は「3サイズとも実務水準に未達」でした。 そのとき積み残しになったのが「計算はコード側に寄せれば解けるのか」という問い。 このケースは2条件を並べることで、それに答えます。
日次CSV 2か月分(54行) → モデル → レポート
集計表(Markdown) → モデル → レポート
Implications
検証03の「ガードレールはプログラム側で担保する設計が必須」、 検証04の「用語集はプロンプトで守らせるより後処理の一括置換が確実」と、同じ方向を指している。 3ケース連続で、「LLMに任せる範囲を狭めるほど実用に近づく」という結果が出た。
Files
実際に投入したデータ、プロンプト、採点キー、出力の実物です。加工していないため、同じ条件で再現できます。