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 APIs Converse, 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 permitir 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.
-
First-time 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 AWS-managed chaves.
-
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.
Recursos do esquema JSON compatíveis
Os seguintes recursos do JSON Schema Draft 2020-12 são compatíveis:
Todos os tipos básicos:
object,array,string,integer,number,boolean,nullenum(somente cadeias de caracteres, números, booleanos ou nulos)const,anyOf,allOf(com limitações)$ref,$def, edefinitions(somente referências internas)Formatos de seqüência de caracteres:
date-timetimedateduration,email,hostname,uri,,ipv4,ipv6,uuidMatriz
minItems(somente valores 0 e 1)
Os seguintes recursos não são suportados:
Esquemas recursivos
$refReferências externasRestrições numéricas (,,)
minimummaximummultipleOfRestrições de string (,)
minLengthmaxLengthadditionalPropertiesdefinido para qualquer coisa diferente defalse
APIs ou recursos compatíveis
Você pode usar saídas estruturadas nos seguintes recursos do Amazon Bedrock:
Converse e ConverseStream APIs — Use saídas estruturadas com o Converse e as ConverseStream APIs para inferência conversacional.
InvokeModel e InvokeModelWithResponseStream APIs — Use saídas estruturadas com as InvokeModelWithResponseStream APIs InvokeModel e para inferência de turno único.
Cross-Region inferência — 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.
API de mensagens antrópicas no bedrock-mantle endpoint — saídas estruturadas não são suportadas no caminho da API de Anthropic-style mensagens (). https://bedrock-mantle.{region}.api.aws/anthropic/v1/messages O output_config.format parâmetro é rejeitado com um erro 400. Para usar saídas estruturadas com Anthropic Claude modelos, envie a solicitação por meio da API Converse ou da InvokeModel API no bedrock-runtime endpoint.
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
Para ver quais modelos oferecem suporte a saídas estruturadas, acesse os modelos em um piscar de olhos e selecione o modelo em que você está interessado.
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 (Open-weight modelos)
{ "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 (Open-weight modelos)
{ "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 }