Skip to content

v2.11.0 — Routing por escenario + router mode multi-modelo - #11

Merged
santiquiroz merged 1 commit into
masterfrom
feature/scenario-routing
Aug 19, 2026
Merged

v2.11.0 — Routing por escenario + router mode multi-modelo#11
santiquiroz merged 1 commit into
masterfrom
feature/scenario-routing

Conversation

@santiquiroz

Copy link
Copy Markdown
Owner

Resumen

  • Routing por escenario (inspirado en claude-code-router, 31k★): reglas primer-match-gana sobre el modelo pedido — haiku (background de Claude Code) → modelo chico local, opus → Anthropic real (directo a api.anthropic.com), umbral min_tokens para longContext. UI en Providers.
  • Router mode de llama-server: sirve todos los GGUF descargados con carga/descarga dinámica (--models-dir); combinado con routing = un solo server, modelo grande para código + chico para background.
  • Fallback de key nativa a settings cuando el .env del config dir no está en os.environ.

Test plan

  • Suite backend: 114 passed (13 nuevos)
  • tsc --noEmit limpio
  • Smoke real con router mode al montar la R9700

🤖 Generated with Claude Code

… llama-server

Dominio:
- models/provider.py: RoutingRule (pattern substring case-insensitive, min_tokens para longContext, provider_id, model) + routing_enabled/routing_rules en ProviderRegistry.
- providers_service: resolve_route (primer match gana; provider desconocido se salta; model vacío cae al active_model del destino) y set_routing.
- llamacpp_service: router_mode en build_cmdline (--models-dir sin --model — llama-server sirve todos los GGUF con load/unload dinámico) y start sin exigir model_path en ese modo.

Aplicación:
- api/providers.py: GET/PUT /providers/routing (declarados antes de /{provider_id} para no colisionar), validación de providers desconocidos.
- api/messages.py: resolución de ruta por request con prompt tokens; provider anthropic ruteado va DIRECTO a api.anthropic.com (native path) porque litellm corre con el config del provider activo; fallback de key nativa a settings cuando el .env no está en os.environ.
- api/openai_compat.py: routing aplicado solo a destinos OpenAI-compat.

Infraestructura:
- Frontend: RoutingPanel (toggle + editor de reglas con select de provider), toggle router_mode en LlamaCppPanel, routingApi + tipos RoutingRule/RoutingConfig.
- CLAUDE.md: documentación de routing y router mode.

Configuración:
- Bump version a 2.11.0.

Pruebas:
- test_routing.py: 11 tests (resolución, gates, endpoints).
- test_messages_native.py: routing override end-to-end (URL y model del provider ruteado).
- test_llamacpp_service.py: cmdline router mode.

Cobertura global del proyecto: suite backend 114 passed; tsc frontend sin errores.
@santiquiroz
santiquiroz merged commit a2e194f into master Aug 19, 2026
1 check failed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant