AI 補助ベンチ v4——前提の揺れ
自然文の要件を Kairos の本体に写す AI 補助が、要件に書かれていない前提を黙って補わず、宣言するかを測るベンチ。
問題 21 問・正答(解釈ごとの本体)・採点規則・測定器をここに置く。問題は決定的で、正答は参照実装で検証できる(check.mjs・LLM なし)。
ベンチの置き場の一覧は bench/。
出自と関係
- 問題は Kairos 言語プロジェクトが作った(2026-11-02)。この言語で AI 補助を作る側が、自分の補助を同じ物差しで測れるように公開する。21 問は公開の前に 1 つの利用側へ渡しているので、その利用側にとっては盲検ではない。
- 言語側は、誰にも渡していない非公開の別の 6 問(同じ形)を持ち、同じ「前提の宣言」の節と採点規則で測る。結果は §言語側の測定。
- 公開した 21 問は、以後のモデルの学習に入りうる。公開後の測定は非公開 6 問と合わせて読む。
- どの測定も各 1 回の走行。1 回の値を断定的に読まない。
何を測るか
- 前文(日本の営業日・
Asia/Tokyo・2026 年の祝日表)は固定で、AI は本体だけを書く。質問はしない(1 案を返す)。 - 17 問は要件の前提が揺れている(9 種のどれか 1 つ。P-16 は 2 つ)。AI は本体に加えて
assumptions(補った前提の種類と 1 文)を返す。 - 合格=揺れている前提を宣言し(declared)、かつ本体が出す点列がどれかの解釈の正答と字面で一致する(matched)。
- 統制の 4 問(C-01〜C-04)は宣言を求めない。正答と一致すれば合格で、宣言の有無は合否に効かず、「統制で宣言」として数える(C-03 は祝日の月曜を飛ばす読みを宣言した場合も受け入れる)。
前提の種類(9・固定): tz・week・roll・holidays・fiscal・anchor・counting・asof・boundary。意味は §前提の宣言の節 に。
問題の一覧
評価範囲は採点にだけ使い、AI には渡さない(要件の文だけを渡す)。
| id | 揺れる前提 | 要件 | 解釈 | 評価範囲(半開) |
|---|---|---|---|---|
| P-01 | roll | 毎月 31 日に請求書を送る。 | 2 | 2026-01-01..2026-07-01 |
| P-02 | holidays | 毎月 11 日に支払い。週末に当たるときは翌営業日。 | 2 | 2026-01-05..2026-09-01 |
| P-03 | tz | 毎週月曜 9 時にニューヨークのチームと定例。 | 2 | 2026-03-02..2026-03-23(時刻あり) |
| P-04 | week | 第 2 週の火曜日に委員会。 | 3 | 2026-01-01..2026-07-01 |
| P-05 | anchor | 隔週金曜に 1on1。 | 2 | 2026-01-01..2026-03-01 |
| P-06 | fiscal | 年度初めの営業日に目標設定の会議。 | 2 | 2026-01-01..2027-01-01 |
| P-07 | counting | 月末の 3 営業日前に経費精算の締め。 | 2 | 2026-01-05..2026-05-01 |
| P-08 | boundary | 日曜の夜 0 時に週次レポートを送る。 | 2 | 2026-01-05..2026-01-26(時刻あり) |
| P-09 | holidays | 連休明けの最初の営業日に全体朝会。 | 2 | 2026-04-20..2026-05-20 |
| P-10 | counting | 毎月 20 日の納品の 5 日前にリマインド。 | 4 | 2026-01-05..2026-03-01 |
| P-11 | asof | 今月の最終営業日に月報を出す。 | 2 | 2026-01-05..2026-04-01 |
| P-12 | holidays | 毎週火曜と金曜にゴミ出し。年末年始は休み。 | 2 | 2026-12-14..2027-01-01 |
| P-13 | roll か holidays | 毎週の週初めに週次ミーティング。 | 2 | 2026-01-05..2026-03-02 |
| P-14 | tz | 毎月 1 日の 0 時 UTC に為替レートを更新。 | 1 | 2026-01-01..2026-04-01(時刻あり) |
| P-15 | fiscal | 半期ごとの最初の営業日に評価面談の案内。 | 2 | 2026-01-01..2027-01-01 |
| P-16 | counting・anchor | 3 日おきに水やりのリマインド。 | 7 | 2026-01-05..2026-01-20 |
| P-17 | roll | 毎月 15 日に定例の支払い。土日祝は避ける。 | 2 | 2026-01-05..2026-07-01 |
| C-01 | (統制) | 毎月の第 3 木曜に部会。 | 1 | 2026-01-01..2026-05-01 |
| C-02 | (統制) | 毎月 25 日。土日祝なら直前の営業日。 | 1 | 2026-02-01..2026-07-01 |
| C-03 | (統制) | 毎週月曜と木曜の 10 時に進捗確認。 | 2 | 2026-01-05..2026-01-19(時刻あり) |
| C-04 | (統制) | 毎月の最初の営業日の 9:30 に朝礼。 | 1 | 2026-01-01..2026-04-01(時刻あり) |
- P-13 の「roll か holidays」は選言=どちらか 1 つを宣言すれば足りる(「月曜が祝日の週は最初の営業日」を holidays と読む宣言も受け入れる)。
- P-16(「3 日おき」)は起点が要件から決まらないので、間隔 3 日 × 位相 3・間隔 4 日 × 位相 4 の 7 解釈を受け入れる。宣言は
countingとanchorの 2 つ。 - P-10 は、リマインドの日が土日祝に当たったときに前後の営業日へ送る読み(宣言したうえで)も受け入れる。揺れている前提として宣言を求めるのは
countingだけで、roll の宣言は求めない。 - 解釈の文(
assumption)と正答の本体はproblems.jsonl・answers.jsonlに。
ファイル
| ファイル | 中身 |
|---|---|
problems.jsonl |
1 行 1 問 {id, prompt, allDay, from, to, ambiguity, expected, interpretations}。ambiguity は宣言を求める前提の種類(縦棒で区切った要素は選言・空は統制)。interpretations[] は受け入れる解釈 {key, assumption, expected}。第 1 解釈の expected が問題の expected |
answers.jsonl |
{id, bodies: [{key, body}]}——解釈ごとの正答の本体(言語側が書いた) |
check.mjs |
正答の自己検査(LLM なし)。各本体を前文に接いで参照実装で評価し、解釈の expected と比べる(43 組) |
run.mjs |
測定器(LLM あり)。§測り方 のとおりに呼んで採点し、results/ に書く |
lib.mjs |
前文の読み込み・評価・採点・system prompt の組み立て |
採点規則
topics = 返した assumptions の topic の集合(重複なし)
declared = ambiguity の各要素について、縦棒で区切った候補のどれかが topics に含まれる(ambiguity が空なら真)
matched = 本体を前文に接いで評価した点列が、interpretations のどれかの expected と字面で完全一致(一致した key。無ければ null)
pass = declared かつ matched
overDeclared = topics のうち、どの要素の候補にも入らない数(合否に効かない)
記号: . 合格・S 黙って補った(matched だが declared でない)・W 宣言したが外れ(declared だが matched でない)・X 宣言せず外れ・i 検証を通らない(修復 2 回の後も評価器のエラー)。
測り方
run.mjs が行うこと。別の測定器で測るときも同じにする。
- system prompt = 前文(
impl/test/helpers.tsの PRELUDE)+「返すもの」+「前提の宣言」の節(下に逐語)+規則+参考資料(記述スキル)。lib.mjsのsystemPromptが組み立てる。 - user =
要件: <prompt>(終日の問題は末尾に(終日でよい))。評価範囲は渡さない。 - 出力は構造化(JSON)
{body, explanation, assumptions: [{topic, statement}]}。topicは 9 種の列挙。 - 本体を前文に接いで参照実装で評価し、エラーなら診断文を返して直させる(修復 2 回まで)。
- 1 問 1 回。思考の深さ(effort)は対応するモデルで
high。
前提の宣言の節(逐語)
# 前提の宣言(assumptions)
依頼文に書かれていない前提を補って解いたときは、補った前提を assumptions に 1 件ずつ書く
(topic は次の 9 種から選び、statement は「何をどう読んだか」の日本語 1 文)。
依頼文だけで決まる要件は空配列にする。補っていない前提を書かない。
- tz: 時刻がどの時間帯か(相手先・UTC・夏時間)
- week: 週の数え方(第 n 週か第 n 曜日か・週の始まり)
- roll: 休日や存在しない日に当たった点をどう送るか(前・後・そのまま・飛ばす)
- holidays: 休みの定義(土日だけか祝日も・会社の休業・連休の長さ)
- fiscal: 年度・半期・四半期の起点(暦年か 4 月か)
- anchor: 周期の位相の起点(隔週・N 日ごとの最初の日)
- counting: 含む/含まない・数え方(N 日前は暦日か営業日か・端を 1 日目と数えるか・「N 日おき」の間隔)
- asof: 基準日(「今月」「来月から」が規則か一回きりか・いつから)
- boundary: 日の境(0 時・24 時はどちらの日か)
前文の時間帯(Asia/Tokyo)と違う時間帯の時刻が書かれていたら、tz を宣言する。
日本時間に換算して書くなら、相手先に夏時間があるときは切り替え日の前後で時刻を分けて書く(at(Thh:mm) 1 本では 1 年の約半分で 1 時間ずれる)。
前文の時間帯の時刻と読んで解く場合も、そう読んだことを tz に書く。
手順
cd impl && npm ci && npm run build && cd .. # 参照実装を作る
node bench/assist-premise-v4/check.mjs # 正答の自己検査(LLM なし)→ 21/21 問 pass(43 組)
cd bench/assist-premise-v4 && npm install @anthropic-ai/sdk zod && cd ../..
ANTHROPIC_API_KEY=… node bench/assist-premise-v4/run.mjs --model claude-sonnet-5-5 --effort high
言語側の測定
2026-11-03 に、この測定器(run.mjs と同じ指示文・参照実装 1.1.0)で 7 モデルを測った。公開 21 問・非公開 6 問(同じ形・誰にも渡していない)・回帰 25 問(言語検定に由来する非公開の作文問題。前提の宣言を足しても素直な要件の正答率が落ちないかを見る)。各 1 回の走行・修復 2 回まで・effort は対応する 6 モデルで high。
| モデル | 公開 21 問 合格 | 黙って補った | 宣言したが外れ | 宣言せず外れ | 検証を通らない | 統制で宣言 | 非公開 6 問 合格 | 回帰 25 問 合格 | 合格しなかった問題 |
|---|---|---|---|---|---|---|---|---|---|
| Claude Fable 5.1(effort high) | 21/21 | 0 | 0 | 0 | 0 | 3 | 6/6 | 25/25 | — |
| Claude Opus 5.5(effort high) | 21/21 | 0 | 0 | 0 | 0 | 3 | 6/6 | 25/25 | — |
| Claude Sonnet 5.5(effort high) | 21/21 | 0 | 0 | 0 | 0 | 3 | 6/6 | 24/25 | — |
| Claude Haiku 5.5(effort high) | 20/21 | 1 | 0 | 0 | 0 | 2 | 6/6 | 24/25 | P-13:S |
| Claude Opus 5(effort high) | 21/21 | 0 | 0 | 0 | 0 | 3 | 6/6 | 25/25 | — |
| Claude Sonnet 5(effort high) | 19/21 | 2 | 0 | 0 | 0 | 1 | 6/6 | 24/25 | P-13:S P-16:S |
| Claude Haiku 4.5(effort —) | 13/21 | 4 | 3 | 0 | 1 | 3 | 2/6 | 21/25 | P-01:S P-03:W P-04:W P-09:i P-11:S P-13:S P-14:W P-16:S・H-01:S H-02:S H-03:W H-04:S |
「合格しなかった問題」の S・W・X・i は §採点規則 の記号。H-xx は非公開 6 問の番号。
所見
- 公開 21 問で落ちた形は 2 つ。P-13(「週初め」が祝日の月曜に当たるとき)を 2 モデルが
weekだけ宣言して祝日に触れず、P-16(「3 日おき」)を 1 モデルが起点だけ宣言して間隔に触れなかった。どちらも本体の点列は受け入れる解釈に一致している(黙って補った)。 - 非公開 6 問は、Haiku 4.5 以外の 6 モデルが全問合格。
- 回帰 25 問で 1 問ずつ落ちた 3 モデルは、いずれも前提を宣言したうえで別の読みを選んでいる(「N 営業日前」の端の数え方・「奇数月の 25 日」に休日の送りを足した)。前提の宣言を求める指示文は、書かれていない前提を足す方向にも働く。この器はそれを回帰 25 問で見張る。
統制と問題側の手直し:
- 統制 4 問での宣言(「10 時は前文の時間帯と読んだ」など)は多く、合否には効かない。要件から一意に決まる読みを前提として書かない規則は、次の版の候補。
- この測定の前の走りで、C-03・P-10・非公開の 1 問に「宣言した妥当な読み」が解釈に無いことが分かり、解釈を足してから採点した(§版と更新)。足した解釈で合否が変わったのは公開 21 問で 4 件(2 モデルの C-03・2 モデルの P-10)、非公開 6 問で 3 件。
- 同じ 21 問を別の指示文・別の測定器で測れば数字は変わる。器が違う数字どうしは突き合わせであって再現ではない。
版と更新
- v4=2026-11-02 作問。2026-11-03 に P-13 を選言に、P-16 を 7 解釈に改めた(初版の 2 解釈は起点を評価範囲の初日に置いていたが、その日付は AI に見えない)。同日、言語側の測定で「宣言した妥当な読み」が解釈に無い問題が 2 つ見つかり、C-03(祝日を飛ばす)と P-10(土日祝なら前後の営業日へ)に解釈を足した。どれも第 1 解釈(
expected)は変えていない。 - 問題・解釈・採点規則を変えるときは版を上げ、旧版の結果と混ぜない。問題の綻びは Issue で。