Al realizar tareas de extracción de información o generación de datos estructurados, un modelo puede devolver texto adicional (como ```json ) que interrumpe el análisis posterior. Habilitar la salida estructurada garantiza que el modelo devuelva una cadena JSON válida. El modo JSON Schema también le permite un control preciso sobre la estructura y los tipos de salida, lo que elimina la necesidad de validaciones o reintentos adicionales.
Uso
La salida estructurada admite dos modos: JSON Object y JSON Schema.
-
Modo JSON Object: Garantiza que la salida sea una cadena JSON válida, pero no asegura una estructura específica. Uso:
- Establezca el parámetro
response_format: En el cuerpo de la solicitud, establezcaresponse_formaten{"type": "json_object"}. - Incluya la palabra clave JSON en su indicación: El mensaje del sistema o del usuario debe contener la palabra "JSON" (sin distinción entre mayúsculas y minúsculas); de lo contrario, la API devuelve:
'messages' must contain the word 'json' in some form, to use 'response_format' of type 'json_object'.
- Establezca el parámetro
-
Modo JSON Schema: Asegura que la salida cumpla con una estructura especificada. Uso: establezca
response_formaten{"type": "json_schema", "json_schema": {..., "strict": true}}.No se requiere la palabra clave JSON en el prompt.
Los parámetros anteriores se aplican a la API Chat Completions. Si utiliza la API Responses, configure text.format en su lugar; el formato del valor es el mismo. Consulte los ejemplos a continuación. En el modo JSON Object, la API Responses también exige que el prompt contenga la palabra "JSON"; de lo contrario, se devuelve un error 400.
Comparación de características:
Función | Modo JSON Object | Modo JSON Schema |
|---|---|---|
Genera JSON válido | Sí | Sí |
Sigue estrictamente el esquema | No | Sí |
Modelos compatibles | La mayoría de los modelos Qwen | Solo modelos qwen-plus seleccionados |
Configuración de |
|
|
Requisito del prompt | Debe incluir "JSON" | Se recomienda describir explícitamente |
Caso de uso | Salida JSON flexible | Validación precisa del esquema |
Modelos admitidos
- JSON Object
- JSON Schema
- Qwen
- Kimi
- GLM
- DeepSeek
-
Modelos de generación de texto
- Qwen-Max: qwen4-max-preview (solo Token Plan), serie Qwen3.8-Max, serie Qwen3.7-Max
- Qwen-Max (modo sin pensamiento): serie Qwen3.6-Max, serie Qwen3-Max, serie Qwen-Max
- Qwen-Plus: serie Qwen3.7-Plus
- Qwen-Plus (modo sin pensamiento): serie Qwen3.6-Plus, serie Qwen3.5-Plus, serie Qwen-Plus
- Qwen-Flash: serie Qwen3.8-Flash, serie Qwen3.7-Flash
- Qwen-Flash (modo sin pensamiento): serie Qwen3.6-Flash, serie Qwen3.5-Flash, serie Qwen-Flash
- Qwen-Turbo (modo sin razonamiento): serie Qwen-Turbo
- Qwen-Coder: serie Qwen3-Coder
- Qwen-Long: serie Qwen-Long
- Serie de código abierto Qwen3.8
- Serie de código abierto Qwen3.6 (modo sin razonamiento)
- Serie de código abierto Qwen3.5 (modo sin razonamiento)
- Serie de código abierto Qwen3 (modo sin razonamiento)
- Serie de código abierto Qwen3-Coder
- Serie de código abierto Qwen2.5 (excluyendo modelos de matemáticas y codificación)
-
Modelos multimodales
- Qwen-VL (modo sin pensamiento): serie Qwen3-VL-Plus, serie Qwen3-VL-Flash, serie Qwen-VL-Max (excluyendo las versiones más recientes y las instantáneas), serie Qwen-VL-Plus (excluyendo las versiones más recientes y las instantáneas)
- Qwen-Omni: series Qwen3.8-Omni-Flash, Qwen3.5-Omni-Plus
- Serie de código abierto Qwen3-VL (modo sin razonamiento)
Introducción
Este ejemplo extrae información estructurada de un perfil personal.
El modo JSON Object no garantiza nombres de clave ni tipos de campo estables. Los resultados pueden variar entre diferentes indicaciones o llamadas. Para imponer una estructura fija, utilice el modo JSON Schema.Obtenga una clave de API y exporte la clave de API como variable de entorno. Si utiliza el SDK de OpenAI o el SDK de DashScope para realizar llamadas, instale el SDK.
- API Chat Completions compatible con OpenAI
- API de Responses compatible con OpenAI
- DashScope
- Python
- Node.js
- curl
Respuesta
Procesamiento de datos de imagen y video
Los modelos multimodales también admiten salida estructurada para imágenes y videos. Utilice el modo JSON para extraer datos estructurados de contenido visual, como valores de campos de recibos, ubicaciones de objetos en imágenes o eventos en video.
Para conocer los límites de archivos de imagen y video, consulte Comprensión de imágenes y videos .
- Compatible con OpenAI
- DashScope
- Python
- Node.js
- curl
Respuesta
Optimizar prompts
Indicaciones ambiguas como "devolver información del usuario" conducen a estructuras de salida impredecibles. Para obtener resultados confiables, describa el esquema esperado en su indicación: especifique nombres de campos, tipos, estado obligatorio u opcional, restricciones de formato (como el formato de fecha) e incluya ejemplos.
- Compatible con OpenAI
- DashScope
- Python
- Node.js
Respuesta
Obtención de salida estructurada
Establecer response_format type en json_object devuelve una cadena JSON válida, pero es posible que la estructura no coincida con sus expectativas; adecuado para escenarios simples. Para el análisis automatizado, la interoperabilidad de API y otros escenarios complejos que requieren restricciones de tipo estrictas, establezca type en json_schema para forzar al modelo a generar contenido que se ajuste estrictamente a un formato especificado. El formato de response_format y ejemplo:
json_schema y recurrirán automáticamente a json_object; las restricciones del esquema no surtirán efecto.name y age) y un campo opcional email.
Los modelos de la región de Singapore aún no son compatibles.
Cómo usar
Con el método parse del SDK de OpenAI, puede pasar directamente una clase Pydantic de Python o un objeto Zod de Node.js. El SDK lo convierte automáticamente a un JSON Schema, sin necesidad de escribir JSON complejo manualmente. Para el SDK de DashScope, construya el JSON Schema manualmente siguiendo el formato anterior.
- API Chat Completions compatible con OpenAI
- API de Responses compatible con OpenAI
- DashScope
Python
Node.js
Guía de configuración
Siga estas directrices al utilizar JSON Schema para obtener una salida estructurada más confiable:
-
Declaración de campos obligatorios
Se recomienda listar los campos obligatorios en el arreglo
required. Los campos opcionales pueden omitirse, por ejemplo:
-
Implementación de campos opcionales
Además de omitirlo de
required, también puede permitir el tiponull:
email, pero su valor puede ser null.
- Configuración de additionalProperties Controla si se permiten campos adicionales no definidos en el esquema:
"I'm Zhang San, 25 years old"; salida: {"name": "Zhang San", "age": 25} (incluye el campo age no definido).
Valor | Comportamiento | Caso de uso |
|---|---|---|
| Solo generar campos definidos | Control preciso de la estructura |
| Permitir campos adicionales | Capturar más información |
-
Palabras clave de JSON Schema admitidas
A continuación se listan las palabras clave admitidas por el modo JSON Schema (modo estricto). Las palabras clave marcadas como "no admitidas" devuelven un error 400 al enviarse. Para consultar las definiciones completas de las palabras clave, véase la especificación de JSON Schema.
Palabras clave comunes a nivel de esquema
Palabras clave específicas de tipoPalabra clave
Descripción
typeAdmite
string,number,integer,boolean,null,array,object; también se admiten tipos de unión como["string", "null"]enum/constenumrestringe el valor a un conjunto de valores permitidos;constlo restringe a un único valor fijo$defs+$refSe admiten referencias locales (por ejemplo,
#/$defs/address); las referencias URL externas no causan errores, pero no tienen efectoanyOf/oneOf/allOf/notSe admiten restricciones de composición y condicionales. Tenga en cuenta que
oneOfno garantiza estrictamente la semántica de exactamente unoif/then/elseSe admiten esquemas condicionales, lo que permite reglas de validación dinámicas basadas en valores de campo
title/description/default/examplesAceptados como sugerencias semánticas para el modelo; no se aplican como restricciones estrictas
$schema/$id/$commentIdentificadores de metadatos; aceptados sin afectar el comportamiento de validación
deprecated/readOnly/writeOnlyPalabras clave de anotación; aceptadas sin afectar el comportamiento de validación
Tipo
Palabras clave admitidas
Palabras clave no admitidas (error 400)
stringminLength,maxLength,pattern,format(por ejemplo,email,date),contentMediaType,contentEncoding-
number/integerminimum,maximum,exclusiveMinimum,exclusiveMaximummultipleOfarrayitems,prefixItems(modo tupla),minItems,maxItems,unevaluatedItemsuniqueItems,contains,minContains,maxContains,additionalItemsobjectproperties,required,additionalProperties,minProperties,maxProperties,dependentRequired,dependentSchemas,unevaluatedPropertiespatternProperties,propertyNames
Puesta en marcha
- Validar antes de pasar a procesos posteriores Al utilizar el modo JSON Object, valide la salida antes de pasarla a servicios posteriores. Utilice una biblioteca como jsonschema (Python), Ajv (JavaScript) o Everit (Java) para asegurarse de que cumple con el JSON Schema esperado, evitando fallos de análisis posteriores, pérdida de datos o interrupciones en la lógica de negocio debido a campos faltantes, errores de tipo o formatos mal formados. En caso de fallo, reintente la solicitud o utilice un modelo para reescribir la salida.
-
No configure max_tokens
No configure
max_tokenscuando la salida estructurada esté habilitada. Este parámetro limita el número de tokens de salida y su valor predeterminado es el máximo del modelo. Configurarlo puede truncar la cadena JSON a mitad de la generación, produciendo un JSON no válido que falla al analizarse. -
Utilizar el SDK para generar esquemas
Utilice el SDK para generar esquemas automáticamente. Esto evita errores derivados del mantenimiento manual y proporciona validación y análisis automáticos.
Python