型付き辺: 出 17 / 入 4
ADR-0056: Decision Pipeline の LLM temperature / sampling 戦略を工程別ハイブリッド設計で確立
- Status: Accepted
- Mode: Standard
- Scope: platform
- Kruchten Type: Property/Executive
- Implementation Status: Done (Phase 0-4: PR #1005, #1008, #1009, #1010)
- 起案者: [email protected]
- 起案日時 (JST): 2026-05-21 04:06
- 承認日時 (JST): 2026-05-26 (Pipeline Score 40/50 合格済、amendment で実態反映後 Accepted)
- Deciders: [email protected] (単独)
決定の早わかり(Y-statement)
本節は ADR-0140 の方針で遡及追加された本文の要約で、新しい意味は加えていない (意思決定内容は不変)。「文脈で問題に直面し、対抗案でなくこの案を選び、目的のため代償を受け入れる」と読む。詳細はコンテキスト以降の本文に展開する。
- 文脈: Decision Pipeline の CI 化検討で「Pipeline 全体 T=0 で再現性確保」案が浮上した。各 Gate / node の LLM temperature・sampling は暗黙運用 / provider 既定値依存である。
- 問題: T=0 一律は Gate 1 Socratic の発散探索を機能不全にする構造的リスクがある。T>0 一律は判定系の再現性が低く、同じ draft で結果が変わる監査リスクがある。provider 既定は Gate 3 並列レビューの比較整合性を崩す。
- 問題点と課題(直せる原因 → 発生を止めるためにやること):
- temperature が暗黙運用で provider 既定値依存 → 全 node で明示設定を必須化し、provider 既定値の使用を禁止する。
- 判定系と発散系で最適パラメータが相反する → 工程別に分ける (判定系=低温度・低 N / 発散系=高温度・複数 sampling / 採点系=中温度 + Self-Consistency N=5)。
- LLM call のパラメータ追跡が未整備 → 全 call で
{node_id, temperature, seed}等をログ保存する (90 日)。
- 前提(解決を課題に立てない与件):
- LiteLLM Gateway 経由で OpenAI / Anthropic 等の複数 provider を扱う (seed 対応有無に依存)。
- prompt 文面そのものの最適化 (ADR-0042 スコープ) とモデル選定 (別 ADR) は Non-Goals。
- 決定(対応策): 全 Gate T=0 一律 (案 X1)・全 Gate T=0.7 一律 (案 X2)・provider 既定 (案 X3) でなく、工程別ハイブリッド temperature / sampling 戦略を採用する。設定は
prompts/production/<gate>/prompt.meta.yamlに明示する。 - 目的: 判定系の再現性と探索系の創造性を両立し、全 LLM call の監査証跡を完備する。
- 代償: LLM コストが増える (Gate 1 / Gate 4 の sampling で現状比 +70% / ≈ $6/月)。8 node × 4 パラメータの設定複雑性が増す。
- 詳細は本文の影響・撤退条件セクションを参照のこと
1. コンテキスト
1.1 背景 (Background)
2026-05-21 セッション (docs/_internal/05_how-to/git_workflow.md の rebase 章追加 PR #880 から派生) で Decision Pipeline の CI 化検討を議論する中で、「CI から実行すれば Web UI と同じか?」「同じになるように T=0 にすればよいか?」というユーザ質問が起点となり、Pipeline 全体での LLM temperature / sampling 戦略が暗黙運用のままであることが顕在化した。
1.2 現状 (Current State / As-Is)
Decision Pipeline (LangGraph TS on Cloudflare Workers + LiteLLM Gateway / ADR-0019) の各 Gate / node で使う LLM の temperature・sampling 戦略は 暗黙運用 / provider 既定値依存 であり、明示的な設定方針が存在しない。CI 化検討時に「Pipeline 全体 T=0 で再現性確保」案が浮上している。
1.3 課題 (Problem)
「Pipeline 全体 T=0 一律」は Gate 1 Socratic 問診の発散探索を機能不全にする構造的リスクがある。具体的な失敗シナリオ:
- T=0 一律: Gate 1 Socratic で「他にどんな代替案がある?」が argmax で 1 答しか返らず、起案者の思考そのままが ADR になり AI 審査の意味が薄れる。Gate 4 Scoring の sampling variance が消失して採点信頼区間が出せず、起案者バイアス検出が困難
- T>0 一律: 判定系 (Gate 0 Triage / Gate 4 合否) の再現性が低く、同じ draft を 2 回流すと結果が変わる監査リスク
- provider 既定: モデル / vendor ごとに異なり、Gate 3 並列レビューの比較整合性が崩れる
1.4 制約・要件 (Constraints & Requirements)
- LiteLLM Gateway 経由で OpenAI / Anthropic 等の複数 provider を扱う (seed 対応有無に依存)
- LLM コストは予算制約あり (詳細値は要追記)
- Cloudflare Workers 環境で実行 (ログ保存先は Cloudflare Logs / KV)
- 監査証跡として全 LLM call のパラメータ追跡が必須
- ADR-0042 (LLM Prompt Lifecycle Management) の
prompts/production/<gate>/prompt.meta.yaml構造と整合させる
1.5 目標 (Goals / To-Be)
- Gate 工程ごとに最適な temperature / sampling を明示設定し、判定系の再現性と探索系の創造性を両立する
- 全 LLM call の温度・サンプリングパラメータを設定ファイルで一元管理し、監査証跡を完備する
- Non-Goals: prompt 文面そのものの最適化 (ADR-0042 スコープ)、モデル選定 (別 ADR)
2. 決定
Decision Pipeline の各 Gate / node に対し、工程別ハイブリッド temperature / sampling 戦略 を採用する。判定系 (Gate 0 / Gate 4 確定 / Slug) は低温度・低 N で再現性を確保し、発散系 (Gate 1 Socratic) は高温度・複数 sampling で探索性を担保、採点系 (Gate 4 Scoring) は中温度 + Self-Consistency N=5 で信頼区間を取得する。設定は prompts/production/<gate>/prompt.meta.yaml に明示し、provider 既定値の使用を禁止する。
3. 判断基準 (Decision Drivers)
3.1 評価軸 (Q42 9 タグから 3-5 個選定)
| # | 軸 | 重要度 (係数) | 案件特有の解釈 |
|---|---|---|---|
| 1 | #reliable | [Must] (×2.0) | 判定系 (Gate 0 / Gate 4 合否) が seed 固定で再現可能、監査文書として deterministic |
| 2 | #suitable | [Must] (×2.0) | Gate 1 発散探索 / Gate 4 採点信頼区間 / Body 文体柔軟性など各 Gate 本来の価値を発揮 |
| 3 | #efficient | [High] (×1.0) | LLM コスト総額が予算内、Self-Consistency の N 倍コストが許容範囲 |
| 4 | #operable | [High] (×1.0) | 設定の一元管理性、監査ログの取得・保存運用容易性 |
| 5 | #maintainable | [Medium] (×0.5) | 8 node × 4 パラメータの設定複雑性が長期保守可能 |
K.O. criterion: Must 軸 (#reliable / #suitable) の score < 3 は不採用。
3.2 評価軸 × 案スコア表
| 軸 | 係数 | 採択案 (工程別ハイブリッド) | 案 X1 (全 T=0) | 案 X2 (全 T=0.7) | 案 X3 (provider 既定) |
|---|---|---|---|---|---|
#reliable | ×2.0 | 4 | 5 | 1 | 1 |
#suitable | ×2.0 | 5 | 2 | 3 | 2 |
#efficient | ×1.0 | 2 | 5 | 4 | 4 |
#operable | ×1.0 | 4 | 5 | 4 | 2 |
#maintainable | ×0.5 | 3 | 5 | 5 | 5 |
| 加重和 (正規化) | 0.738 | 0.738 | 0.510 | 0.395 | |
| K.O. 通過 (Must ≥3) | ✓ | ❌ (#suitable=2) | ✓ | ❌ (#suitable=2, #reliable=1) |
K.O. 通過は採択案と案 X2 のみ。案 X2 は加重和も低いため不採用。採択案を選択。
4. 検討した代替案 (Alternatives Considered)
- 採用案: 工程別ハイブリッド設計 — Gate 0 (T=0.0-0.3, N=1) / Gate 1 (T=0.7-1.0, N=3-5) / Gate 2 (T=0.3-0.5, N=1-2) / Gate 3 (T=0.5, N=1, vendor 別並列) / Gate 4 (T=0.5-0.7, N=5 Self-Consistency) / Body Generation N7 (T=0.5-0.8, N=1) / Slug 生成 N8 (T=0.0-0.3, N=1)。各 Gate の本来価値を最大化。
- 案 X1: 全 Gate T=0 一律 (再現性最優先) — 不採用理由: Gate 1 Socratic の発散探索が死蔵、Gate 4 sampling variance 消失で起案者バイアス固定化、Body Generation が全 ADR 似た文体に収束 (K.O.
#suitable未充足)。 - 案 X2: 全 Gate T=0.7 一律 (創造性最優先) — 不採用理由: Gate 0 / Gate 4 判定が不安定、同じ draft で結果が変わる監査リスク、回帰テスト不可。
- 案 X3: provider 既定 temperature 任せ — 不採用理由: モデル / vendor / API バージョンごとに変化、Gate 3 並列レビューの比較整合性が崩れる。完全な hidden state (K.O.
#suitable/#reliable未充足)。
4.1 Gate / node 別 temperature 設定 (採用案詳細)
| Gate / node | 推奨 T | Sampling | 理由 | 実装制約 |
|---|---|---|---|---|
| Gate 0 Triage | 0.0〜0.3 | N=1 | ADR worthy 判定の安定性最優先 | gemini-flash: T 有効 |
| Gate 1 Socratic | 0.7〜1.0 | N=3-5 | 発散的探索が本来の価値。重複除去 + 起案者に複数提示 | claude-sonnet: T 有効 |
| Gate 2 Consistency | 0.3〜0.5 | N=1〜2 | 既存 ADR との整合チェック、安定性 + 多様性のバランス | claude-opus: LiteLLM で T drop (†1) |
| Gate 3 Parallel Review | 0.5 | N=1 (vendor 別並列) | 別 vendor 並列なので T 影響小 | Gemini: T 有効 / Claude: T drop (†1) / o3: T 非対応 |
| Gate 4 Scoring | 1.0 | N=5 (Self-Consistency) | 採点信頼区間 (平均±σ) を出して起案者バイアス検出。多数決で robust 化 | claude-opus thinking 必須: T=1 固定 (†2) |
| Policy Alignment | 0.3〜0.5 | N=1 | 既存ポリシーとの整合チェック | claude-opus: LiteLLM で T drop (†1) |
| Body Generation (N7) | 0.5〜0.8 | N=1 | 案件特性に応じた文体の柔軟性 | claude-opus: LiteLLM で T drop (†1) |
| Slug 生成 (N8) | 0.0〜0.3 | N=1 | snake_case の安定性 | gemini-flash: T 有効 |
†1 LiteLLM T drop:
litellm/config.prod.yamlでclaude-opusのsupported_openai_paramsにtemperatureを含めておらず、drop_params: trueにより API リクエスト時に除外される。Anthropic API デフォルト (T=1.0) が適用される。将来supported_openai_paramsにtemperatureを追加すれば推奨値が有効化される。†2 thinking 必須:
createLlmWithEffort()で Claude Opus thinking mode を使用。Anthropic API は thinking 有効時に T=1.0 を必須としており、他の値を指定するとエラー。起案時の推奨 T=0.5〜0.7 は適用不可。Self-Consistency N=5 の多数決で採点の robust 性を代替確保する。
4.2 監査証跡要件
- 全 LLM call で
{node_id, model_id, temperature, top_p, seed, sample_index, latency_ms, prompt_hash, response_hash}をログ保存 - Gate 4 で複数 sampling した場合は 個別 sample + 集計結果 を両方記録
- ログは Cloudflare Logs / KV のいずれかに 90 日保存
4.3 再現性を担保する仕組み
- seed 固定 (provider 対応している前提、OpenAI/Anthropic は対応) を全 node で必須化
- provider 既定 temperature の使用を禁止 (明示設定必須)
- golden.jsonl 整備 (ADR-0042 で計画済、2026-07-14 目標) で回帰テスト
5. 影響 (Consequences)
5.1 正の影響 (Good)
- Gate 1 探索 / Gate 4 採点の 本質的価値 (発散思考 + 信頼区間) を機械化
- 監査証跡が完備 (全 LLM call のパラメータ + sample index + hash)
- Pipeline 全体の振る舞いを 設定ファイルで一元管理 (例:
prompts/production/<gate>/prompt.meta.yaml)
5.2 負の影響 (Bad)
- LLM コスト N 倍 (Gate 1 / Gate 4 で N=3-5 sampling)
- 設定の複雑性増加 (8 node × 4 パラメータ × provider 別差異の管理)
- Gate 4 Self-Consistency の N=5 がコスト的に持続困難な場合、N=3 への degrade option が必要
コスト試算 ($/月、絶対値)
| シナリオ | 月 ADR 件数 | 月 LLM call 数 | 月 token 量 | 月コスト |
|---|---|---|---|---|
| 現状 (T=0 一律 / N=1) | 5 (代表取締役 1 名運用、現状実測ベース) | 20 calls × 5 = 100 | 100 × 7K ≒ 700K token | ≈ $3.5/月 |
| 採用案 (工程別ハイブリッド) | 5 | +70 (Gate 1 +30 / Gate 4 +40) → 計 170 | ≒ 1.19M token | ≈ $6/月 (現状比 +70% / +$2.5/月) |
| N=3 degrade (Gate 4 のみ縮退) | 5 | +50 → 計 150 | ≒ 1.05M token | ≈ $5/月 (現状比 +43%) |
前提: Claude Sonnet 4.6 ($3/M input + $15/M output)、平均 prompt 5K + completion 2K = 7K token/call、Gate 1 calls/ADR = 3、Gate 4 calls/ADR = 2 (Self-Consistency 前)。実測値の差異が ±50% 超なら撤退条件 §6 の N 削減トリガー発火。
注: 月 ADR 件数は代表取締役 1 名運用の現状値 (2026-04 〜 2026-05 実績 月 4-6 件)。Jr 入社 (2026-10) で月 15 件想定なら採用案コストは 約 $18/月 (現状比 +5 倍)。Jr 入社時に再評価。
5.4 影響を受ける LangGraph node ファイル (8 件)
本 ADR の採用に伴い temperature / sampling.n 設定を明示する LangGraph TS node (docs/_internal/03_decisions/decision_pipeline/langgraph_migration/migration_overview.md 参照、main session 実装担当):
| # | Gate | ファイルパス | 設定変更 | 実装制約 |
|---|---|---|---|---|
| 1 | Gate 0 Triage | src/nodes/triage.ts | temperature: 0.0-0.3, n: 1 | T 有効 (gemini-flash) |
| 2 | Gate 1 Socratic | src/nodes/socratic.ts | temperature: 0.7-1.0, n: 3-5 | T 有効 (claude-sonnet) |
| 3 | Gate 2 Consistency | src/nodes/consistency.ts | temperature: 0.3-0.5, n: 1-2 | T drop (claude-opus, †1) |
| 4 | Gate 3 Parallel Review | src/nodes/parallel_review.ts | temperature: 0.5, n: 1 (vendor 別並列) | Gemini: T 有効 / Claude: T drop / o3: T 非対応 |
| 5 | Gate 4 Scoring | src/nodes/scoring.ts | temperature: 1.0, n: 5 (Self-Consistency) | T=1 固定 (thinking 必須, †2) |
| 6 | Policy Alignment | src/nodes/policy_alignment.ts | temperature: 0.3-0.5, n: 1 | T drop (claude-opus, †1) |
| 7 | Body Generation (N7) | src/nodes/body_generation.ts | temperature: 0.5-0.8, n: 1 | T drop (claude-opus, †1) |
| 8 | Slug 生成 (N8) | src/nodes/slug.ts | temperature: 0.0-0.3, n: 1 | T 有効 (gemini-flash) |
| 9 | 採番 (N9) | src/nodes/numbering.ts | (LLM 無し) | — |
設定は各 node から呼ばれる prompts/production/<gate>/prompt.meta.yaml に集約する (ADR-0042 整合)。LangGraph 移行未完了時点 (2026-05-21) では本ファイルは未実装のため、main session が ADR-0019 main_workspace_checklist の手順 2 (LangGraph node 実装) で新規作成する際に本 ADR の表を SSoT として参照する。
5.3 中立・トレードオフ (Neutral / Trade-offs)
- 再現性 (T=0) vs 創造性 (T>0) の二律背反は本 ADR の核心。工程別に分けることで「両方欲しい」を実現するが、設定運用コストとのトレードオフ
- Self-Consistency (N=5) の信頼区間 vs LLM コスト 5 倍。Gate 4 でのみ採用、Gate 1 では N=3 で許容
6. 撤退条件 (Rollback Plan)
6.1 再評価トリガー
- 3 ヶ月後 (2026-08-21): Gate 別 sampling コストの実測値を評価。LLM コスト総額が予算の 30% 超 (実コスト > $20/月 想定) なら N 削減
- 6 ヶ月後 (2026-11-21): LLM provider 側の seed / temperature 挙動変更があれば再評価
- 1 年後 (2027-05-21): 新モデル (Claude Opus 5 / GPT-5 等) の登場で「T=0 でも十分に creative」になっていれば本 ADR を Superseded
- 判定指標: Gate 4 Scoring の信頼区間幅 (σ) が 5 点 (50 点満点中) 超えていれば、Gate 4 のみ N=10 に拡張検討
6.2 撤退手順 (Rollback Procedure)
完全撤退 / 段階的縮退いずれも以下の手順で実施。所要時間 ~30 分:
- PR テンプレで設定 revert:
- 影響 node の
prompts/production/<gate>/prompt.meta.yamlのtemperature/sampling.nを 本 ADR 採用前の baseline (T=0 一律 / N=1) に戻す PR を起案 - PR タイトル:
revert(pipeline): ADR-0056 settings to baseline (T=0 / N=1) - PR body 必須項目: (a) revert 理由 (撤退トリガー §6.1 のどれが発火したか)、(b) 影響範囲 (どの node を戻すか、全部 vs Gate 4 のみ等の段階指定)、(c) golden.jsonl の baseline テスト再走結果
- 影響 node の
- 進行中ログの扱い:
- 撤退 PR merge 時点で 実行中の Pipeline run (Gate 1〜4 進行中の session) は 完了まで継続 (中断しない)
- 進行中 run の audit log には
audit.adr_0056_state: in_flight_during_rollbackフラグを付与し、撤退境界を識別可能化 - 次回 trigger 以降の新 run から baseline 設定で動作
- 境界マーカー記録:
- 監査ログに
audit.rollback_marker: {adr: "0056", from_version: "<git_sha>", to_version: "baseline", at: "<ISO timestamp>"}を 1 行追加 - Cloudflare Logs / KV 両方に書き込み (90 日保存)
- 監査ログに
- golden.jsonl の baseline 復帰:
tests/golden/<gate>.jsonlの expected output を T=0 仕様時のものに切り替え (ADR-0042 連動)- 回帰テスト再走で全件 pass を確認
- 段階的縮退 (部分撤退) パターン:
- Gate 4 N=5 → N=3: 上記 1 で
sampling.n: 3に変更、他 Gate は変更なし - Gate 1 N=3 → N=1: 上記 1 で
sampling.n: 1に変更、Gate 4 は維持 - 完全撤退: 全 node baseline (T=0 / N=1) に戻す
- Gate 4 N=5 → N=3: 上記 1 で
6.5 Confirmation (準拠確認 / Fitness Function)
- 検証手段 1 (機械検証): 全 LLM call ログから
{node_id, temperature, sample_index}を抽出し、本 ADR §4.1 の Gate 別表と整合するか CI で検証 (scripts/pipeline-temperature-audit.mjs新設) - 検証手段 2 (機械検証): golden.jsonl (ADR-0042) で T=0 工程の再現性を回帰テスト。Gate 0 Triage の判定が seed 固定で 100% 一致するか
- 検証手段 3 (手動): 月次で Gate 4 Scoring の信頼区間幅 σ をレビュー。5 点超えなら N 拡張検討
- 実行頻度: 検証手段 1/2 は PR ごと、検証手段 3 は月次
- 違反時の対応: temperature 設定逸脱は PR マージブロック (CI fail)、信頼区間幅は監視 → 閾値超えで Pipeline 設定改訂 PR を起案
7. 参照 (References)
- 関連 ADR:
- ADR-0019 (Decision Pipeline LangGraph 移行): 本 ADR の前提となる Pipeline 構成
- ADR-0042 (LLM Prompt Lifecycle Management): 本 ADR は ADR-0042 の運用パラメータを具体化。
prompts/production/<gate>/prompt.meta.yamlへの temperature/sampling フィールド追加要 - ADR-0050 (Synthesis 標準テンプレート Q42 MCDA): Gate 4 Scoring が本 ADR の Self-Consistency の主要適用先
- 関連 PR/Issue:
- PR #880 (DOC-OPS-05、本 ADR の議論の発端)
- PR #882 (handover §Step 5 派生 4 ADR 起案 KV 投入プロンプト、本 ADR と同じ起案フロー)
- 外部資料: 2026-05-21 セッション議論ログ (
docs/_internal/05_how-to/git_workflow.md関連)
8. 参照: Pipeline 審査履歴 (2026-05-21 実行時)
本セクションは Decision Pipeline (LangGraph TS on Cloudflare Workers) で本 ADR 草案を審査した結果のログ。Gate 0-4 + 3 vendor (Gemini / Claude / o3) の Gate 3 並列レビュー赤ペンを参照として保存。デフォルトでは折りたたまれており、
▶をクリックで展開する。
📋 Pipeline 審査履歴 全 Gate 結果 (合格 Score 40 / 50) — クリックで展開
Gate 0 Triage
- needsAdr: true / triageMode: Standard
- 理由: Decision PipelineのLLM挙動を規定し、出力品質、コスト、監査可能性に影響するため。
Gate 1 Socratic
- pass: true (追加質問 0 件、起案 context が十分と判定)
Gate 2 Consistency: verdict INFO
整合性審査レポート
整合性審査結果: INFO
新規 ADR ドラフト「Decision Pipeline の LLM temperature / sampling 戦略を工程別ハイブリッド設計で確立」は、既存 ADR と矛盾・上書き関係なし。Gate 別の temperature/sampling 設計という新しい意思決定軸を導入する補完的 ADR。
関連 ADR (INFO)
- ADR-0019: Pipeline 構成の前提として参照
- ADR-0033: Gate 別モデル選定と直交軸 (モデル × パラメータの組み合わせ整合確認推奨)
- ADR-0042: prompt.meta.yaml への temperature/sampling フィールド拡張で連携必須 (本 ADR §1.4 で明記済)
- ADR-0050: Gate 4 Scoring の Self-Consistency 主要適用先として参照
補足
- Non-Goals で prompt 文面最適化 (ADR-0042) / モデル選定 (ADR-0033) を明示的に除外しており、責務分離が明確
- temperature 一律案 (T=0 / T=0.7) を不採用とした K.O. ロジックが Gate 1/Gate 4 の本質的価値と整合
- Confirmation セクションで CI 自動検証 (
scripts/pipeline-temperature-audit.mjs) を計画しており ADR-0036 準拠
Gate 3 Parallel Review (3 vendor × 28 annotations)
凡例: ✅ strength / ⚠️ concern / 💡 suggestion
Gemini (5 annotations)
- ✅ [strength] > "判定系 (Gate 0 / Gate 4 確定 / Slug) は低温度・低 N で再現性を確保し、発散系 (Gate 1 Socratic) は高温度・複数 sampling で探索性を担保"
- LLMの特性を工程の目的に合わせて最適化しており、パイプライン全体の信頼性と価値を両立する優れたアーキテクチャ設計です。
- 💡 [suggestion] > "Gate 4 Scoring の N=5 がコスト的に持続困難な場合、N=3 への degrade option が必要"
- コスト超過時のdegradeを運用者の手動判断に依存せず、予算消費アラートと連動して自動的にNをフォールバックする仕組みの導入を検討してください。
- ⚠️ [concern] > "Cloudflare Workers 環境で実行 (ログ保存先は Cloudflare Logs / KV)"
- Cloudflare KVは書き込み頻度やサイズに制限があり、全LLMコールの詳細な監査ログを保存する用途には不向きです。R2やAnalytics Engineへの変更を推奨します。
- ⚠️ [concern] > "Gate 4 Scoring | 0.5〜0.7 | N=5 (Self-Consistency)"
- Cloudflare Workersの実行時間制限(Wall time)内でN=5の推論を完了できるか不透明です。並行実行時のレートリミットやタイムアウトの検証が欠落しています。
- 💡 [suggestion] > "LLM コストは予算制約あり (詳細値は要追記)"
- N倍のサンプリングを行う本決定において、コスト制約はアーキテクチャの成立要件に直結するため、実装開始前に具体的な予算上限と単価の試算を明記すべきです。
Claude (11 annotations)
- ✅ [strength] > "工程別ハイブリッド temperature / sampling 戦略"
- 判定系と発散系を分離する設計思想は問題定義(T=0 一律 / T>0 一律 / provider 既定の三失敗シナリオ)と論理的に対応しており、決定の根拠が明確。
- ✅ [strength] > "全 LLM call で
{node_id, model_id, temperature, top_p, seed, sample_index, latency_ms, prompt_hash, response_hash}をログ保存"- 監査証跡の具体フィールドを列挙しており、§1.4 の「全 LLM call のパラメータ追跡が必須」要件と整合している。
- ⚠️ [concern] > "| 加重和 (正規化) | | 0.738 | 0.738 | 0.510 | 0.395 |"
- 採択案と案 X1 の加重和が同値 (0.738) であり、K.O. 基準のみで採択を決定している。スコア同値の場合の優劣判定根拠が脆弱で、評価軸の重み設定または採点が結論ありきに見えるリスクがある。
- ⚠️ [concern] > "seed 固定** (provider 対応している前提、OpenAI/Anthropic は対応) を全 node で必須化"
- LiteLLM Gateway 経由で複数 provider を扱うと §1.4 にあるが、seed 非対応 provider が混在した場合の挙動 (fallback / fail) が未定義で、再現性担保の前提が崩れるリスクがある。
- ⚠️ [concern] > "LLM コスト総額が予算の 30% 超なら N 削減"
- 「予算の 30%」の絶対値・基準予算が §1.4 で「詳細値は要追記」のままで未確定であり、撤退条件が定量評価不能。実測時に判断できない。
- ⚠️ [concern] > "Gate 4 Scoring の信頼区間幅 (σ) が 5 点 (50 点満点中) 超えていれば、Gate 4 のみ N=10 に拡張検討"
- σ=5/50 の閾値根拠が示されておらず、また「N を増やせば σ が縮む」前提も検証されていない (bias 由来の分散には無効)。指標の妥当性に説明が不足。
- ⚠️ [concern] > "Gate 3 Parallel Review** | 0.5 | N=1 (vendor 別並列) | 別 vendor 並列なので T 影響小"
- §1.3 で「Gate 3 並列レビューの比較整合性が崩れる」ことを provider 既定不採用の根拠としていたが、T=0.5 の中温度を採用することで vendor 間比較の整合性がどう確保されるか説明が不足し、論理的に齟齬がある。
- 💡 [suggestion] > "1 年後 (2027-05-21)**: 新モデル (Claude Opus 5 / GPT-5 等) の登場で「T=0 でも十分に creative」になっていれば本 ADR を Superseded"
- 「十分に creative」の判定基準が主観的。Gate 1 で T=0 出力の多様性指標 (例: 代替案数・編集距離) を事前定義しておくと撤退判断が現実的になる。
- 💡 [suggestion] > "Cloudflare Workers 環境で実行 (ログ保存先は Cloudflare Logs / KV)"
- Workers の CPU time / subrequest 制限下で Gate 1 N=3-5、Gate 4 N=5 の並列 LLM call が timeout や subrequest 上限に抵触しないかの検討を §5.2 または制約節に追記すべき。
- 💡 [suggestion] > "scripts/pipeline-temperature-audit.mjs` 新設"
- CI 検証スクリプトの新設に言及しているが、ADR 本文中の Gate 別表 (§4.1) を single source of truth とするか meta.yaml を SoT とするかが不明確。SoT を明示すると CI 設計と保守が明確になる。
- 💡 [suggestion] > "Gate 4 Self-Consistency の N=5 がコスト的に持続困難な場合、N=3 への degrade option が必要"
- degrade option を「必要」と述べるに留まり判断条件・切替手順が未定義。撤退条件 §6 と接続して具体的トリガと手順 (meta.yaml 更新 PR / 段階的検証) を記述すると現実性が増す。
o3 (12 annotations)
- ✅ [strength] > "Gate 工程ごとに最適な temperature / sampling を明示設定し、判定系の再現性と探索系の創造性を両立する"
- トレードオフを工程単位で設計しており、目的適合性が高い。
- ✅ [strength] > "全 LLM call の温度・サンプリングパラメータを設定ファイルで一元管理し、監査証跡を完備する"
- 設定の単一ソース化により運用容易性とコンプライアンス要件を同時に充足している。
- ✅ [strength] > "検証手段 1 (機械検証): 全 LLM call ログから
{node_id, temperature, sample_index}を抽出し、本 ADR §4.1 の Gate 別表と整合するか CI で検証"- CI で自動検証可能な完了条件を定義しており、検証可能性が高い。
- ⚠️ [concern] > "LLM コストは予算制約あり (詳細値は要追記)"
- 具体的な数値が空欄のためコスト妥当性を事前評価できず、実装後に予算超過するリスクが残る。
- ⚠️ [concern] > "Gate 4 Self-Consistency の N=5 がコスト的に持続困難な場合、N=3 への degrade option が必要"
- N=5 はトークン量と実行時間が増え Cloudflare Workers の 30s 制限に抵触する恐れがある。
- ⚠️ [concern] > "seed 固定 (provider 対応している前提、OpenAI/Anthropic は対応) を全 node で必須化"
- seed 未対応や API バージョン変更時に再現性が破綻するが、代替策が示されていない。
- ⚠️ [concern] > "Cloudflare Workers 環境で実行 (ログ保存先は Cloudflare Logs / KV)"
- Workers の sub-request 上限と同時実行制限により、多数 sampling を行う Gate 1/4 が失敗する可能性が未評価。
- ⚠️ [concern] > "ログは Cloudflare Logs / KV のいずれかに 90 日保存"
- 90 日では一般的な監査要求(1年以上)に不足しコンプライアンスギャップが生じる。
- 💡 [suggestion] > "LLM コスト N 倍"
- Gate 別トークン数と呼び出し回数を用いた月次コスト試算表を追記すると予算管理とスケール計画が容易になる。
- 💡 [suggestion] > "provider 対応している前提、OpenAI/Anthropic は対応"
- seed 非対応モデル向けに temperature=0 + 多数決などのフォールバック手法を定義して再現性を担保すると安全。
- 💡 [suggestion] > "Cloudflare Workers 環境で実行"
- Gate 1/4 の heavy sampling は Durable Objects や Background Tasks へオフロードする設計を検討しワーカ制限を回避すべき。
- 💡 [suggestion] > "90 日保存"
- ログ保持期間を 1 年以上に延長し GDPR や内部統制の証跡要件への適合性を高められる。
Gate 4 Scoring: 40 / 50 (rejected: false 合格)
採点詳細レポート
| 採点項目 | 点数 | コメント |
|---|---|---|
| 問題定義 | 5 | T=0一律/T>0一律/provider既定の3失敗シナリオが具体的、Gate単位で痛みが特定されている |
| 代替案 | 5 | 採用案 + X1/X2/X3の3案を K.O. 判定込みで明示却下 |
| 判断基準 | 5 | Q42 5軸 × 係数 × K.O.基準が明示、加重和も算出 |
| 過去ADR整合性 | 5 | ADR-0019/0042/0050を参照、0042との具体的な統合点(meta.yaml拡張)も明示 |
| 影響範囲 | 3 | meta.yaml への temperature/sampling 追加は触れるが、影響する 8 node の具体ファイルパス、ログ基盤の変更点、運用者・監査者というステークホルダー観点が薄い |
| 運用上の罠 | 4 | seed 非対応 provider、N degrade、設定逸脱検知に言及。ただし sampling 重複除去アルゴリズムや並列実行時のレイテンシ罠は未検証 |
| ロールバック | 3 | 3/6/12ヶ月の見直し条件はあるが「設定を旧暗黙運用に戻す手順」「進行中 ADR の sample ログをどう扱うか」など撤回手順そのものが不明 |
| コスト試算 | 2 | 「予算の30%超」「N倍」と相対値のみ。現状 LLM 月額、Gate 1/4 sampling 増分の絶対値 ($/月) が皆無で「予算制約あり (詳細値は要追記)」と自認している |
| 完了条件 | 4 | CI 検証スクリプト、golden 回帰、σ<5点 等観測可能。ただし「いつ Implementation Status を Done にするか」の明確な定義は不在 |
| 長期的影響 | 4 | 1年後の Superseded 条件、新モデル登場時の再評価が明示。設定複雑性が技術負債化するリスクの定量議論はやや弱い |
Gate 4 推奨改善 (合格点だが reviewer 強推奨 3 点)
合格点ですが、(1) コスト試算は現状 LLM 月額と Gate 1/4 N倍化後の増分を絶対値($/月)で必ず埋めること、(2) ロールバック手順を「meta.yaml を旧値に戻す PR テンプレ + 進行中ログの扱い」レベルまで具体化、(3) 影響を受ける 8 node のファイルパス一覧を §5 に追記、を強く推奨します。
本 3 点は PR #885 commit
0c170f0で本 ADR §5.2 / §5.4 / §6.2 に反映済。