Volver a la wiki

Auto-Plan: Driver OpenRouter refactorizado con providers nuevos y params Gemma 4 (s48)

Resumen

Sesión 48 (2026-05-03, v1.0.62+). Cierre del tuning hardware del LXC 100 y reapertura de la vía OpenRouter para el A/B económico contra el self-host. Tres cambios concretos:

  1. Extracción del driver OpenRouter de autoplan.py a blueprints/services/openrouter_driver.py.
  2. Provider order configurable vía env OPENROUTER_PROVIDER_ORDER.
  3. Parámetros de sampling actualizados a los oficiales de Google para Gemma 4.

Contexto: cierre del tuning hardware

El LXC 100 (EPYC self-host) fue el eje de las sesiones 44-48. Al llegar a s48, el techo de rendimiento confirmado es:

Conclusión operativa: para bajar de 3 min hace falta un cambio upstream que no depende del equipo. Se reabre OpenRouter para medir el otro extremo con datos reales en producción.

Cambio 1 — Extracción del driver

autoplan.py había llegado a >500 LOC con el driver inline. Se extrae a blueprints/services/openrouter_driver.py (78 líneas). Motivaciones:

AutoPlanService._analyze_with_openrouter queda como thin wrapper de una línea que importa y llama a openrouter_driver.analyze_blueprint.

Cambio 2 — Provider order configurable

Antes (s40)

Providers hardcodeados: ["deepinfra", "parasail"].

Después (s48)

provider_order = [
    p.strip() for p in os.environ.get("OPENROUTER_PROVIDER_ORDER", "DekaLLM,Novita,Ionstream").split(",")
]

Default DekaLLM,Novita,Ionstream: los 3 providers nuevos disponibles en mayo 2026 para google/gemma-4-26b-a4b-it no testeados en s40.

Providers excluidos del default por comportamiento conocido:

ProviderProblema
deepinfraBaja detección (verificado s40)
parasailRecorta resolución de imagen
cloudflareÍdem parasail
google / vertexTimeouts

El cambio de provider no requiere redeploy de código — basta con cambiar OPENROUTER_PROVIDER_ORDER en Dokploy.

Cambio 3 — Parámetros de sampling oficiales Gemma 4

ParámetroAntes (s40)Después (s48)Fuente
temperature0.1 (Gemini Flash heredado)1.0Receta oficial Google Gemma 4
top_p—0.95Receta oficial Google Gemma 4
top_k—64 (via extra_body)Receta oficial Google Gemma 4

Objetivo: alinear OpenRouter con la receta s47g del self-host. Con sampling idéntico, la única variable que varía en el A/B es el proveedor de inferencia (OpenRouter vs Ollama local).

Activación y operación

Switch a OpenRouter (sin redeploy)

# En Dokploy → env vars de la app
AUTOPLAN_PROVIDER=openrouter
OPENROUTER_API_KEY=sk-or-v1-...
OPENROUTER_PROVIDER_ORDER=DekaLLM,Novita,Ionstream   # opcional, este es el default

Iterar providers sin tocar código

OPENROUTER_PROVIDER_ORDER=Novita,DekaLLM   # cambiar orden
OPENROUTER_PROVIDER_ORDER=Ionstream        # probar uno solo

Reversión a self-host s47g (~30 segundos)

AUTOPLAN_PROVIDER=ollama
# + redeploy en Dokploy

Objetivo A/B

El server EPYC fue una apuesta para validar la viabilidad económica del self-host vs APIs gestionadas. Con el techo s47g confirmado (4:45 min / 100%) y el coste estimado de OpenRouter (~$0.003 por plano), el A/B permite decidir con datos reales:

Archivos modificados

ArchivoTipo de cambio
blueprints/services/openrouter_driver.pyNuevo (78 LOC)
blueprints/services/autoplan.pyRefactor: -67 LOC inline, +2 LOC wrapper
CHANGELOG.mdEntrada v1.0.62+
RELEASE_NOTES.mdEntrada v1.0.62+

Véase también

Subir