{"schemaVersion":1,"id":"https://lucioduran.com/es/projects/ai-model-routing-policy","url":"https://lucioduran.com/es/projects/ai-model-routing-policy","title":"AI Model Routing Policy","description":"Política de selección entre FLAN-T5-small y base con ajuste en desarrollo, evaluación reservada, costo del router y fallos locales inyectados. Publica también el resultado negativo.","language":"es","datePublished":"2026-10-22","dateModified":"2026-10-22","contentFormat":"text/markdown","content":"[Proyectos](<https://lucioduran.com/es/projects>) / AI Model Routing Policy\n\n# AI Model Routing Policy\n\nPolítica de selección entre FLAN-T5-small y base con ajuste en desarrollo, evaluación reservada, costo del router y fallos locales inyectados. Publica también el resultado negativo.\n\nAutor: [Lucio Durán](<https://lucioduran.com/es>) · Python 3.11.13 · Licencia: [MIT](<https://github.com/lucioduran/ai-model-routing-policy/blob/1e891db0bfc7c6ad77a1baae3b93f5a76a558435/LICENSE>)\n\nFicha publicada: 2026-10-22 · Ficha actualizada: 2026-10-22\n\n[Repositorio](<https://github.com/lucioduran/ai-model-routing-policy>) · [Evidencia original](<https://raw.githubusercontent.com/lucioduran/ai-model-routing-policy/1e891db0bfc7c6ad77a1baae3b93f5a76a558435/results/eval/report.json>) · [Release v0.1.0](<https://github.com/lucioduran/ai-model-routing-policy/releases/tag/v0.1.0>)\n\n## Problema y utilidad para agentes\n\nUsar un router no lo vuelve automáticamente más eficiente que un solo modelo. Hay que contar el propio router, los intentos fallidos y las pérdidas de calidad por tipo de tarea.\n\nLa comparación mantiene las mismas tareas y deja visibles las decisiones, el fallback y los casos sin respuesta. Permite decidir si la complejidad del router se justifica con los resultados medidos.\n\n## Arquitectura\n\n1. **Política ajustada en desarrollo.** 16 tareas ajustan una tabla por tipo mediante exactitud menos 0,02 veces el tiempo medio de inferencia. La evaluación reservada tiene 24 tareas; las etiquetas no entran al router.\n2. **Cuatro estrategias.** Compara siempre-small, siempre-base, un selector fijo de 120 caracteres y la política ajustada. Ambos modelos están residentes y fijados por revisión.\n3. **Fallback y contabilidad.** Sólo una excepción tipada de indisponibilidad dispara el segundo adaptador. Registra sobrecosto, intentos fallidos, tokens, carga, calentamiento y ajuste por separado.\n\n- [Diseño y metodología](<https://github.com/lucioduran/ai-model-routing-policy/blob/1e891db0bfc7c6ad77a1baae3b93f5a76a558435/docs/design.md>)\n\n## Qué demuestra\n\n- Separación entre ajuste de políticas y evaluación reservada con baselines explícitos.\n- Contabilidad del costo de enrutamiento y degradación por tipo de tarea.\n- Fallback controlado, fallo explícito ante dos adaptadores caídos y análisis de un resultado negativo.\n\n## Resultados publicados\n\n16 tareas de desarrollo y 24 de evaluación, distribuidas entre sentimiento, extracción, aritmética y lógica. FLAN-T5-small y base ejecutados localmente en Intel Xeon W-3223 con dos hilos.\n\nTiempo de solicitudes incluye router, despacho, intentos fallidos e inferencia. Carga, calentamiento y ajuste están fuera de esa tabla y se publican por separado. Las caídas son excepciones inmediatas inyectadas en adaptadores locales propios.\n\n### Comparación sin fallos inyectados\n\n| Estrategia | Correctas | Tiempo total (s) | Router total (ms) | Tokens generados |\n| --- | --- | --- | --- | --- |\n| Siempre small | 12/24 | 4.006823 | 0.021426 | 229 |\n| Siempre base | 12/24 | 8.376350 | 0.020290 | 214 |\n| Por longitud | 12/24 | 4.359402 | 0.035640 | 229 |\n| Política ajustada | 12/24 | 4.401570 | 0.044034 | 229 |\n\n### Fallback con política ajustada\n\n| Indisponibilidad inyectada | Correctas | Sin respuesta | Tiempo total (s) |\n| --- | --- | --- | --- |\n| Small caído | 12/24 | 0 | 9.149960 |\n| Base caído | 12/24 | 0 | 3.981469 |\n| Ambos caídos | 0/24 | 24 | 0.000176 |\n\nLas cuatro estrategias lograron 12/24. El router ajustado fue más lento que siempre-small y no mejoró calidad. Todas fallaron las seis tareas de extracción y las seis de aritmética: cero degradación relativa puede esconder una calidad absoluta insuficiente.\n\nLa inferencia de desarrollo tomó 3,600025 s y el ajuste de la política 0,124500 ms. El tiempo completo de evaluación fue 41,797864 s, incluyendo preparación, las cuatro estrategias, caídas y grabación de evidencia. [Evidencia original](<https://raw.githubusercontent.com/lucioduran/ai-model-routing-policy/1e891db0bfc7c6ad77a1baae3b93f5a76a558435/results/eval/report.json>).\n\n## Reproducir\n\nReplay con Python 3.11 y biblioteca estándar, sin descargas de modelos. La reproducción neural requiere las dependencias fijadas y snapshots públicos de ambos modelos.\n\nLos comandos usan POSIX y omiten el coordinador específico de la máquina del autor. Ejecutá una medición por vez y conservá desarrollo y evaluación en directorios nuevos relacionados mediante --dev.\n\n### Revisar la evidencia guardada\n\n```\ngit clone https://github.com/lucioduran/ai-model-routing-policy.git\ncd ai-model-routing-policy\ngit checkout 1e891db0bfc7c6ad77a1baae3b93f5a76a558435\npython -m routing verify --split dev --output results/dev\npython -m routing verify --split eval --dev results/dev --output results/eval\n```\n\n### Repetir la medición local\n\n```\npython3.11 -m venv .venv\n. .venv/bin/activate\npython -m pip install -r requirements-local.lock\npython -m routing download\nOMP_NUM_THREADS=2 MKL_NUM_THREADS=2 python -m routing run --split dev --output build/dev\nOMP_NUM_THREADS=2 MKL_NUM_THREADS=2 python -m routing run --split eval --dev build/dev --output build/eval\npython -m routing verify --split eval --dev build/dev --output build/eval\n```\n\n## Alcance y límites\n\n- Cuarenta tareas sintéticas y una ejecución no establecen ahorros de producción. Las familias se superponen entre particiones y no hubo revisión humana independiente.\n- El llamador suministra el tipo de tarea: no se mide un clasificador de intenciones. La política penaliza latencia, sin imponer una garantía dura de calidad.\n- Los fallos inmediatos no modelan red, timeouts ni costos de reintentos remotos. Ambos modelos residentes tampoco representan un despliegue con presión de memoria.\n- API paga: USD 0. CPU medida no equivale a energía ni factura. Los tiempos excluyen carga y calentamiento a nivel de solicitud.\n\n- [Orquestación de IA y selección de modelos](<https://lucioduran.com/es/blog/semantic-kernel-langchain-ai-orchestration>)\n\n## Fuentes y revisión\n\nLos valores de esta ficha provienen del informe enlazado. No son una medición en vivo. El informe conserva la revisión ejecutada; la revisión consultada incluye la publicación posterior de ese informe.\n\n- Revisión consultada: [` 1e891db0bfc7c6ad77a1baae3b93f5a76a558435 `](<https://github.com/lucioduran/ai-model-routing-policy/commit/1e891db0bfc7c6ad77a1baae3b93f5a76a558435>)\n- Revisión registrada por el experimento: [` ae4081c9097561b40652b5c2f2680cba37660af2 `](<https://github.com/lucioduran/ai-model-routing-policy/commit/ae4081c9097561b40652b5c2f2680cba37660af2>)\n- Fecha del informe (UTC): 2026-10-21T23:08:03.603602+00:00\n- Release publicada: [v0.1.0](<https://github.com/lucioduran/ai-model-routing-policy/releases/tag/v0.1.0>) · 2026-10-21T23:11:21Z\n\n- [README y uso](<https://github.com/lucioduran/ai-model-routing-policy/blob/1e891db0bfc7c6ad77a1baae3b93f5a76a558435/README.md>)\n- [Evidencia original](<https://raw.githubusercontent.com/lucioduran/ai-model-routing-policy/1e891db0bfc7c6ad77a1baae3b93f5a76a558435/results/eval/report.json>)\n- [Respuestas y trazas originales](<https://raw.githubusercontent.com/lucioduran/ai-model-routing-policy/1e891db0bfc7c6ad77a1baae3b93f5a76a558435/results/eval/records.json>)\n- [Evidencia de desarrollo](<https://raw.githubusercontent.com/lucioduran/ai-model-routing-policy/1e891db0bfc7c6ad77a1baae3b93f5a76a558435/results/dev/report.json>)\n- [Política ajustada](<https://raw.githubusercontent.com/lucioduran/ai-model-routing-policy/1e891db0bfc7c6ad77a1baae3b93f5a76a558435/results/dev/policy.json>)\n- [Diseño y metodología](<https://github.com/lucioduran/ai-model-routing-policy/blob/1e891db0bfc7c6ad77a1baae3b93f5a76a558435/docs/design.md>)\n- [Datos y procedencia](<https://github.com/lucioduran/ai-model-routing-policy/blob/1e891db0bfc7c6ad77a1baae3b93f5a76a558435/data/README.md>)\n- [Modelos, revisiones y licencias](<https://github.com/lucioduran/ai-model-routing-policy/blob/1e891db0bfc7c6ad77a1baae3b93f5a76a558435/docs/model-notices.md>)\n- [Dependencias del entorno medido](<https://github.com/lucioduran/ai-model-routing-policy/blob/1e891db0bfc7c6ad77a1baae3b93f5a76a558435/requirements-local.lock>)\n- [Licencia MIT](<https://github.com/lucioduran/ai-model-routing-policy/blob/1e891db0bfc7c6ad77a1baae3b93f5a76a558435/LICENSE>)","headings":[{"level":1,"text":"AI Model Routing Policy","url":"https://lucioduran.com/es/projects/ai-model-routing-policy#title"},{"level":2,"text":"Problema y utilidad para agentes","url":"https://lucioduran.com/es/projects/ai-model-routing-policy#problem"},{"level":2,"text":"Arquitectura","url":"https://lucioduran.com/es/projects/ai-model-routing-policy#architecture"},{"level":2,"text":"Qué demuestra","url":"https://lucioduran.com/es/projects/ai-model-routing-policy#demonstrates"},{"level":2,"text":"Resultados publicados","url":"https://lucioduran.com/es/projects/ai-model-routing-policy#results"},{"level":3,"text":"Comparación sin fallos inyectados","url":"https://lucioduran.com/es/projects/ai-model-routing-policy#results-routing"},{"level":3,"text":"Fallback con política ajustada","url":"https://lucioduran.com/es/projects/ai-model-routing-policy#results-outages"},{"level":2,"text":"Reproducir","url":"https://lucioduran.com/es/projects/ai-model-routing-policy#reproduce"},{"level":3,"text":"Revisar la evidencia guardada","url":"https://lucioduran.com/es/projects/ai-model-routing-policy#reproduce-replay"},{"level":3,"text":"Repetir la medición local","url":"https://lucioduran.com/es/projects/ai-model-routing-policy#reproduce-inference"},{"level":2,"text":"Alcance y límites","url":"https://lucioduran.com/es/projects/ai-model-routing-policy#scope"},{"level":2,"text":"Fuentes y revisión","url":"https://lucioduran.com/es/projects/ai-model-routing-policy#sources"}],"sections":[{"heading":"AI Model Routing Policy","level":1,"url":"https://lucioduran.com/es/projects/ai-model-routing-policy","content":"[Proyectos](<https://lucioduran.com/es/projects>) / AI Model Routing Policy"},{"heading":"AI Model Routing Policy","level":1,"url":"https://lucioduran.com/es/projects/ai-model-routing-policy#title","content":"Política de selección entre FLAN-T5-small y base con ajuste en desarrollo, evaluación reservada, costo del router y fallos locales inyectados. Publica también el resultado negativo.\n\nAutor: [Lucio Durán](<https://lucioduran.com/es>) · Python 3.11.13 · Licencia: [MIT](<https://github.com/lucioduran/ai-model-routing-policy/blob/1e891db0bfc7c6ad77a1baae3b93f5a76a558435/LICENSE>)\n\nFicha publicada: 2026-10-22 · Ficha actualizada: 2026-10-22\n\n[Repositorio](<https://github.com/lucioduran/ai-model-routing-policy>) · [Evidencia original](<https://raw.githubusercontent.com/lucioduran/ai-model-routing-policy/1e891db0bfc7c6ad77a1baae3b93f5a76a558435/results/eval/report.json>) · [Release v0.1.0](<https://github.com/lucioduran/ai-model-routing-policy/releases/tag/v0.1.0>)"},{"heading":"Problema y utilidad para agentes","level":2,"url":"https://lucioduran.com/es/projects/ai-model-routing-policy#problem","content":"Usar un router no lo vuelve automáticamente más eficiente que un solo modelo. Hay que contar el propio router, los intentos fallidos y las pérdidas de calidad por tipo de tarea.\n\nLa comparación mantiene las mismas tareas y deja visibles las decisiones, el fallback y los casos sin respuesta. Permite decidir si la complejidad del router se justifica con los resultados medidos."},{"heading":"Arquitectura","level":2,"url":"https://lucioduran.com/es/projects/ai-model-routing-policy#architecture","content":"1. **Política ajustada en desarrollo.** 16 tareas ajustan una tabla por tipo mediante exactitud menos 0,02 veces el tiempo medio de inferencia. La evaluación reservada tiene 24 tareas; las etiquetas no entran al router.\n2. **Cuatro estrategias.** Compara siempre-small, siempre-base, un selector fijo de 120 caracteres y la política ajustada. Ambos modelos están residentes y fijados por revisión.\n3. **Fallback y contabilidad.** Sólo una excepción tipada de indisponibilidad dispara el segundo adaptador. Registra sobrecosto, intentos fallidos, tokens, carga, calentamiento y ajuste por separado.\n\n- [Diseño y metodología](<https://github.com/lucioduran/ai-model-routing-policy/blob/1e891db0bfc7c6ad77a1baae3b93f5a76a558435/docs/design.md>)"},{"heading":"Qué demuestra","level":2,"url":"https://lucioduran.com/es/projects/ai-model-routing-policy#demonstrates","content":"- Separación entre ajuste de políticas y evaluación reservada con baselines explícitos.\n- Contabilidad del costo de enrutamiento y degradación por tipo de tarea.\n- Fallback controlado, fallo explícito ante dos adaptadores caídos y análisis de un resultado negativo."},{"heading":"Resultados publicados","level":2,"url":"https://lucioduran.com/es/projects/ai-model-routing-policy#results","content":"16 tareas de desarrollo y 24 de evaluación, distribuidas entre sentimiento, extracción, aritmética y lógica. FLAN-T5-small y base ejecutados localmente en Intel Xeon W-3223 con dos hilos.\n\nTiempo de solicitudes incluye router, despacho, intentos fallidos e inferencia. Carga, calentamiento y ajuste están fuera de esa tabla y se publican por separado. Las caídas son excepciones inmediatas inyectadas en adaptadores locales propios."},{"heading":"Comparación sin fallos inyectados","level":3,"url":"https://lucioduran.com/es/projects/ai-model-routing-policy#results-routing","content":"| Estrategia | Correctas | Tiempo total (s) | Router total (ms) | Tokens generados |\n| --- | --- | --- | --- | --- |\n| Siempre small | 12/24 | 4.006823 | 0.021426 | 229 |\n| Siempre base | 12/24 | 8.376350 | 0.020290 | 214 |\n| Por longitud | 12/24 | 4.359402 | 0.035640 | 229 |\n| Política ajustada | 12/24 | 4.401570 | 0.044034 | 229 |"},{"heading":"Fallback con política ajustada","level":3,"url":"https://lucioduran.com/es/projects/ai-model-routing-policy#results-outages","content":"| Indisponibilidad inyectada | Correctas | Sin respuesta | Tiempo total (s) |\n| --- | --- | --- | --- |\n| Small caído | 12/24 | 0 | 9.149960 |\n| Base caído | 12/24 | 0 | 3.981469 |\n| Ambos caídos | 0/24 | 24 | 0.000176 |\n\nLas cuatro estrategias lograron 12/24. El router ajustado fue más lento que siempre-small y no mejoró calidad. Todas fallaron las seis tareas de extracción y las seis de aritmética: cero degradación relativa puede esconder una calidad absoluta insuficiente.\n\nLa inferencia de desarrollo tomó 3,600025 s y el ajuste de la política 0,124500 ms. El tiempo completo de evaluación fue 41,797864 s, incluyendo preparación, las cuatro estrategias, caídas y grabación de evidencia. [Evidencia original](<https://raw.githubusercontent.com/lucioduran/ai-model-routing-policy/1e891db0bfc7c6ad77a1baae3b93f5a76a558435/results/eval/report.json>)."},{"heading":"Reproducir","level":2,"url":"https://lucioduran.com/es/projects/ai-model-routing-policy#reproduce","content":"Replay con Python 3.11 y biblioteca estándar, sin descargas de modelos. La reproducción neural requiere las dependencias fijadas y snapshots públicos de ambos modelos.\n\nLos comandos usan POSIX y omiten el coordinador específico de la máquina del autor. Ejecutá una medición por vez y conservá desarrollo y evaluación en directorios nuevos relacionados mediante --dev."},{"heading":"Revisar la evidencia guardada","level":3,"url":"https://lucioduran.com/es/projects/ai-model-routing-policy#reproduce-replay","content":"```\ngit clone https://github.com/lucioduran/ai-model-routing-policy.git\ncd ai-model-routing-policy\ngit checkout 1e891db0bfc7c6ad77a1baae3b93f5a76a558435\npython -m routing verify --split dev --output results/dev\npython -m routing verify --split eval --dev results/dev --output results/eval\n```"},{"heading":"Repetir la medición local","level":3,"url":"https://lucioduran.com/es/projects/ai-model-routing-policy#reproduce-inference","content":"```\npython3.11 -m venv .venv\n. .venv/bin/activate\npython -m pip install -r requirements-local.lock\npython -m routing download\nOMP_NUM_THREADS=2 MKL_NUM_THREADS=2 python -m routing run --split dev --output build/dev\nOMP_NUM_THREADS=2 MKL_NUM_THREADS=2 python -m routing run --split eval --dev build/dev --output build/eval\npython -m routing verify --split eval --dev build/dev --output build/eval\n```"},{"heading":"Alcance y límites","level":2,"url":"https://lucioduran.com/es/projects/ai-model-routing-policy#scope","content":"- Cuarenta tareas sintéticas y una ejecución no establecen ahorros de producción. Las familias se superponen entre particiones y no hubo revisión humana independiente.\n- El llamador suministra el tipo de tarea: no se mide un clasificador de intenciones. La política penaliza latencia, sin imponer una garantía dura de calidad.\n- Los fallos inmediatos no modelan red, timeouts ni costos de reintentos remotos. Ambos modelos residentes tampoco representan un despliegue con presión de memoria.\n- API paga: USD 0. CPU medida no equivale a energía ni factura. Los tiempos excluyen carga y calentamiento a nivel de solicitud.\n\n- [Orquestación de IA y selección de modelos](<https://lucioduran.com/es/blog/semantic-kernel-langchain-ai-orchestration>)"},{"heading":"Fuentes y revisión","level":2,"url":"https://lucioduran.com/es/projects/ai-model-routing-policy#sources","content":"Los valores de esta ficha provienen del informe enlazado. No son una medición en vivo. El informe conserva la revisión ejecutada; la revisión consultada incluye la publicación posterior de ese informe.\n\n- Revisión consultada: [` 1e891db0bfc7c6ad77a1baae3b93f5a76a558435 `](<https://github.com/lucioduran/ai-model-routing-policy/commit/1e891db0bfc7c6ad77a1baae3b93f5a76a558435>)\n- Revisión registrada por el experimento: [` ae4081c9097561b40652b5c2f2680cba37660af2 `](<https://github.com/lucioduran/ai-model-routing-policy/commit/ae4081c9097561b40652b5c2f2680cba37660af2>)\n- Fecha del informe (UTC): 2026-10-21T23:08:03.603602+00:00\n- Release publicada: [v0.1.0](<https://github.com/lucioduran/ai-model-routing-policy/releases/tag/v0.1.0>) · 2026-10-21T23:11:21Z\n\n- [README y uso](<https://github.com/lucioduran/ai-model-routing-policy/blob/1e891db0bfc7c6ad77a1baae3b93f5a76a558435/README.md>)\n- [Evidencia original](<https://raw.githubusercontent.com/lucioduran/ai-model-routing-policy/1e891db0bfc7c6ad77a1baae3b93f5a76a558435/results/eval/report.json>)\n- [Respuestas y trazas originales](<https://raw.githubusercontent.com/lucioduran/ai-model-routing-policy/1e891db0bfc7c6ad77a1baae3b93f5a76a558435/results/eval/records.json>)\n- [Evidencia de desarrollo](<https://raw.githubusercontent.com/lucioduran/ai-model-routing-policy/1e891db0bfc7c6ad77a1baae3b93f5a76a558435/results/dev/report.json>)\n- [Política ajustada](<https://raw.githubusercontent.com/lucioduran/ai-model-routing-policy/1e891db0bfc7c6ad77a1baae3b93f5a76a558435/results/dev/policy.json>)\n- [Diseño y metodología](<https://github.com/lucioduran/ai-model-routing-policy/blob/1e891db0bfc7c6ad77a1baae3b93f5a76a558435/docs/design.md>)\n- [Datos y procedencia](<https://github.com/lucioduran/ai-model-routing-policy/blob/1e891db0bfc7c6ad77a1baae3b93f5a76a558435/data/README.md>)\n- [Modelos, revisiones y licencias](<https://github.com/lucioduran/ai-model-routing-policy/blob/1e891db0bfc7c6ad77a1baae3b93f5a76a558435/docs/model-notices.md>)\n- [Dependencias del entorno medido](<https://github.com/lucioduran/ai-model-routing-policy/blob/1e891db0bfc7c6ad77a1baae3b93f5a76a558435/requirements-local.lock>)\n- [Licencia MIT](<https://github.com/lucioduran/ai-model-routing-policy/blob/1e891db0bfc7c6ad77a1baae3b93f5a76a558435/LICENSE>)"}],"links":[{"text":"Proyectos","url":"https://lucioduran.com/es/projects"},{"text":"Lucio Durán","url":"https://lucioduran.com/es"},{"text":"MIT","url":"https://github.com/lucioduran/ai-model-routing-policy/blob/1e891db0bfc7c6ad77a1baae3b93f5a76a558435/LICENSE"},{"text":"Repositorio","url":"https://github.com/lucioduran/ai-model-routing-policy"},{"text":"Evidencia original","url":"https://raw.githubusercontent.com/lucioduran/ai-model-routing-policy/1e891db0bfc7c6ad77a1baae3b93f5a76a558435/results/eval/report.json"},{"text":"Release v0.1.0","url":"https://github.com/lucioduran/ai-model-routing-policy/releases/tag/v0.1.0"},{"text":"Diseño y metodología","url":"https://github.com/lucioduran/ai-model-routing-policy/blob/1e891db0bfc7c6ad77a1baae3b93f5a76a558435/docs/design.md"},{"text":"Orquestación de IA y selección de modelos","url":"https://lucioduran.com/es/blog/semantic-kernel-langchain-ai-orchestration"},{"text":"1e891db0bfc7c6ad77a1baae3b93f5a76a558435","url":"https://github.com/lucioduran/ai-model-routing-policy/commit/1e891db0bfc7c6ad77a1baae3b93f5a76a558435"},{"text":"ae4081c9097561b40652b5c2f2680cba37660af2","url":"https://github.com/lucioduran/ai-model-routing-policy/commit/ae4081c9097561b40652b5c2f2680cba37660af2"},{"text":"v0.1.0","url":"https://github.com/lucioduran/ai-model-routing-policy/releases/tag/v0.1.0"},{"text":"README y uso","url":"https://github.com/lucioduran/ai-model-routing-policy/blob/1e891db0bfc7c6ad77a1baae3b93f5a76a558435/README.md"},{"text":"Respuestas y trazas originales","url":"https://raw.githubusercontent.com/lucioduran/ai-model-routing-policy/1e891db0bfc7c6ad77a1baae3b93f5a76a558435/results/eval/records.json"},{"text":"Evidencia de desarrollo","url":"https://raw.githubusercontent.com/lucioduran/ai-model-routing-policy/1e891db0bfc7c6ad77a1baae3b93f5a76a558435/results/dev/report.json"},{"text":"Política ajustada","url":"https://raw.githubusercontent.com/lucioduran/ai-model-routing-policy/1e891db0bfc7c6ad77a1baae3b93f5a76a558435/results/dev/policy.json"},{"text":"Datos y procedencia","url":"https://github.com/lucioduran/ai-model-routing-policy/blob/1e891db0bfc7c6ad77a1baae3b93f5a76a558435/data/README.md"},{"text":"Modelos, revisiones y licencias","url":"https://github.com/lucioduran/ai-model-routing-policy/blob/1e891db0bfc7c6ad77a1baae3b93f5a76a558435/docs/model-notices.md"},{"text":"Dependencias del entorno medido","url":"https://github.com/lucioduran/ai-model-routing-policy/blob/1e891db0bfc7c6ad77a1baae3b93f5a76a558435/requirements-local.lock"},{"text":"Licencia MIT","url":"https://github.com/lucioduran/ai-model-routing-policy/blob/1e891db0bfc7c6ad77a1baae3b93f5a76a558435/LICENSE"}],"structuredData":[{"@context":"https://schema.org","@graph":[{"@type":"Person","@id":"https://lucioduran.com/#person","name":"Lucio Durán","url":"https://lucioduran.com/"},{"@type":"WebSite","@id":"https://lucioduran.com/#website","url":"https://lucioduran.com/","name":"Lucio Durán","inLanguage":["en","es"],"publisher":{"@id":"https://lucioduran.com/#person"}},{"@type":"WebPage","@id":"https://lucioduran.com/es/projects/ai-model-routing-policy#page","url":"https://lucioduran.com/es/projects/ai-model-routing-policy","name":"AI Model Routing Policy","description":"Política de selección entre FLAN-T5-small y base con ajuste en desarrollo, evaluación reservada, costo del router y fallos locales inyectados. Publica también el resultado negativo.","inLanguage":"es","author":{"@id":"https://lucioduran.com/#person"},"publisher":{"@id":"https://lucioduran.com/#person"},"isPartOf":{"@id":"https://lucioduran.com/#website"},"isAccessibleForFree":true,"mainEntity":{"@id":"https://lucioduran.com/projects/ai-model-routing-policy#software"},"datePublished":"2026-10-22","dateModified":"2026-10-22","breadcrumb":{"@id":"https://lucioduran.com/es/projects/ai-model-routing-policy#breadcrumb"}},{"@type":"SoftwareSourceCode","@id":"https://lucioduran.com/projects/ai-model-routing-policy#software","name":"AI Model Routing Policy","description":"Política de selección entre FLAN-T5-small y base con ajuste en desarrollo, evaluación reservada, costo del router y fallos locales inyectados. Publica también el resultado negativo.","url":"https://lucioduran.com/es/projects/ai-model-routing-policy","codeRepository":"https://github.com/lucioduran/ai-model-routing-policy","programmingLanguage":"Python","runtimePlatform":"Python 3.11.13","license":"https://github.com/lucioduran/ai-model-routing-policy/blob/1e891db0bfc7c6ad77a1baae3b93f5a76a558435/LICENSE","version":"v0.1.0","identifier":{"@type":"PropertyValue","propertyID":"git-commit","value":"1e891db0bfc7c6ad77a1baae3b93f5a76a558435"},"author":{"@type":"Person","@id":"https://lucioduran.com/#person","name":"Lucio Durán","url":"https://lucioduran.com"},"isAccessibleForFree":true,"citation":["https://github.com/lucioduran/ai-model-routing-policy/blob/1e891db0bfc7c6ad77a1baae3b93f5a76a558435/README.md","https://raw.githubusercontent.com/lucioduran/ai-model-routing-policy/1e891db0bfc7c6ad77a1baae3b93f5a76a558435/results/eval/report.json","https://raw.githubusercontent.com/lucioduran/ai-model-routing-policy/1e891db0bfc7c6ad77a1baae3b93f5a76a558435/results/eval/records.json","https://raw.githubusercontent.com/lucioduran/ai-model-routing-policy/1e891db0bfc7c6ad77a1baae3b93f5a76a558435/results/dev/report.json","https://raw.githubusercontent.com/lucioduran/ai-model-routing-policy/1e891db0bfc7c6ad77a1baae3b93f5a76a558435/results/dev/policy.json","https://github.com/lucioduran/ai-model-routing-policy/blob/1e891db0bfc7c6ad77a1baae3b93f5a76a558435/docs/design.md","https://github.com/lucioduran/ai-model-routing-policy/blob/1e891db0bfc7c6ad77a1baae3b93f5a76a558435/data/README.md","https://github.com/lucioduran/ai-model-routing-policy/blob/1e891db0bfc7c6ad77a1baae3b93f5a76a558435/docs/model-notices.md","https://github.com/lucioduran/ai-model-routing-policy/blob/1e891db0bfc7c6ad77a1baae3b93f5a76a558435/requirements-local.lock","https://github.com/lucioduran/ai-model-routing-policy/releases/tag/v0.1.0"],"publisher":{"@id":"https://lucioduran.com/#person"},"mainEntityOfPage":{"@id":"https://lucioduran.com/es/projects/ai-model-routing-policy#page"}},{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Proyectos","item":"https://lucioduran.com/es/projects"},{"@type":"ListItem","position":2,"name":"AI Model Routing Policy","item":"https://lucioduran.com/es/projects/ai-model-routing-policy"}],"@id":"https://lucioduran.com/es/projects/ai-model-routing-policy#breadcrumb"}]}],"contentHash":"e13ddf2cef252d3f92613d9c9f21502009345b568c8744a0ab1eac251a373f1e","provenance":{"method":"Deterministic serialization of the server-rendered main element","source":"https://lucioduran.com/es/projects/ai-model-routing-policy","hashAlgorithm":"sha256","hashScope":"JSON document fields before contentHash and provenance","sourceHTMLBytes":48391,"contentBytes":8374}}
