Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Obtenga resultados JSON validados de los modelos
Los resultados estructurados son una capacidad de Amazon Bedrock que garantiza que las respuestas de los modelos se ajusten a los esquemas JSON y las definiciones de herramientas definidos por el usuario, lo que reduce la necesidad de mecanismos personalizados de análisis y validación en las implementaciones de IA de producción.
Ventajas
Los resultados estructurados abordan los desafíos críticos de las aplicaciones de IA de producción:
-
Garantiza el cumplimiento del esquema: elimina las tasas de error y los ciclos de reintento propios de los enfoques basados en solicitudes
-
Menor complejidad de desarrollo: elimina la necesidad de una lógica de análisis y validación personalizada
-
Menores costos operativos: reduce las solicitudes y los reintentos fallidos
-
Fiabilidad de producción: permite un despliegue seguro de aplicaciones de IA que requieren resultados predecibles y legibles por máquina
Funcionamiento
Las salidas estructuradas limitan las respuestas del modelo para que sigan un esquema específico, lo que garantiza una salida válida y analizable para el procesamiento posterior. Puede utilizar salidas estructuradas a través de dos mecanismos complementarios:
Formato de salida del esquema JSON
Para la InvokeModel API con modelos Anthropic Claude, utilice el campo de output_config.format solicitud. En el caso de los modelos de peso abierto, utilice el campo de response_format solicitud. Para Converse APIs, usa el campo de outputConfig.textFormat solicitud. La respuesta del modelo se ajustará al esquema JSON especificado.
Uso estricto de la herramienta
Añada la strict: true marca a las definiciones de las herramientas para permitir la validación del esquema en los nombres y las entradas de las herramientas. A continuación, las llamadas a las herramientas del modelo seguirán el esquema de entrada de herramientas definido.
Estos mecanismos se pueden usar de forma independiente o juntos en la misma solicitud. Consulte la documentación de la API de Bedrock para obtener más información.
Solicite un flujo de trabajo
A continuación, se describe cómo Amazon Bedrock procesa las solicitudes con resultados estructurados:
-
Solicitud inicial: incluye un esquema JSON mediante la definición de
outputConfig.textFormatoutput_config.format, o unresponse_formatparámetro o una herramienta con lastrict: truemarca en su solicitud de inferencia. -
Validación del esquema: Amazon Bedrock valida el formato de esquema JSON con el subconjunto JSON Schema Draft 2020-12 compatible. Si el esquema contiene funciones no compatibles, Amazon Bedrock devuelve inmediatamente un error 400.
-
Compilación por primera vez: para los esquemas nuevos, Amazon Bedrock compila la gramática, lo que puede tardar unos minutos.
-
Almacenamiento en caché: las gramáticas compiladas correctamente se almacenan en caché durante 24 horas desde el primer acceso. Las gramáticas almacenadas en caché se cifran con claves administradas por AWS.
-
Solicitudes posteriores: los esquemas idénticos de la misma cuenta utilizan gramáticas en caché, lo que da como resultado una latencia de inferencia comparable a la de las solicitudes estándar con una sobrecarga mínima.
-
Respuesta: recibe respuestas de inferencia estándar con un estricto cumplimiento del esquema.
Compatible con nuestras APIs funciones
Puede utilizar salidas estructuradas en las siguientes funciones de Amazon Bedrock:
Converse y ConverseStream APIs: utilice salidas estructuradas con Converse y ConverseStream APIs para realizar inferencias conversacionales.
InvokeModel y InvokeModelWithResponseStream APIs: utilice salidas estructuradas con y para la inferencia de un solo InvokeModel giro InvokeModelWithResponseStream APIs .
Inferencia entre regiones: utilice resultados estructurados dentro de la inferencia entre regiones sin ninguna configuración adicional.
Inferencia por lotes: utilice salidas estructuradas dentro de la inferencia por lotes sin ninguna configuración adicional.
nota
Los resultados estructurados son incompatibles con las citas de los modelos antrópicos. Si habilita las citas mientras utiliza salidas estructuradas, el modelo devolverá un error de 400.
Modelos compatibles
Las salidas estructuradas están generalmente disponibles en todas las regiones comerciales de AWS para algunos modelos sin servidor de Amazon Bedrock. Para ver la lista de modelos compatibles, consulte Soporte de modelos por función.
- Anthropic
-
Claude Haiku 4.5 ()
anthropic.claude-haiku-4-5-20251001-v1:0Soneto Claude 4.5 ()
anthropic.claude-sonnet-4-5-20250929-v1:0Claudio Opus 4.5 ()
anthropic.claude-opus-4-5-20251101-v1:0Claude Opus 4.6 ()
anthropic.claude-opus-4-6-v1
- Qwen
-
Qwen3 235 B A2 B 2507 ()
qwen.qwen3-235b-a22b-2507-v1:0Qen3 32B (denso) ()
qwen.qwen3-32b-v1:0Qwen3-Coder-30B-A3B-Instruct ()
qwen.qwen3-coder-30b-a3b-v1:0Codificador Qwen3 480B A35B Instruct ()
qwen.qwen3-coder-480b-a35b-v1:0Qwen3 Next 80B A3B
qwen.qwen3-next-80b-a3b()Qwen3 VL 235B A2B ()
qwen.qwen3-vl-235b-a22b
- OpenAI
-
openai.gpt-oss-120b-1:0gpt-oss-120b ()gpt-oss-20b ()
openai.gpt-oss-20b-1:0GPT OSS Safeguard 120B ()
openai.gpt-oss-safeguard-120bGPT OSS Safeguard 20B ()
openai.gpt-oss-safeguard-20b
- DeepSeek
-
DeepSeek-V3.1 ()
deepseek.v3-v1:0
-
Gemma 3 12 B IT ()
google.gemma-3-12b-itGemma 3 27B PT ()
google.gemma-3-27b-it
- MiniMax
-
MiniMax M2 (2)
minimax.minimax-m2
- Mistral AI
-
Magistral Small 2509 ()
mistral.magistral-small-2509Ministral 3B ()
mistral.ministral-3-3b-instructMinisterial 3 (8B)
mistral.ministral-3-8b-instructMinistral 14B 3.0 ()
mistral.ministral-3-14b-instructMistral Large (3)
mistral.mistral-large-3-675b-instructVoxtral Mini 3B 2507 ()
mistral.voxtral-mini-3b-2507Voxtral Pequeño 24V 2507 ()
mistral.voxtral-small-24b-2507
- Moonshot AI
-
Kimi K2 Pensando ()
moonshot.kimi-k2-thinking
- NVIDIA
-
NVIDIA Nemotron Nano 12B v2 VL () BF16
nvidia.nemotron-nano-12b-v2NVIDIA Nemotron Nano 9B v2 ()
nvidia.nemotron-nano-9b-v2
Solicitudes de ejemplo
Formato de salida del esquema JSON
Los siguientes ejemplos muestran cómo utilizar el formato de salida del esquema JSON con salidas estructuradas.
API de Converse
{ "messages": [ { "role": "user", "content": [ { "text": "Given the following unstructured data, extract it into the provided structure." }, { "text": "..." } ] } ], "outputConfig": { "textFormat": { "type": "json_schema", "structure": { "jsonSchema": { "schema": "{\"type\": \"object\", \"properties\": {\"title\": {\"type\": \"string\", \"description\": \"title\"}, \"summary\": {\"type\": \"string\", \"description\": \"summary\"}, \"next_steps\": {\"type\": \"string\", \"description\": \"next steps\"}}, \"required\": [\"title\", \"summary\", \"next_steps\"], \"additionalProperties\": false}", "name": "data_extraction", "description": "Extract structured data from unstructured text" } } } } }
InvokeModel (Claude antrópico)
{ "anthropic_version": "bedrock-2023-05-31", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Given the following unstructured data, extract it into the provided structure." }, { "type": "text", "text": "..." } ] } ], "max_tokens": 3000, "temperature": 1.0, "output_config": { "format": { "type": "json_schema", "schema": { "type": "object", "properties": { "title": { "type": "string", "description": "title" }, "summary": { "type": "string", "description": "summary" }, "next_steps": { "type": "string", "description": "next steps" } }, "required": [ "title", "summary", "next_steps" ], "additionalProperties": false } } } }
InvokeModel (Modelos de peso abierto)
{ "messages": [ { "role": "user", "content": "Given the following unstructured data, extract it into the provided structure." }, { "role": "user", "content": "..." } ], "inferenceConfig": { "maxTokens": 3000, "temperature": 1.0 }, "response_format": { "json_schema": { "name": "summarizer", "schema": { "type": "object", "properties": { "title": { "type": "string", "description": "title" }, "summary": { "type": "string", "description": "summary" }, "next_steps": { "type": "string", "description": "next steps" } }, "required": [ "title", "summary", "next_steps" ], "additionalProperties": false } }, "type": "json_schema" } }
Uso estricto de la herramienta
Los siguientes ejemplos muestran cómo utilizar el campo estricto con el uso de herramientas.
API de Converse
{ "messages": [ { "role": "user", "content": [ { "text": "What's the weather like in New York?" } ] } ], "toolConfig": { "tools": [ { "toolSpec": { "name": "get_weather", "description": "Get the current weather for a specified location", "strict": true, "inputSchema": { "json": { "type": "object", "properties": { "location": { "type": "string", "description": "The city and state, e.g. San Francisco, CA" }, "unit": { "type": "string", "enum": [ "fahrenheit", "celsius" ], "description": "The temperature unit to use" } }, "required": [ "location", "unit" ] } } } } ] } }
InvokeModel (Claude antrópico)
{ "anthropic_version": "bedrock-2023-05-31", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "What's the weather like in San Francisco?" } ] } ], "max_tokens": 3000, "temperature": 1.0, "tools": [ { "name": "get_weather", "description": "Get the current weather for a specified location", "strict": true, "input_schema": { "type": "object", "properties": { "location": { "type": "string", "description": "The city and state, e.g. San Francisco, CA" }, "unit": { "type": "string", "enum": [ "fahrenheit", "celsius" ], "description": "The temperature unit to use" } }, "required": [ "location", "unit" ], "additionalProperties": false } } ] }
InvokeModel (Modelos de peso abierto)
{ "messages": [ { "role": "user", "content": "What's the weather like in San Francisco?" } ], "tools": [ { "type": "function", "function": { "name": "get_weather", "description": "Get the current weather for a specified location", "strict": true, "parameters": { "type": "object", "properties": { "location": { "type": "string", "description": "The city and state, e.g. San Francisco, CA" }, "unit": { "type": "string", "enum": [ "fahrenheit", "celsius" ], "description": "The temperature unit to use" } }, "required": [ "location", "unit" ] } } } ], "tool_choice": "auto", "max_tokens": 2000, "temperature": 1.0 }