Cuando necesitas que Claude genere datos estructurados como JSON, código Python o listas con viñetas, a menudo te encontrarás con un problema común: Claude quiere ser útil y agregar texto explicativo, encabezados o formato markdown alrededor de tu contenido. Este comentario adicional rompe la experiencia del usuario cuando solo necesitas los datos en bruto.

Considera construir una aplicación web que genere reglas de AWS EventBridge. Los usuarios ingresan una descripción, hacen clic en generar, y esperan ver JSON limpio que puedan copiar y usar de inmediato. Si Claude devuelve el JSON envuelto en bloques de código markdown con texto explicativo, los usuarios no pueden simplemente copiar toda la respuesta; tienen que seleccionar manualmente solo la parte del JSON.
El problema con las respuestas predeterminadas
Por defecto, Claude tiende a formatear la salida estructurada así:
# EventBridge Rule
```json
\{
"source": ["aws.ec2"],
"detail-type": ["EC2 Instance State-change Notification"],
"detail": \{"state": ["running"]\}
\}
```
This rule captures EC2 instance state changes when instances start running or stop.Si bien esto es excelente para la documentación, es problemático cuando solo necesitas el JSON para uso programático.
La solución: Prellenado de mensajes del asistente + secuencias de parada
Puedes combinar el prellenado de mensajes del asistente con secuencias de parada para obtener exactamente el contenido que deseas. Así es como funciona:
messages = []
add_user_message(messages, "Generate a very short event bridge rule as json")
add_assistant_message(messages, "```json")
text = chat(messages, stop_sequences=["```"])Esta técnica funciona de la siguiente manera:
- Prellenar el mensaje del asistente con el delimitador de apertura de markdown
- Establecer una secuencia de parada para detener la generación cuando Claude intente cerrar el bloque de código
- Capturar solo el contenido entre estos delimitadores

Cómo funciona detrás de escena
Cuando Claude recibe tu solicitud, ve el mensaje del asistente prellenado y asume que ya comenzó a escribir el bloque de código JSON. En lugar de agregar su propio encabezado y delimitador de apertura, Claude pasa directamente a generar el contenido JSON real.
Cuando Claude termina el JSON y naturalmente quiere cerrar el bloque de código markdown con ```, la secuencia de parada detiene inmediatamente la generación y devuelve la respuesta. Obtienes solo el contenido JSON sin formato adicional.
Procesamiento de los resultados
El texto devuelto podría contener algunos caracteres de nueva línea, pero puedes limpiar esto fácilmente:
import json
# Analizar como JSON para validar y formatear
parsed_data = json.loads(text.strip())
# O simplemente eliminar espacios en blanco para otros tipos de datos
clean_text = text.strip()Más allá de JSON
Esta técnica no se limita a la generación de JSON. Puedes usarla para cualquier dato estructurado donde quieras solo el contenido sin la tendencia natural de Claude a agregar texto explicativo:
- Fragmentos de código Python
- Listas con viñetas
- Datos CSV
- Archivos de configuración
- Cualquier formato donde importe una salida limpia y copiable
La clave está en identificar qué delimitadores usaría Claude naturalmente alrededor de tu tipo de contenido, luego prellenar el delimitador de apertura y detenerse en el de cierre. Esto te da un control preciso sobre el formato de salida mientras aprovechas los instintos naturales de formato de Claude.