Saltar al contenido
JC.dev
Área Técnica
Volver a Proyectos

Backend IA · Producción

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 · warnings

De un vistazo

Tipo de proyecto
Proyecto personal
Rol
Proyecto personal de backend con IA aplicada, diseñado y construido de extremo a extremo.
Stack
  • Python
  • FastAPI (async)
  • LangChain LCEL
  • pgvector
  • PostgreSQL
  • SQLAlchemy 2.0
  • Pydantic v2
  • Docker

Qué demuestra

  1. Orquestación asíncrona: agentes especialistas en paralelo con asyncio.gather y tolerancia a fallos parciales.
  2. RAG por agente sobre pgvector y respuestas tipadas con Pydantic.
  3. Servicio pensado para producción: Docker multi-stage, integración continua hacia GHCR y despliegue con Traefik.

La API · OpenAPI

Superficie REST documentada con esquemas tipados: triage, análisis multi-agente y consulta de casos.

Documentación OpenAPI (Swagger UI) de Clinical AI Multi-Agent: endpoints de triage, análisis y casos clínicos con esquemas tipados

Arquitectura

Recorrido de una petición: del endpoint al resultado tipado.

  1. API · FastAPI, Caso clínico. POST /clinical-case/analyze recibe la descripción del caso en lenguaje natural. Siguiente: AgentRouter.
  2. AgentRouter, Triage con LLM. Un LLM con temperature=0.0 clasifica la urgencia y sugiere los agentes especialistas según el contenido del caso. Siguiente: Integrator.
  3. Integrator, asyncio.gather. Ejecuta en paralelo los agentes seleccionados; si uno falla, el resto devuelve igual su resultado. Siguiente: Agentes.
  4. Agentes, RAG · pgvector. Clinical, Emergency, Cardiology y otros: cada uno encadena retriever, prompt, LLM y parser sobre guías clínicas en pgvector. Siguiente: AnalyzeOutput.
  5. AnalyzeOutput, Salida tipada. Evaluación integrada con summary, findings, red_flags, recommendations, confidence, failed_agents y warnings. Fin del flujo.

El Concepto

Un único endpoint recibe un caso clínico en lenguaje natural.

  • Router 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.
  • Agentes Cada agente ejecuta su propia cadena RAG independiente.
  • Integrator Combina los resultados en una única evaluación tipada.

Decisiones Técnicas

  • Triage determinista: el router corre a temperature=0.0 para 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 campos failed_agents y warnings hacen 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. No es una demo de LLM, es un servicio diseñado para producción.

  • Backend Orquestación asíncrona, recuperación semántica, contratos de datos tipados y resiliencia ante fallos parciales.
  • Empaquetado Docker multi-stage, integración continua hacia GHCR y despliegue en VPS con Traefik y TLS automático.