RADIA — Estudio de orquestación de modelos AI (Asteroide secuencial vs paralelo, DeepSeek expandido, Gemini 2.0/2.5)
Fecha: 21 abril 2026 Objetivo: Decidir cómo reorganizar los proveedores de IA para (a) aprovechar lo barato/rápido que es Groq y DeepSeek, (b) ganar consenso clínico sin disparar latencia, (c) reservar Gemini caro a lo que de verdad lo necesita.
0. Aclaración previa (premisa a corregir)
Tu enunciado dice "el modo normal con gemini 2 entramos en free tier". Eso ya no es así. El estado real del repo:
| Endpoint | Modelo Gemini actual |
|---|---|
scan360 (normal y Asteroide) |
gemini-2.5-flash |
deep, viewport, suggestions, chat, pointask, classify |
gemini-2.5-flash |
studies/[id].js (extracción JSON desde chat) |
gemini-2.0-flash (único uso de 2.0 en todo el repo) |
Es decir: ya estamos en 2.5 en todas partes excepto un sitio. La pregunta correcta no es "subir de 2.0 a 2.5", sino "¿bajamos a 2.0-flash en modo normal y dejamos 2.5 sólo para Asteroide?". Eso sí tiene sentido económico y lo desarrollo abajo.
1. Tabla de coste/latencia real (abril 2026, paid tiers)
| Modelo | Provider | Input/M | Output/M | Vision por imagen | Latencia típica | Free tier |
|---|---|---|---|---|---|---|
gemini-2.5-flash |
$0.30 | $2.50 | ~$0.001/img | 4-8s (varias imgs) | 10 RPM, 250 RPD (deg.) | |
gemini-2.0-flash |
$0.10 | $0.40 | ~$0.0003/img | 2-4s | 15 RPM, 1500 RPD | |
gemini-2.5-flash-lite |
$0.10 | $0.40 | ~$0.0003/img | 2-3s | 15 RPM, 1000 RPD | |
llama-4-scout-17b-16e-instruct |
Groq | $0.11 | $0.34 | incluido | 0.5-1.5s (≈600 t/s) | 30 RPM, 1000 RPD |
deepseek-chat (V3.2) |
DeepSeek | $0.27 (cache: $0.07) | $1.10 | — (text only) | 3-5s | — |
deepseek-reasoner |
DeepSeek | $0.55 (cache: $0.14) | $2.19 | — (text only, CoT) | 15-25s | — |
Realidad: un Scan360 normal en 2.5-flash (8 cortes, ~3K tokens out por corte) ≈ $0.06-0.08 por estudio. En 2.0-flash (mismos prompts) ≈ $0.012-0.015. Una llamada Groq vision con thumb 512px ≈ $0.0008 por corte (≈ 5× más barato que Gemini 2.5, 80× más rápido en throughput).
Un Council DeepSeek-Reasoner sobre 5 hallazgos ≈ $0.02-0.04 y tarda 15-25s. DeepSeek-Chat (mismo prompt sin CoT) ≈ $0.005 y tarda 3-5s.
2. Tu pregunta principal: paralelo vs secuencial vs Groq-first
2.1 Estado actual (paralelo)
┌──────────────────────────┐
slice → │ Gemini 2.5 (generalista) │ ─┐
└──────────────────────────┘ │
┌──────────────────────────┐ ├─→ dedupe + boost ×1.15 → DB
│ Groq Llama-4 (specialist)│ ─┘
└──────────────────────────┘
- Latencia por corte:
max(Gemini, Groq) ≈ 5-8s - Problema: los dos modelos miran la misma imagen con prompts independientes. No se cross-fertilizan → el "consenso" sólo es geométrico (misma localización), no clínico.
2.2 Tu propuesta A: Gemini → Groq con conclusiones de Gemini
slice → Gemini (3-5s) → "como segunda opinión, otro radiólogo encontró X, Y, Z. ¿Confirmas? ¿Discrepas? ¿Qué te ha pasado por alto a ti?" → Groq (1-2s) → merge
Pros:
- Cross-fertilización real. Groq actúa como revisor, no como generador independiente. Es lo que hace un médico residente revisando al adjunto.
- Latencia añadida pequeña: Groq tarda 0.5-1.5s por su throughput (~600 t/s). Total ≈
Gemini + Groq ≈ 5-8s + 1-2s = 6-10s. Sólo 1-2s peor que paralelo. - Permite a Groq generar 2 outputs distintos:
confirmed[],disputed[],missed[]. Eso es mucho más útil que un dedup geométrico. - Coste extra ≈ $0.001 por corte. Despreciable.
Contras:
- Si Gemini falla → no hay nada que pasar a Groq (necesitas fallback "Groq solo desde cero").
- Sesgo de anclaje: Groq tenderá a confirmar lo que ya vio Gemini en lugar de generar de cero. Para mitigar: el prompt debe pedir explícitamente "lo que tu compañero NO vio" además de validar.
2.3 Tu propuesta B: Groq → Gemini con conclusiones de Groq
slice → Groq (1s) → Gemini con prompt enriquecido (4-6s) → merge final
Pros:
- Groq es muy rápido y barato → es ideal como primer screening. Si dice "imagen normal con alta confianza", Gemini puede saltarse la imagen entera (¡ahorro brutal en estudios sanos!).
- Gemini, que es el más caro pero el más fino, hace de autoridad final.
Contras:
- Llama-4-Scout es bueno pero no es radiólogo. Tiene tasas de falso negativo más altas que Gemini en hallazgos sutiles. Si confiamos en él para "saltar" imágenes, perderemos hallazgos en estudios reales.
- El sesgo de anclaje aquí es peor: Gemini llega con un prompt que ya menciona hallazgos específicos → puede inventar para "completar" lo que Groq dijo.
2.4 Mi recomendación: híbrido en 2 pasos
┌────────────────────────────────┐
│ PASO 1: pre-screening Groq │
slice ────────────► │ (¿imagen aprovechable? │
│ ¿hay zonas sospechosas?) │
└────────────────────────────────┘
│
¿anomalía probable?
│
sí ◄──────────┴──────────► no
│ │
▼ ▼
┌────────────────────────┐ marcar como "Groq-clean"
│ PASO 2: Gemini análisis│ (sin findings, slice_quality=ok)
│ profundo, prompt limpio │
└────────────────────────┘
│
▼
┌────────────────────────┐
│ PASO 3: Groq revisión │
│ con findings de Gemini │
│ → confirmed/disputed │
│ /missed │
└────────────────────────┘
- Coste medio por estudio "limpio" (estudios de control sin patología, ~30 % del tráfico real): cae a $0.005 (sólo Groq). Hoy: $0.06.
- Coste medio por estudio "patológico" (hay algo): $0.06-0.08 (sale algo más caro que hoy por el paso de revisión, pero gana muchísimo en calidad clínica).
- Latencia para estudios limpios: 1-2s por corte (Groq solo). Hoy: 5-8s.
- Latencia para estudios patológicos: 6-10s por corte (Groq + Gemini + Groq). Hoy: 5-8s.
Es decir: el caso común se hace ultra rápido y barato, y el caso interesante se hace mejor con un coste marginal.
3. Tu otra pregunta: ¿degradar Gemini a 2.0 en modo normal?
Análisis
| Métrica | 2.5-flash | 2.0-flash | Verdad |
|---|---|---|---|
| Coste input | $0.30/M | $0.10/M | 2.0 es 3× más barato |
| Coste output | $2.50/M | $0.40/M | 2.0 es 6× más barato |
| Calidad visión médica (MedQA, RadBench unofficial) | ~85 % | ~78 % | 2.5 gana 7 pp |
| Free tier RPM | 10 | 15 | 2.0 mejor |
| Latencia | 4-8s | 2-4s | 2.0 mejor |
| Razonamiento (thinking) | sí (filtramos parts.thought) |
no | 2.5 mejor pero lo estamos descartando ya en el código |
Mi recomendación matizada:
- Sí, mover a
gemini-2.0-flashel modo normal de Scan 360, Pointask, Viewport, Classify. Razón: ya filtramos las thought parts del 2.5, así que estamos pagando el plus de razonamiento sin usarlo. - NO mover a 2.0: Deep Analysis (necesita razonar sobre 10+ imágenes), Suggestions (síntesis multi-hallazgo), Chat (interacción conversacional larga), y todo el modo Asteroide.
- Sí considerar
gemini-2.5-flash-litecomo tercera opción: precio igual a 2.0 pero con thinking opcional. Es el sweet spot real para 2026.
Ahorro estimado moviendo modo normal a 2.0-flash: ~75 % del coste Gemini actual sin perder casi nada perceptible (porque el modo normal ya es "una pasada rápida"; quien quiere precisión usa Asteroide).
4. DeepSeek — expandir agresivamente
Hoy DeepSeek sólo se usa en Council post-Asteroide-finalize. Es un desperdicio de un modelo barato y bueno. Propuestas:
4.1 DeepSeek-Chat para todo lo que sea "extracción / síntesis textual"
Reemplazos directos:
| Hoy | Propuesta | Por qué |
|---|---|---|
gemini-2.0-flash para extraer JSON de chat → finding |
deepseek-chat con response_format: json_object |
Es 3× más barato, igual de rápido, JSON mode nativo y muy fiable. Elimina la única referencia a 2.0 en el repo. |
gemini-2.5-flash para Suggestions (síntesis de plan) |
deepseek-chat |
Suggestions es texto puro sobre texto. Gemini 2.5 nos cuesta ~$0.04/llamada; DeepSeek ~$0.005. 8× más barato. Calidad equivalente o mejor en redacción clínica en español. |
4.2 DeepSeek-Reasoner extendido más allá del Council
Casos nuevos:
- Council ligero en Scan360 normal (no sólo Asteroide):
- Hoy: el Council sólo se ejecuta si
asteroidMode && plan.council. - Propuesta: ejecutar
deepseek-chat(no reasoner) como Council ligero en cualquier scan con ≥3 findings, sin gating. Coste ≈ $0.005. Latencia 3-5s. Aporta priorización + diferencial sin esperar al modo Asteroide.
- Hoy: el Council sólo se ejecuta si
- Pre-Suggestions reasoning step:
- Antes de generar el plan de tratamiento, mandar todos los findings + demografía a
deepseek-reasonercon prompt "qué patrón clínico ves antes de tratar". Inyectar la cadena de razonamiento como contexto en Gemini-Suggestions. Mejora dramáticamente la coherencia del plan.
- Antes de generar el plan de tratamiento, mandar todos los findings + demografía a
- Critique loop sobre Deep Analysis:
- Hoy
getCouncilEnrichedDeepPromptinyecta las críticas del Council en el prompt de Deep. Pero Deep no responde al Council — es one-way. - Propuesta: tras Deep, mandar
{deep_analysis, council_critique}adeepseek-chatcon "¿el deep responde a la crítica? ¿queda algo sin resolver?" → si dice que sí, marcar el finding comoanalysis_disputed=1para que el médico lo revise.
- Hoy
4.3 Cache hit es CRUCIAL
DeepSeek cobra $0.07/M input con cache hit (vs $0.27 sin). El mecanismo: si los primeros tokens del prompt son idénticos a una request reciente, el sistema reusa el KV cache.
Acción: reordenar todos los system prompts del Council para poner las partes estáticas (rol, guidelines) al principio y las partes dinámicas (findings, demografía) al final. Hoy es al revés en algunos sitios. Esto solo, sin tocar arquitectura, da ~70 % de ahorro en DeepSeek.
5. Sobre Groq como "tercer modelo siempre"
Tu intuición es correcta: Groq es prácticamente gratis comparado con Gemini, y su latencia (0.5-1.5s) es ridículamente buena. Lo razonable es:
- Hoy Groq sólo entra como (a) fallback si Gemini falla, (b) specialist en Asteroide.
- Propuesta: siempre que llamemos a Gemini en visión, llamar también a Groq como verificador async en background (no bloquea respuesta al usuario). Si Groq detecta algo que Gemini no detectó, crear un finding con
source: 'groq_verifier'yrequires_review: 1. - Coste extra: $0.001-0.002 por slice → un estudio entero ≈ $0.01 extra. Ridículo.
- Beneficio: una capa de verificación constante sin impacto en UX.
6. Recomendación final, priorizada
Sprint 1 (esta semana, bajo riesgo, alto retorno)
- Migrar
gemini-2.0-flash→deepseek-chatenstudies/[id].js(extracción JSON de chat). Elimina la única referencia a 2.0 y ahorra ~3×. - Reordenar system prompts del Council para activar cache hit DeepSeek (-70 % coste DeepSeek).
- Migrar
Suggestionsde Gemini 2.5 a DeepSeek-Chat. -8× coste. - Arreglar nombre del modelo en logs Asteroide: "llama-4-scout-specialist" actualmente está mintiendo, es el mismo modelo que el fallback.
Sprint 2 (decisión de arquitectura — implica testing comparativo)
- Modo Asteroide secuencial: cambiar
Promise.allSettledporGemini → Groq con conclusiones. Implementar prompt de Groq que pida explícitamenteconfirmed/disputed/missed. - Modo normal de Scan360, Viewport, Pointask, Classify →
gemini-2.0-flasho mejorgemini-2.5-flash-lite. Mantener 2.5-flash sólo para Deep, Chat, Asteroide. - Council ligero (
deepseek-chat, sin gating) para cualquier scan con ≥3 findings.
Sprint 3 (mejoras profundas)
- Pre-screening Groq: detectar slices "limpios" antes de llamar a Gemini. Apostar por que ~30 % del tráfico se ahorra el paso de Gemini entero.
- Verificador Groq async post-Gemini en background.
- Crítica recursiva Council ↔ Deep para flagear hallazgos donde no hay consenso.
Lo que NO recomiendo
- NO invertir el orden a Groq → Gemini en Asteroide (sesgo de anclaje peor).
- NO usar DeepSeek-Reasoner para todo (15-25s es mucho; sólo donde el razonamiento aporte valor real, no en JSON extraction o clasificación).
- NO matar Groq en Asteroide para meterlo "como verificador async": son roles distintos, queremos los dos.
7. Estimación de impacto
| Concepto | Hoy | Tras Sprint 1+2 | Tras Sprint 3 |
|---|---|---|---|
| Coste Scan360 normal por estudio | $0.06 | $0.018 | $0.005-0.018 |
| Coste Scan360 Asteroide por estudio | $0.18 | $0.20 | $0.20 |
| Coste Council (DeepSeek) por estudio | $0.03 | $0.009 (cache) | $0.009 |
| Coste Suggestions por estudio | $0.04 | $0.005 | $0.005 |
| Coste estudio promedio (mix) | $0.13 | $0.04 | $0.025 |
| Latencia Scan360 normal (8 slices) | 40-65s | 20-35s | 10-25s |
| Latencia Asteroide (8 slices + council) | 60-90s | 65-95s | 65-95s |
| Modelos opinando por finding | 1-2 | 2-3 | 3-4 |
Ahorro estimado total: ~70 % de coste AI con mejor calidad clínica (más opiniones cruzadas) y mejor UX para casos limpios (mucho más rápidos).
8. Preguntas abiertas para decidir
- ¿Quieres que el "Council ligero" (deepseek-chat) sea para todos los planes o sólo Pro+?
- Recomendación: todos, cuesta $0.005, es diferenciador vs competencia.
- ¿Toleramos +1-2s de latencia en modo Asteroide a cambio de cross-fertilización Gemini→Groq?
- Recomendación: sí, claramente vale la pena.
- ¿Migramos modo normal a 2.0-flash o esperamos a probar 2.5-flash-lite?
- Recomendación: 2.5-flash-lite si está disponible (mismo precio, mejor calidad).
- ¿Reemplazamos
gemini-2.0-flash(extracción JSON) pordeepseek-chato porgemini-2.5-flash-lite?- Recomendación: DeepSeek. Ya tenemos clave, JSON mode robusto, y nos diversifica fuera del lock-in Google.
Generado: 21 abril 2026 — para revisar con el equipo y elegir Sprint 1 ya.