Daniel Alfredo García Serna
📚 CLASE: Outputs estructurados con JSON mode (Curso de Claude API)
━━━━━━━━━━━━━━━━━━
🎯 IDEA PRINCIPAL
Garantizar la extracción e integración confiable de datos forzando a la API de Claude a retornar respuestas en formato JSON estricto y parseable mediante técnicas de prompt engineering y uso de herramientas (tool use).
━━━━━━━━━━━━━━━━━━
⚡ RESUMEN ULTRA RÁPIDO
🟢 Utiliza la técnica de prefilling (pre-llenado) agregando { al final del mensaje del asistente para forzar una respuesta JSON pura.
🔵 El uso de Tools/Function Calling es el método más robusto para definir el esquema JSON exacto mediante JSON Schema.
🟡 Indicar explícitamente en el system prompt que no incluya texto introductorio ni bloques de código markdown previene fallos al parsear.
🔴 Intentar usar json.loads() en la respuesta sin limpiar comillas o texto explicativo causa un error JSONDecodeError común.
🟢 Valida el esquema del JSON devuelto utilizando librerías como Pydantic antes de procesar los datos en el backend.
━━━━━━━━━━━━━━━━━━
🔑 LO IMPORTANTE
🔵 El prefilling consiste en pasar {"role": "assistant", "content": "{"} en la petición para que Claude continúe directamente la estructura del JSON.
🔴 Los bloques de código markdown (json ... ) rompen el parseo directo si no se limpia la cadena antes con expresiones regulares o manipulación de strings.
🟡 Definir una Tool vacía o con esquema estricto le obliga a Claude a estructurar los parámetros como un objeto JSON sin desviaciones.
━━━━━━━━━━━━━━━━━━
🧩 MODELO MENTAL
Instrucción Esquema → Prefilling { / Tool Definition → Claude Completa JSON → Parseo Directo json.loads()
━━━━━━━━━━━━━━━━━━
🚀 ACCIONES PARA HOY
🟢 Agrega la instrucción "Responde ÚNICAMENTE con un objeto JSON válido, sin bloques de código ni texto adicional" en tu system prompt.
🟢 Implementa la técnica de prefilling añadiendo {"role": "assistant", "content": "{"} como último elemento de tu lista de mensajes.
🟢 Encierra el parseo final en un bloque try...except json.JSONDecodeError para capturar cualquier anomalía antes de consumir los datos.
━━━━━━━━━━━━━━━━━━
🟣 VENTAJA PROFESIONAL
En pipelines de producción, depender únicamente del prompt para obtener JSON causa fallos aleatorios bajo diferentes cargas o casos de borde.
🟣 Hack de ingeniería: Utiliza la definición de herramientas (Tool Use) forzando tool_choice={"type": "tool", "name": "mi_esquema_json"} para obligar a la API a responder en un esquema estructurado nativo con cero probabilidad de incluir texto extra.
━━━━━━━━━━━━━━━━━━
📝 CIERRE
Un principiante le pide a Claude "dame un JSON" y cruza los dedos para que no devuelva texto extra; un profesional usa prefilling o tool binding para forzar la estructura a nivel de API. Garantiza el 100% de parseabilidad en tus proyectos hoy mismo.