Diagnóstico de resultados inesperados
Clasifique los modos de fallo: respuesta incorrecta, formato incorrecto, tema no relacionado o alucinación.
Diagnóstico de resultados inesperados es una lección gratuita de AI Prompt Engineering en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de AI Prompt Engineering, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de AI Prompt Engineering incluye 4 lecciones en total.
Cuando fallan los prompts
Incluso los prompts cuidadosamente elaborados pueden producir resultados incorrectos. Para diagnosticar los fallos se necesita una taxonomía: una clasificación del tipo de fallo ocurrido. Sin esta clasificación, la depuración se convierte en una cuestión de conjeturas. Las cuatro categorías principales de fallos son: respuesta incorrecta, formato incorrecto, respuesta fuera de tema y alucinación.
Tipo de fallo 1: Respuesta incorrecta
Una respuesta incorrecta es un error factual: el modelo dio una respuesta con el formato correcto y sobre el tema correcto, pero el contenido es incorrecto.
Ejemplos: fechas, estadísticas, nombres y código que contiene un error lógico. Este es el fallo más difícil de detectar automáticamente porque, en apariencia, el resultado parece correcto.
- Causa: fecha de corte de los datos de entrenamiento, hecho poco frecuente o error de razonamiento de varios pasos
- Detección: comparación con datos de referencia, revisión humana o llamada a un LLM de verificación
# Example: wrong answer failure
prompt = 'What year was Python first released?'
response = 'Python was first released in 1994.' # Wrong — it was 1991
# Ground truth check
GROUND_TRUTH = '1991'
correct = GROUND_TRUTH in response
print(f'Correct: {correct}') # FalseTipo de fallo 2: Formato incorrecto
Un fallo de formato incorrecto se produce cuando el modelo responde a la pregunta correcta con la información correcta, pero ignora la instrucción de formato.
Ejemplos: devuelve texto sin formato cuando se solicitó JSON, añade markdown cuando se requería texto sin formato o devuelve una lista cuando se pidió un único valor.
- Causa: la instrucción de formato está relegada a una parte extensa del prompt, existen instrucciones contradictorias o el modelo ignora instrucciones de baja prioridad
- Detección: error de análisis de JSON, discrepancia con una expresión regular o fallo de validación del esquema
import json
response_text = 'Sure! Here is the result: {"name": "Alice", "age": 30}'
try:
data = json.loads(response_text)
print('Format OK:', data)
except json.JSONDecodeError as e:
print(f'FORMAT FAILURE: {e}')
# 'Sure! Here is the result:' prefix broke JSON parsingTipo de fallo 3: Respuesta fuera de tema
Un fallo de respuesta fuera de tema significa que el modelo respondió a una pregunta distinta de la que se le hizo. La respuesta puede ser objetivamente correcta y tener un formato adecuado, pero no aborda la intención real del usuario.
Ejemplos: se solicita una función de Python y se recibe una función de JavaScript; se pide una respuesta de una sola línea y se recibe un ensayo completo; se pide corregir un error y se recibe una explicación del error en lugar de la corrección.
- Causa: instrucción ambigua, contexto contradictorio o desviación de la tarea en conversaciones largas
# Off-topic example
prompt = 'Write a Python function that reverses a list.'
response = '''
In JavaScript, you can reverse an array like this:
const reversed = arr.reverse();
'''
# Detection: check that output contains the correct language keyword
def check_language(response, expected_lang='def '):
if expected_lang not in response:
print(f'OFF-TOPIC FAILURE: expected {expected_lang} in response')
return False
return True
check_language(response) # False — no Python defTipo de fallo 4: Alucinación
La alucinación es el fallo más peligroso: el modelo inventa hechos inexistentes. Estos resultados parecen plausibles y se expresan con seguridad, por lo que son difíciles de detectar.
Ejemplos: citas inventadas (el título del artículo parece real, pero no existe), endpoints de API inventados, estadísticas falsas y personas inexistentes.
- Causa: el modelo rellena las lagunas de conocimiento con texto plausible basado en patrones
- Detección: compruebe los hechos con fuentes autorizadas, coteje las citas y pruebe las llamadas a la API
# Hallucination detection via external verification
import requests
def verify_doi(doi):
url = f'https://doi.org/{doi}'
resp = requests.head(url, allow_redirects=True, timeout=5)
return resp.status_code == 200
# Model claimed this paper exists:
fabricated_doi = '10.1234/fake.paper.2023.99999'
if not verify_doi(fabricated_doi):
print('HALLUCINATION DETECTED: DOI does not exist')La taxonomía de fallos en la práctica
Cuando observe un fallo, clasifíquelo antes de intentar corregirlo. El tipo de fallo determina la estrategia de corrección:
- Respuesta incorrecta: añada contexto, use recuperación de información o cambie a un modelo más capaz
- Formato incorrecto: refuerce la instrucción de formato, añada ejemplos de salida o use salidas estructuradas / llamadas a funciones
- Fuera de tema: reescriba la instrucción para que sea más específica y simplifique el prompt
- Alucinación: añada contexto de fundamentación, indique al modelo que diga «No lo sé» y habilite las citas
Registro estructurado de fallos
Registre cada fallo junto con su clasificación. Con el tiempo aparecen patrones: una sección concreta del prompt provoca la mayoría de los errores de formato incorrecto o un tema específico desencadena alucinaciones frecuentes. Los registros estructurados permiten depurar basándose en datos.
import json
from datetime import datetime
def log_failure(prompt, response, failure_type, details=''):
entry = {
'timestamp': datetime.utcnow().isoformat(),
'failure_type': failure_type, # wrong_answer | wrong_format | off_topic | hallucination
'prompt_hash': hash(prompt),
'response_snippet': response[:200],
'details': details
}
with open('prompt_failures.jsonl', 'a') as f:
f.write(json.dumps(entry) + '\n')
log_failure(
prompt=my_prompt,
response=bad_response,
failure_type='wrong_format',
details='JSON prefix text broke parsing'
)Clasificación automatizada de fallos
Para realizar pruebas a gran escala, use una llamada de clasificación a un LLM que etiquete automáticamente cada respuesta con un tipo de fallo. Esto permite evaluar por lotes cientos de casos de prueba.
def classify_failure(prompt, expected, actual):
classification_prompt = (
f'You are a QA evaluator for LLM outputs.\n'
f'Prompt: {prompt}\n'
f'Expected behavior: {expected}\n'
f'Actual output: {actual}\n\n'
'Classify the failure as one of: CORRECT, WRONG_ANSWER, WRONG_FORMAT, OFF_TOPIC, HALLUCINATION.\n'
'Reply with only the label.'
)
resp = client.chat.completions.create(
model='gpt-4o-mini',
messages=[{'role': 'user', 'content': classification_prompt}]
)
return resp.choices[0].message.content.strip()Matriz de gravedad
No todos los fallos tienen el mismo impacto. Una matriz de gravedad ayuda a priorizar las correcciones:
- Alucinación en un contexto médico o jurídico: crítica — corríjala de inmediato
- Formato incorrecto en una herramienta interna: alta — interrumpe el análisis posterior
- Respuesta incorrecta en un caso límite poco frecuente: media — supervise su frecuencia
- Respuesta fuera de tema ante una entrada ambigua: baja — aceptable si ocurre con poca frecuencia
Realice un seguimiento semanal de las tasas de fallos por tipo. Un aumento repentino en cualquier categoría indica una regresión que requiere atención.
Creación de un panel de fallos
Un panel de fallos sencillo lee el registro de fallos e informa de los recuentos por tipo y por sección del prompt:
import json
from collections import Counter
def failure_report(log_path='prompt_failures.jsonl'):
entries = []
with open(log_path) as f:
for line in f:
entries.append(json.loads(line))
counts = Counter(e['failure_type'] for e in entries)
total = len(entries)
print(f'Total failures: {total}')
for ftype, count in counts.most_common():
pct = 100 * count / total
print(f' {ftype}: {count} ({pct:.1f}%)')
failure_report()Prevención proactiva de fallos
Estrategias proactivas para reducir cada tipo de fallo antes de que ocurra:
- Respuesta incorrecta: proporcione texto de referencia en el prompt (RAG) y pida al modelo que cite su fuente
- Formato incorrecto: use el modo JSON o llamadas a funciones y proporcione un ejemplo de formato en el prompt
- Fuera de tema: coloque la tarea en la primera oración y evite introducciones largas que diluyan la intención
- Alucinación: indique «Use únicamente la información proporcionada a continuación» y añada «Si no está seguro, diga “No lo sé”»
Comprobación de conocimientos
¿Qué tipo de fallo se produce cuando el modelo inventa hechos inexistentes, como una cita inventada o un endpoint de API que no existe?
Recapitulación: diagnóstico de resultados inesperados
Los cuatro tipos de fallos de los LLM y sus características principales:
- Respuesta incorrecta: formato correcto, tema correcto y contenido incorrecto — compruebe los hechos con datos de referencia
- Formato incorrecto: contenido correcto, pero se ignoró la instrucción de formato — la validación del esquema lo detecta
- Fuera de tema: formato correcto, pero se respondió a una pregunta distinta — compruebe que coincidan el idioma y la tarea
- Alucinación: hechos inventados — verifique la información con fuentes externas
Registre y clasifique cada fallo. Realice un seguimiento de las tasas por tipo a lo largo del tiempo. Próxima lección: análisis de causa raíz para determinar qué parte del prompt provocó el fallo.
Aprende AI Prompt Engineering con un tutor de IA — gratis
Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.
- Cursos
- 53
- Lecciones
- 199
Preguntas frecuentes
¿La lección «Diagnóstico de resultados inesperados» es gratis?
Sí — el texto completo de «Diagnóstico de resultados inesperados» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de AI Prompt Engineering, actualiza a CoddyKit PRO. El curso de AI Prompt Engineering incluye 4 lecciones en total.
¿Qué aprenderé en «Diagnóstico de resultados inesperados»?
Clasifique los modos de fallo: respuesta incorrecta, formato incorrecto, tema no relacionado o alucinación. Practicas AI Prompt Engineering con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar AI Prompt Engineering?
No se requiere experiencia previa. AI Prompt Engineering en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.
¿Cuánto tiempo toma la lección «Diagnóstico de resultados inesperados»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de AI Prompt Engineering?
Sí. Cada lección de AI Prompt Engineering incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Diagnóstico de resultados inesperados
- Análisis de causa raíz de prompts
- Enfoque sistemático para depurar
- Estrategias de registro y documentación