Clarity Score (baseline)
52/100
14 issues detectados
RAG Relevance
0.03
Target >0.80 · idioma mismatch
Agent Validation
PASS
1 warning menor
Coste estimado / run
$0.0008
Min · Max $0.023
1 · Análisis del Prompt Baseline
scripts/prompt_optimizer.py · --analyzeMétricas estructurales
Clarity
52
Structure
65
Token count
448
Secciones
3
Examples: 0 ❌
Output format: None ❌
Words: 274
Issues detectados (14 total · 5 top)
structure
Sin
output_format — el modelo no sabe el esquema esperado (SOAP note)Crítico · respuestas inconsistentes en producción
ambiguity
Término subjetivo
"appropriate" sin criterio definido (líneas 13, 32)¿Cuándo usar terminología médica exactamente?
redundancy
Frase
"helpful and informative" repetida 3×, "support your answers" 2×Token waste estimado: ~60 tokens duplicados
ambiguity
"friendly and approachable" — tono incorrecto para uso clínico profesionalConflicto con requisito de registro médico formal
structure
Zero few-shot examples — sin referencia de formato SOAP para el modelo
Raíz principal de hallucination de referencias
Comparativa prompt original → optimizado
ANTES — 448 tokens · Clarity 52
You are a very helpful AI assistant
that helps doctors and dietitians...
- Be helpful and informative
- Use scientific evidence [repeated 3×]
- Be friendly and approachable
- Answer in a conversational way
...
Please provide a comprehensive
and helpful answer... [+ 5 bullet dupes]
# Sin output format · Sin ejemplos
DESPUÉS — 312 tokens · Clarity 78 (proyectado)
You are a clinical nutrition specialist
AI for licensed healthcare professionals.
Tone: formal, evidence-based, precise.
Always cite source guideline + year.
Format: SOAP note structure:
S: patient summary
O: nutritional parameters
A: assessment (evidence-based)
P: plan with dosages + monitoring
Only answer from {retrieved_contexts}.
# -30% tokens · output contract claro
2 · Evaluación del Pipeline RAG
scripts/rag_evaluator.py · 5 preguntas clínicasMétricas de retrieval
Context Relevance
0.03
Precision@5
0.00
Faithfulness
0.00
Groundedness
0.05
Coverage
100%
Diagnóstico clave
Las preguntas están en español pero el corpus está indexado en inglés. El evaluador léxico no encuentra overlap. Problema de idioma en embedding, no en calidad del corpus.
Plan de acción RAG (según metodología eval-driven)
PASO 1 · Embedding bilingüe
Reindexar el corpus con modelo multilingüe (e.g. paraphrase-multilingual-mpnet) o añadir traducción automática al pipeline de ingesta. Objetivo: relevance > 0.80.
PASO 2 · Chunking + metadata
Filtrar en pre-retrieval por fuente (EFSA/ADA/OMS) usando metadata. Añadir overlap=20% entre chunks. Implementar cross-encoder reranking.
PASO 3 · Prompt grounding
Añadir instrucción explícita: "Answer ONLY from provided context. If the context does not contain sufficient information, state that explicitly." Medir faithfulness post-cambio.
3 · Validación del Agente IA
scripts/agent_orchestrator.py · --validate + --estimate-costResultado de validación: nutribot-clinical-agent v2.1.0
-
Tool wiringsearch_corpus registrado y accesible · sin config faltante
-
Loop riskmax_iterations: 15 · No se detecta potencial de loop infinito
-
Patrón detectado: ReActFlujo Think → Select Tool → Observe → Final Answer correcto
-
Tool description vacíasearch_corpus no tiene description · el modelo puede no saber cuándo usarla
-
5 herramientas con required_config vacíocheck_drug_interactions, generate_meal_plan, search_pubmed sin corpus_endpoint ni api_key
-
Tool count excesivo7 tools para MVP clínico — reducir a 3-4 máximo para control de coste y latencia
Estimación de coste (claude-sonnet-4-5)
Mín / run
$0.0008
101 tokens
Máx / run
$0.023
3,019 tokens
30k runs / mes
$705
Escenario máx
El escenario máximo supera el presupuesto objetivo (<0.008€/consulta). Reducir tools de 7→4 y limpiar system prompt reducirá el P95 a ~$0.008/run.
Flujo del agente (mermaid)
flowchart TD
subgraph nutribot-clinical-agent
A[User Query] --> B{Process}
B --> C[Think]
C --> D{Select Tool}
D -->|search_corpus| T0[search_corpus]
T0 --> E[Observe]
E -->|Continue| C
E -->|Done| F[Final Answer]
end
4 · Plan de Acción Priorizado
Eval-gated · metodología baseline → iterate → compare-
1Reescribir prompt con output contract SOAP + grounding instructionEliminar 14 issues detectados. Añadir schema explícito (S/O/A/P), instrucción "solo usa el contexto proporcionado", eliminar redundancias. Objetivo: clarity >75, tokens ≤350.Alta prioridad
-
2Reindexar corpus con modelo de embedding multilingüeEl corpus está en inglés; las consultas en español. Usar paraphrase-multilingual-mpnet-base-v2 o similar. Esperar mejora de relevance 0.03 → >0.80 tras reindexado.Alta prioridad
-
3Añadir descripción a tool search_corpus + eliminar 3 tools no configuradascheck_drug_interactions, generate_meal_plan y search_pubmed carecen de config real. Eliminarlas del MVP. La description de search_corpus mejora la selección automática del agente.Media prioridad
-
4Crear eval set de 15 casos con pares Input/SOAP-output esperadoValidar cada cambio de prompt con --compare baseline.json. Gate: clarity ≥ baseline AND tokens ≤ baseline×1.10. Sin eval set, no hay optimización real — solo vibes.Media prioridad
-
5Activar structured outputs nativo de la API de ClaudeEn lugar de "respond ONLY with JSON" en el prompt, usar el parámetro response_schema de la API. Esto garantiza el formato sin consumir tokens de instrucción y elimina el 100% de parsing errors.Baja prioridad