As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Obtenha resultados JSON validados de modelos
As saídas estruturadas são um recurso do Amazon Bedrock que garante que as respostas do modelo estejam em conformidade com os esquemas JSON e as definições de ferramentas definidos pelo usuário, reduzindo a necessidade de mecanismos personalizados de análise e validação em implantações de IA de produção.
Benefícios
Os resultados estruturados abordam desafios críticos em aplicativos de IA de produção:
-
Garante a conformidade do esquema — elimina as taxas de erro e os ciclos de repetição a partir de abordagens baseadas em prompts
-
Complexidade de desenvolvimento reduzida — elimina a necessidade de lógica personalizada de análise e validação
-
Custos operacionais mais baixos — reduz solicitações e novas tentativas malsucedidas
-
Confiabilidade de produção — permite a implantação confiável de aplicativos de IA que exigem saídas previsíveis e legíveis por máquina
Como funciona
As saídas estruturadas restringem as respostas do modelo para que sigam um esquema específico, garantindo uma saída válida e analisável para o processamento posterior. Você pode usar saídas estruturadas por meio de dois mecanismos complementares:
Formato de saída do esquema JSON
Para InvokeModel API com modelos Anthropic Claude, use o campo de output_config.format solicitação. Com modelos de peso aberto, use o campo de response_format solicitação. Para Converse APIs, use o campo de outputConfig.textFormat solicitação. A resposta do modelo estará em conformidade com o esquema JSON especificado.
Uso estrito de ferramentas
Adicione o strict: true sinalizador às definições da ferramenta para habilitar a validação do esquema nos nomes e entradas das ferramentas. As chamadas de ferramentas do modelo seguirão então o esquema de entrada da ferramenta definido.
Esses mecanismos podem ser usados de forma independente ou em conjunto na mesma solicitação. Consulte a documentação da API Bedrock para obter mais detalhes.
Solicitar fluxo de trabalho
A seguir, descrevemos como o Amazon Bedrock processa solicitações com saídas estruturadas:
-
Solicitação inicial — Você inclui um esquema JSON por meio do
response_formatparâmetrooutputConfig.textFormatoutput_config.format, ou ou uma definição de ferramenta com ostrict: truesinalizador em sua solicitação de inferência. -
Validação do esquema — O Amazon Bedrock valida o formato do esquema JSON em relação ao subconjunto compatível do JSON Schema Draft 2020-12. Se o esquema contiver recursos não suportados, o Amazon Bedrock retornará imediatamente um erro 400.
-
Primeira compilação — Para novos esquemas, o Amazon Bedrock compila a gramática, o que pode levar alguns minutos.
-
Cache — As gramáticas compiladas com sucesso são armazenadas em cache por 24 horas a partir do primeiro acesso. As gramáticas em cache são criptografadas com chaves gerenciadas pela AWS.
-
Solicitações subsequentes — esquemas idênticos da mesma conta usam gramáticas em cache, resultando em latência de inferência comparável às solicitações padrão com sobrecarga mínima.
-
Resposta — Você recebe respostas de inferência padrão com estrita conformidade com o esquema.
Compatível APIs com nossos recursos
Você pode usar saídas estruturadas nos seguintes recursos do Amazon Bedrock:
Converse e ConverseStream APIs — Use saídas estruturadas com o Converse e ConverseStream APIs para inferência conversacional.
InvokeModel e InvokeModelWithResponseStream APIs — Use saídas estruturadas com InvokeModel e InvokeModelWithResponseStream APIs para inferência de turno único.
Inferência entre regiões — Use saídas estruturadas na inferência entre regiões sem nenhuma configuração adicional.
Inferência em lote — Use saídas estruturadas na inferência em lote sem nenhuma configuração adicional.
nota
Os resultados estruturados são incompatíveis com as citações de modelos antrópicos. Se você ativar as citações ao usar saídas estruturadas, o modelo retornará um erro 400.
Modelos compatíveis
As saídas estruturadas geralmente estão disponíveis em todas as regiões comerciais da AWS para os modelos sem servidor selecionados do Amazon Bedrock. Para ver a lista de modelos compatíveis, consulte Suporte de modelo por recurso.
- Anthropic
-
Claude Haicai 4.5 ()
anthropic.claude-haiku-4-5-20251001-v1:0Claude Sonnet 4.5 ()
anthropic.claude-sonnet-4-5-20250929-v1:0Claude Opus 4.5 ()
anthropic.claude-opus-4-5-20251101-v1:0Claude Opus 4.6 ()
anthropic.claude-opus-4-6-v1
- Qwen
-
Qen3 235B A2B 2507 ()
qwen.qwen3-235b-a22b-2507-v1:0Qwen3 32B (denso) ()
qwen.qwen3-32b-v1:0Instrução do codificador Qwen3-30B-A3B ()
qwen.qwen3-coder-30b-a3b-v1:0Instrução do codificador Qwen3 480B A35B ()
qwen.qwen3-coder-480b-a35b-v1:0Qwen3 Next 80B A3B ()
qwen.qwen3-next-80b-a3bQwen3 VL 235B A2B (2)
qwen.qwen3-vl-235b-a22b
- OpenAI
-
gpt-oss-120b ()
openai.gpt-oss-120b-1:0gpt-oss-20b ()
openai.gpt-oss-20b-1:0GPT OSS Safeguard 120B ()
openai.gpt-oss-safeguard-120bProteção GPT OSS 20B ()
openai.gpt-oss-safeguard-20b
- DeepSeek
-
DeepSeek-V3.1 ()
deepseek.v3-v1:0
-
Gemma 3 12B IT ()
google.gemma-3-12b-itGemma 3 27B PT (1)
google.gemma-3-27b-it
- MiniMax
-
MiniMax M2 (
minimax.minimax-m2)
- Mistral AI
-
Magistral Small 2509 (2)
mistral.magistral-small-2509Ministerial (3)
mistral.ministral-3-3b-instructMinisterial 3 (8B)
mistral.ministral-3-8b-instructMinistral 14B 3.0 (3)
mistral.ministral-3-14b-instructMistral Grande (3)
mistral.mistral-large-3-675b-instructVoxtral Mini 3B 2507 ()
mistral.voxtral-mini-3b-2507Voxtral Small 24B 2507 ()
mistral.voxtral-small-24b-2507
- IA do Moonshot
-
Kimi K2 Pensando ()
moonshot.kimi-k2-thinking
- NVIDIA
-
NVIDIA Nemotron Nano 12 GB v2 VL () BF16
nvidia.nemotron-nano-12b-v2NVIDIA Nemotron Nano 9B v2 ()
nvidia.nemotron-nano-9b-v2
Exemplo de solicitações
Formato de saída do esquema JSON
Os exemplos a seguir mostram como usar o formato de saída do esquema JSON com saídas estruturadas.
API 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 aberto)
{ "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 estrito de ferramentas
Os exemplos a seguir mostram como usar o campo estrito com o uso de ferramentas.
API 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 aberto)
{ "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 }