¿Por qué salidas estructuradas?
Los agentes devuelven texto de forma libre de forma predeterminada, lo que funciona para chat pero no cuando necesita usar la salida mediante programación. Las salidas estructuradas le proporcionan datos tipados que puede pasar directamente a su lógica de aplicación, base de datos o componentes de interfaz de usuario. Considere una aplicación de recetas donde un agente busca en la web y trae recetas. Sin salidas estructuradas, obtiene texto de forma libre que tendría que analizar usted mismo. Con salidas estructuradas, define la forma que desea y obtiene datos tipados que puede usar directamente en su aplicación.Sin salidas estructuradas
Sin salidas estructuradas
Con salidas estructuradas
Con salidas estructuradas
Inicio rápido
Para usar salidas estructuradas, defina un JSON Schema que describa la forma de los datos que desea, luego páselo aquery() a través de la opción outputFormat (TypeScript) u opción output_format (Python). Cuando el agente termina, el mensaje de resultado incluye un campo structured_output con datos validados que coinciden con su esquema.
El ejemplo a continuación le pide al agente que investigue Anthropic y devuelva el nombre de la empresa, año de fundación y sede como salida estructurada.
Esquemas seguros en tipos con Zod y Pydantic
En lugar de escribir JSON Schema a mano, puede usar Zod (TypeScript) o Pydantic (Python) para definir su esquema. Estas bibliotecas generan el JSON Schema para usted y le permiten analizar la respuesta en un objeto completamente tipado que puede usar en todo su código con autocompletado y verificación de tipos. El ejemplo a continuación define un esquema para un plan de implementación de características con un resumen, lista de pasos (cada uno con nivel de complejidad) y riesgos potenciales. El agente planifica la característica y devuelve un objetoFeaturePlan tipado. Luego puede acceder a propiedades como plan.summary e iterar sobre plan.steps con seguridad de tipos completa.
- Inferencia de tipos completa (TypeScript) e indicaciones de tipos (Python)
- Validación en tiempo de ejecución con
safeParse()omodel_validate() - Mejores mensajes de error
- Esquemas componibles y reutilizables
Configuración del formato de salida
La opciónoutputFormat (TypeScript) u output_format (Python) acepta un objeto con:
type: Establezca en"json_schema"para salidas estructuradasschema: Un objeto JSON Schema que define su estructura de salida. Puede generar esto a partir de un esquema Zod conz.toJSONSchema()o un modelo Pydantic con.model_json_schema()
enum, const, required, objetos anidados y definiciones $ref. Para la lista completa de características admitidas y limitaciones, consulte Limitaciones de JSON Schema.
Ejemplo: Agente de seguimiento de TODO
Este ejemplo demuestra cómo funcionan las salidas estructuradas con el uso de herramientas de múltiples pasos. El agente necesita encontrar comentarios TODO en la base de código, luego buscar información de git blame para cada uno. Decide autónomamente qué herramientas usar (Grep para buscar, Bash para ejecutar comandos git) y combina los resultados en una única respuesta estructurada. El esquema incluye campos opcionales (author y date) ya que la información de git blame podría no estar disponible para todos los archivos. El agente completa lo que puede encontrar y omite el resto.
Manejo de errores
La generación de salida estructurada puede fallar cuando el agente no puede producir JSON válido que coincida con su esquema. Esto típicamente sucede cuando el esquema es demasiado complejo para la tarea, la tarea en sí es ambigua, o el agente alcanza su límite de reintentos intentando corregir errores de validación. Cuando ocurre un error, el mensaje de resultado tiene unsubtype que indica qué salió mal:
| Subtype | Significado |
|---|---|
success | La salida fue generada y validada exitosamente |
error_max_structured_output_retries | El agente no pudo producir salida válida después de múltiples intentos |
subtype para determinar si la salida fue generada exitosamente o si necesita manejar una falla:
- Mantenga esquemas enfocados. Los esquemas profundamente anidados con muchos campos requeridos son más difíciles de satisfacer. Comience simple y agregue complejidad según sea necesario.
- Haga coincidir el esquema con la tarea. Si la tarea podría no tener toda la información que su esquema requiere, haga esos campos opcionales.
- Use solicitudes claras. Las solicitudes ambiguas hacen que sea más difícil para el agente saber qué salida producir.
Recursos relacionados
- Documentación de JSON Schema: aprenda la sintaxis de JSON Schema para definir esquemas complejos con objetos anidados, matrices, enumeraciones y restricciones de validación
- API Structured Outputs: use salidas estructuradas con la API de Claude directamente para solicitudes de un solo turno sin uso de herramientas
- Custom tools: proporcione a su agente herramientas personalizadas para llamar durante la ejecución antes de devolver salida estructurada