04. Model Routing Spec
1. Purpose
IModelVectorRouter による能力ベクトル選定契約を定義し、通常時の動的最適化とリプレイ時の決定論的再現性を両立させる。
2. Scope
ModelCapacityVectorIDynamicCapacityProviderIVectorMatcherIModelVectorRouterIComputeShapeAdvisorICapabilityRegistry
3. Normative Requirements
MRS-001ルーティングはモデル名ではなく能力軸で行う(MUST)。MRS-002必須軸(Mandatory Axis)未達候補は除外する(MUST)。MRS-003動的制約(予算・レイテンシ・負荷)を評価する(MUST)。MRS-004選定根拠スコアを監査可能に記録する(MUST)。MRS-005多次元ベクトル評価: 要求能力をReasoning/Fidelity/Latency/Economy/ContextWindowの 5 軸で評価しなければならない(MUST)。MRS-006物理リソース適応:IComputeShapeAdvisorを通じ、現在のデバイス(GPU/NPU)に対してエネルギー効率が高い候補を優先しなければならない(MUST)。MRS-007決定論的タイブレーカー: 同一スコア候補が複数ある場合、ハッシュまたは優先度リストに基づく決定論的手順で 1 候補へ収束させなければならない(MUST)。
3.1 Replay-Aware Routing Bypass
MRS-REPLAY-001IModelVectorRouterは Replay 実行時にReplayContext.LockedProviderInfoを検出した場合、動的ルーティングを実行してはならない(MUST NOT)。MRS-REPLAY-002Replay 実行時、実行エンジンはForce Provider Modeを有効化し、LockedProviderInfoに記録されたProvider/Model/Quantization情報をそのまま適用しなければならない(MUST)。MRS-REPLAY-003LockedProviderInfoが欠落している Replay Dump は Deterministic Replay と見なしてはならない(MUST NOT)。
4. Fail-Closed
MRS-F001必須軸を満たす候補がなければ停止する。MRS-F002予算 Hard Limit 到達時は新規実行を遮断する。MRS-F003スキーマ不一致の能力宣言は拒否する。MRS-F004Dynamic Limit Violation: 実行直前にIDynamicCapacityProviderが過負荷/通信不安定を検知した場合、低品質実行を強行せず停止する。MRS-F005Capability Mismatch (ROM Integrity): ROM で要求された必須能力(例:[[capability.vision]])を満たせない候補は検証エラーとして遮断する。
5. Acceptance Criteria
- AC1: 同一要求で同一入力条件なら同一選定結果となる。
- AC2: Mandatory Axis 未達候補が選ばれない。
- AC3: 同一スコア時の選定結果が常に同一である。
- AC4: リプレイ実行時、過去に選択された Provider と 100% 一致する。
6. Interface / DTO Definition
ルーティングの固定を保証するための不変(Immutable)データ構造を定義する。
public sealed record LockedProviderInfo(\n string ProviderId,\n string ModelId,\n string QuantizationProfile,\n ModelCapacityVector CapacitySnapshot,\n DateTime CapturedAtUtc);\n\npublic sealed record ReplayRoutingPolicy(\n bool ForceProviderMode,\n LockedProviderInfo LockedProviderInfo);
7. ModelCapacityVector Structure(ROM 表現)
モデル能力は ROM 形式で ICapabilityRegistry に登録する。
---\nid: "provider.openai.gpt4o"\ntype: "model.capability"\nversion: "1.0.0"\n---\n# Capacity Axes\n* [reasoning]: 0.95\n* [fidelity]: 0.98\n* [latency_score]: 0.60\n* [token_cost_index]: 0.80\n\n# Physical Constraints\n* [preferred_device]: [[device.gpu]]\n* [max_concurrency]: 50
8. Routing Algorithm(選定プロセス)
IModelVectorRouter は次の手順でルーティングを確定する。
- Context Check
- Requirement Extraction
- Hard Filtering
- Soft Scoring & Dynamic Adjustment
- Final Selection
Replay モードかつ LockedProviderInfo が存在するか確認する。存在する場合は手順 5 へジャンプする。
入力 ROM から Mandatory Axis(例: reasoning > 0.9)を抽出する。
Mandatory Axis 未達候補を物理的に除外する。
IVectorMatcher が余弦類似度または重み付き距離で適合度を算出し、IDynamicCapacityProvider の予算・負荷に応じてスコアを補正する。
最高スコア候補(または LockedProvider)を選択し、根拠(Traceability Matrix)を Replay Dump に記録する。
変更履歴
- v0.0.0 / v0.0.0.0: 初期ドラフト
- v0.0.1 (2026-05-06): ドキュメント規約に基づくバージョン更新
Source:
specs/04.MODEL_ROUTING_SPEC-jp.md