AIKernel.NET
version: 0.0.2 / status: Refactor / edition: Draft / published: 2026-05-16 / updated: 2026-05-16

04. Model Routing Spec

1. Purpose

IModelVectorRouter による能力ベクトル選定契約を定義し、通常時の動的最適化とリプレイ時の決定論的再現性を両立させる。

2. Scope

  • ModelCapacityVector
  • IDynamicCapacityProvider
  • IVectorMatcher
  • IModelVectorRouter
  • IComputeShapeAdvisor
  • ICapabilityRegistry

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-001 IModelVectorRouter は Replay 実行時に ReplayContext.LockedProviderInfo を検出した場合、動的ルーティングを実行してはならない(MUST NOT)。
  • MRS-REPLAY-002 Replay 実行時、実行エンジンは Force Provider Mode を有効化し、LockedProviderInfo に記録された Provider / Model / Quantization 情報をそのまま適用しなければならない(MUST)。
  • MRS-REPLAY-003 LockedProviderInfo が欠落している Replay Dump は Deterministic Replay と見なしてはならない(MUST NOT)。

4. Fail-Closed

  • MRS-F001 必須軸を満たす候補がなければ停止する。
  • MRS-F002 予算 Hard Limit 到達時は新規実行を遮断する。
  • MRS-F003 スキーマ不一致の能力宣言は拒否する。
  • MRS-F004 Dynamic Limit Violation: 実行直前に IDynamicCapacityProvider が過負荷/通信不安定を検知した場合、低品質実行を強行せず停止する。
  • MRS-F005 Capability 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 は次の手順でルーティングを確定する。

  1. Context Check
  2. Replay モードかつ LockedProviderInfo が存在するか確認する。存在する場合は手順 5 へジャンプする。

  3. Requirement Extraction
  4. 入力 ROM から Mandatory Axis(例: reasoning > 0.9)を抽出する。

  5. Hard Filtering
  6. Mandatory Axis 未達候補を物理的に除外する。

  7. Soft Scoring & Dynamic Adjustment
  8. IVectorMatcher が余弦類似度または重み付き距離で適合度を算出し、IDynamicCapacityProvider の予算・負荷に応じてスコアを補正する。

  9. Final Selection
  10. 最高スコア候補(または 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