33 lines
1.2 KiB
Markdown
33 lines
1.2 KiB
Markdown
# ADR 007: Model Router Fallback Semantics
|
|
|
|
## Status
|
|
|
|
Accepted
|
|
|
|
## Context
|
|
|
|
В проекте уже зафиксирована идея:
|
|
|
|
- сначала weak;
|
|
- затем retry weak;
|
|
- затем strong fallback;
|
|
- external models не запрещаются кодом, а регулируются конфигом и policy.
|
|
|
|
## Decision
|
|
|
|
Fallback pipeline:
|
|
|
|
1. slot resolution выбирает provider и model для requested slot;
|
|
2. weak model вызывается первой;
|
|
3. если ответ невалиден по output contract, выполняется ограниченный retry weak;
|
|
4. если weak исчерпан, router проверяет доступность strong;
|
|
5. если strong разрешен config+policy, выполняется strong fallback;
|
|
6. если strong недоступен, возвращается structured degraded result.
|
|
|
|
## Notes
|
|
|
|
- “невалиден” означает нарушение response schema, parser failure или явный quality rejection;
|
|
- fallback trail сохраняется в invocation log;
|
|
- внешняя strong model не вызывается, если `allow_external_models=false` или policy запрещает.
|
|
|