Clinical AI Multi-Agent
Backend de IA multi-agente de nivel producción para soporte en decisión clínica. Recibe la descripción de un caso, clasifica la urgencia mediante triage con LLM, activa agentes especialistas en paralelo y devuelve una evaluación integrada y tipada, con tolerancia a fallos parciales.
POST /clinical-case/analyze
│
▼
AgentRouter ── triage LLM (temp=0.0)
urgencia + agentes sugeridos
│
▼
Integrator ── asyncio.gather (paralelo)
┌───────────────┬───────────────┐
ClinicalAgent EmergencyAgent CardiologyAgent ...
│ cada agente: retriever | prompt | llm | parser
│ (RAG sobre guías clínicas en pgvector)
└───────────────┴───────────────┘
│
▼
AnalyzeOutput
summary · findings · red_flags ·
recommendations · confidence ·
failed_agents · warningsLa API · OpenAPI
Superficie REST documentada con esquemas tipados: triage, análisis multi-agente y consulta de casos.

Stack Tecnológico
- APIFastAPI 0.136 (async)
- AgentesLangChain LCEL
- LLMNvidia NIM · Groq · OpenAI
- Vector storepgvector (RAG)
- Base de DatosPostgreSQL · SQLAlchemy 2.0 · Alembic
- ValidaciónPydantic v2
- DeployDocker · GHCR · Traefik
El Concepto
Un único endpoint recibe un caso clínico en lenguaje natural. Un router basado en LLM clasifica la urgencia y decide qué agentes especialistas (emergencias, cardiología, farmacología, radiología…) necesita el caso según su contenido semántico, no solo según el nivel de urgencia. Cada agente ejecuta su propia cadena RAG independiente y el Integrator combina los resultados en una única evaluación tipada.
Decisiones Técnicas
- Triage determinista: el router corre a
temperature=0.0para que la clasificación de urgencia y la selección de agentes sean reproducibles, no aleatorias. - Activación por contenido: los agentes especialistas se activan por el contenido del caso (una lectura de ECG activa cardiología) y no por el nivel de urgencia.
- Ejecución paralela: todos los agentes seleccionados corren concurrentemente con
asyncio.gather; tres agentes de ~2 s tardan ~2 s en total, no 6 s. - RAG por agente: cada agente recupera guías clínicas relevantes desde pgvector vía LangChain (
retriever | prompt | llm | parser) y parsea una respuesta tipada con Pydantic. - Resiliencia: con
return_exceptions=True, si un agente falla o expira, el resto devuelve igual su resultado; los camposfailed_agentsywarningshacen explícita la degradación parcial. - Proveedores intercambiables: LLM y embeddings son agnósticos del proveedor (Nvidia NIM, Groq, OpenAI, LM Studio) mediante una capa compatible con OpenAI.
Lo que Demuestra
Es la pieza donde la arquitectura backend y la IA aplicada se encuentran: orquestación asíncrona, recuperación semántica, contratos de datos tipados y resiliencia ante fallos parciales, todo empaquetado con Docker multi-stage, integración continua hacia GHCR y despliegue en VPS con Traefik y TLS automático. No es una demo de LLM, es un servicio diseñado para producción.