Salida estructurada
- Explicar por qué la salida impuesta por esquema gana al prompting de JSON con la esperanza de que salga bien
- Proporcionar un JSON Schema y parsear la respuesta en un objeto tipado (Pydantic / Zod)
- Distinguir la salida estructurada del uso de herramientas por su intención, no por su mecanismo
- Aplicar los cuatro consejos para esquemas ajustados y fiables
- Elegir la herramienta correcta con una regla práctica de una sola pregunta
Cuando la salida de Claude alimenta a otro software, necesitas una estructura fiable: JSON válido que coincida con una forma conocida, siempre. No te fíes de "responde en JSON" y esperes lo mejor; usa el soporte de salida estructurada de la plataforma.
Esta lección te lleva desde por qué falla el "pide y reza" hasta cómo imponer un esquema y parsearlo en un objeto tipado, y cómo distinguir la salida estructurada del uso de herramientas cuando parecen idénticos. Trabájala de arriba abajo y luego ponte a prueba con el cuestionario que hay cerca del final.
La forma fiable
Proporciona un JSON Schema para la salida y deja que la API/SDK lo imponga, luego parséalo en un objeto tipado (p. ej., Pydantic en Python, Zod en TypeScript). Los ayudantes de parseo del SDK te entregan un resultado tipado en lugar de una cadena que tengas que pasar por JSON.parse y validar tú mismo.
- Modela la salida que necesitas como un JSON Schema: en Python mediante un BaseModel de Pydantic, en TypeScript mediante un esquema de Zod.
- Pide al modelo que devuelva datos que se ajusten a ese esquema, para que la API/SDK lo imponga en lugar de dejarlo al azar.
- Usa los ayudantes de parseo del SDK para obtener un resultado tipado directamente: sin JSON.parse manual ni validación hecha a mano.
# Conceptual shape — see the official docs for the current API surface.
from pydantic import BaseModel
class Ticket(BaseModel):
title: str
priority: str # "low" | "medium" | "high"
tags: list[str]
# Request the model to return data conforming to Ticket's JSON schema,
# then parse the response into a Ticket instance.
¿Quieres una solicitud concreta para adaptar? Aquí tienes la forma de lo que entregas al modelo: reemplaza el modelo por tu propio esquema.
Pide una salida que cumpla el esquema
Return the data conforming to this JSON Schema:
{
"title": "string",
"priority": "low | medium | high",
"tags": ["string"]
}
Do not include any prose outside the JSON.¿Por qué no pedir JSON directamente en el prompt?
Puedes pedir JSON en el prompt, y para casos simples funciona, pero puede desviarse: prosa extraviada, una coma final, un campo faltante. La salida impuesta por esquema elimina esa clase de error, lo que importa en cuanto un sistema posterior depende de ella.
- El JSON pedido por prompt funciona en demos y se rompe en producción: el fallo aparece solo cuando un sistema posterior lo parsea.
- Tres desviaciones clásicas que vigilar: prosa extraviada alrededor del JSON, una coma final y un campo obligatorio faltante.
Salida estructurada vs. uso de herramientas
Ambas funciones entregan al modelo un JSON Schema, así que se parecen — y la gente elige la equivocada. La diferencia es de intención, no de mecanismo:
| Salida estructurada | Uso de herramientas | |
|---|---|---|
| Qué quieres | La respuesta final, en una forma fija | Que el modelo invoque una capacidad (llamar a una función, obtener datos, realizar una acción) |
| Quién la consume | Tu código, directamente | Tu código ejecuta la herramienta y luego devuelve el resultado al modelo |
| Forma del turno | Una respuesta, listo | Un bucle: el modelo pide, tú ejecutas, el modelo continúa |
| Uso típico | Extracción, clasificación, parseo | Agentes, búsquedas en vivo, efectos secundarios |
Una regla rápida:
Si el JSON es el entregable, usa salida estructurada. Si el JSON es el modelo pidiendo a tu código que haga algo, eso es uso de herramientas. Los agentes a menudo usan ambos: herramientas para actuar, salida estructurada para devolver un resultado final limpio.
Consejos
- Mantén los esquemas ajustados: usa enums para opciones fijas; marca los campos obligatorios.
- Describe los campos: las descripciones de campos guían al modelo como minipromts.
- Valida de todos modos en la frontera: el parseo defensivo es un seguro barato.
- Para tareas de extracción, la salida estructurada + un esquema claro gana al formato libre siempre.
- Entrega a la API/SDK un JSON Schema y parsea en un objeto tipado: no 'pidas y reces'.
- Pedir JSON por prompt puede desviarse (prosa extraviada, coma final, campo faltante); la imposición de esquema elimina esa clase de error.
- La salida estructurada y el uso de herramientas difieren por intención: el JSON ES la respuesta vs. el JSON solicita una acción.
- Esquemas ajustados, campos descritos y validación en la frontera hacen fiables la extracción y la clasificación.
Fija los términos
Ponte a prueba
0/4Siguiente
- Uso de herramientas / Llamada a funciones — las herramientas también usan esquemas JSON
- Tu primera llamada a la API
- Plantillas de prompts reutilizables