LLM 営業日計算ベンチマーク

「月末営業日の 3 営業日前はいつか」——日本の祝日と土日を踏まえたこの種の計算を、LLM はどれくらい正しく答えられるのか。 決定的な暦計算エンジン Kairos が生成した正解と突き合わせて測ります。 問題・生成器・祝日の一次資料・結果はすべて公開しており、誰でも再実行できます。

結論から——問い方を実務の形にした途端、最上位モデルが 20 ポイント落ちました。 定義と回答形式を全問に添えた教科書的な問題セットでは 120 問全問正解だったモデルが、 前提を語らない実際の聞き方(「今月の給与支給日っていつになる?」)にすると 80.0% です。小型モデルは 29.2% でした。

そして正解できた場合も、その答えは1 問ごとに数百〜千トークンの推論を積み上げて得られたものです。 同じ問いに確定した日付を渡せば、20 トークンで 100% になります。 たかが日付、と片づける前に——下の表の「平均出力トークン」の列を見てください。

読み込み中…

測定設計

同じ問題を 4 つの条件で解かせ、条件間の差を見ます。 さらに、LLM を介さない Kairos 直を基線として並べます。

条件与える情報何を示すか
A問題文だけ素の暦計算能力
B今日の日付+当該年の祝日一覧を全部情報不足ではなく構造の問題であること
C1Kairos の計算結果+「この照会結果に基づいて答えてください」実際のツール連携に近い形。AI を経由させるだけで欠損が出るか
C2同上+「自分で計算し直さず、値をそのまま回答してください」指示を強めた上限条件。ここでも外すなら AI 経由そのものの限界
基線Kairos が直接返す確定値(LLM を介さない測定ではありません——正しさは下記の独立検証で担保しています

C を C1/C2 の 2 本に分けているのは、指示の強さ自体が測定条件だからです。 片方だけでは「指示が甘かっただけでは」(C1 のみ)、「100% になるよう指示を書いただけでは」(C2 のみ)という どちらの疑問にも答えられません。

問いの形

問題文は実務の聞き方に寄せています。営業日の定義と回答形式は system プロンプトとして 1 回だけ渡し、各問には必要最小限の前提口語の問いだけを置きます。「本日」は絶対日付ではなく 「YYYY 年 M 月の第 1 営業日」として与えます——本題の前に 1 段の営業日計算が要る形です。

給与は毎月25日に支給し、25日が休日の場合は繰り上げて直前の営業日に振り込むものとします。
部署Aは部署Bの1営業日前に、部署Bは部署Cの1営業日前に、部署Cは給与支給日の1営業日前に、
それぞれ処理を行うものとします。
本日を2026年9月の第1営業日として、次の問いに回答してください。
「今月の部署Aの処理日はいつ?」

↑ 実際の出題例(正解 2026-09-17)。2026 年 9 月は 9/21 敬老の日・9/22 国民の休日・ 9/23 秋分の日+土日で 9/19〜9/23 が 5 連休。給与日 9/25(金) から 部署C 9/24(木) → 部署B 9/18(金) → 部署A 9/17(木) と遡ります。1 段でも誤ると全部ずれます。

問題カテゴリ(各 20 問・計 120 問)

単純な単段の計算(第 K 営業日・祝日判定)は外しました——実務で人が迷うのは 複数のルールが連鎖する場面で、そこを厚くしています。 繰り上げ(休日なら前へ)と繰り下げ(休日なら後ろへ)の両方向を入れているのも、 実際の業務ルールが両方存在するためです。

繰り上げが起きる月/起きない月、連休を跨ぐ月/跨がない月を意図的に半々で配分しています—— 片方に寄せると「常に繰り上げ」と決め打ちしただけで当たってしまい、測定になりません。

留保

再現方法

問題セットと正解は決定的です。LLM を呼ばずに正解だけ再生成して、公開物と一致することを検証できます。

npm run bench:oracle -- --check   # 問題セットと正解の凍結検証(課金ゼロ)
npm run bench:bizdays             # 実走の規模とコスト見積もり(dry-run・課金ゼロ)
npm run bench:bizdays -- --execute # 実走(課金が発生します)

祝日は内閣府「国民の祝日について」の CSV を取得日つきで固定しています(出典: https://www8.cao.go.jp/chosei/shukujitsu/syukujitsu.csv/政府標準利用規約)。 公表 CSV が更新されても過去の測定結果が再現できるようにするためです。