Ottieni risultati JSON convalidati dai modelli - Amazon Bedrock

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Ottieni risultati JSON convalidati dai modelli

Gli output strutturati sono una funzionalità di Amazon Bedrock che garantisce che le risposte dei modelli siano conformi agli schemi JSON e alle definizioni degli strumenti definiti dall'utente, riducendo la necessità di meccanismi di analisi e convalida personalizzati nelle implementazioni AI di produzione.

Vantaggi

Gli output strutturati affrontano le sfide critiche nelle applicazioni AI di produzione:

  • Garantisce la conformità dello schema: elimina i tassi di errore e i cicli di ripetizione dei tentativi grazie agli approcci basati sui prompt

  • Riduzione della complessità dello sviluppo: elimina la necessità di una logica di analisi e convalida personalizzata

  • Riduzione dei costi operativi: riduce le richieste e i nuovi tentativi non riusciti

  • Affidabilità della produzione: consente l'implementazione sicura di applicazioni di intelligenza artificiale che richiedono output prevedibili e leggibili dalla macchina

Come funziona

Gli output strutturati vincolano le risposte del modello a seguire uno schema specifico, garantendo un output valido e analizzabile per l'elaborazione a valle. È possibile utilizzare gli output strutturati attraverso due meccanismi complementari:

Formato di output dello schema JSON

Per l' InvokeModel API con modelli Anthropic Claude, usa il output_config.format campo di richiesta. Con i modelli a peso aperto, usa il campo di response_format richiesta. Per Converse APIs, usa il campo di outputConfig.textFormat richiesta. La risposta del modello sarà conforme allo schema JSON specificato.

Uso rigoroso degli strumenti

Aggiungi il strict: true flag alle definizioni degli strumenti per abilitare la convalida dello schema sui nomi e sugli input degli strumenti. Le chiamate agli strumenti del modello seguiranno quindi lo schema di input dello strumento definito.

Questi meccanismi possono essere utilizzati indipendentemente o insieme nella stessa richiesta. Per maggiori dettagli, consulta la documentazione dell'API Bedrock.

Richiedi un flusso di lavoro

Di seguito viene descritto come Amazon Bedrock elabora le richieste con output strutturati:

  1. Richiesta iniziale: includi uno schema JSON tramite il response_format parametro outputConfig.textFormatoutput_config.format, o o una definizione di strumento con il strict: true flag nella richiesta di inferenza.

  2. Convalida dello schema: Amazon Bedrock convalida il formato dello schema JSON rispetto al sottoinsieme JSON Schema Draft 2020-12 supportato. Se lo schema contiene funzionalità non supportate, Amazon Bedrock restituisce immediatamente un errore 400.

  3. Compilazione per la prima volta: per i nuovi schemi, Amazon Bedrock compila la grammatica, operazione che può richiedere alcuni minuti.

  4. Memorizzazione nella cache: le grammatiche compilate correttamente vengono memorizzate nella cache per 24 ore dal primo accesso. Le grammatiche memorizzate nella cache sono crittografate con chiavi gestite da AWS.

  5. Richieste successive: schemi identici dello stesso account utilizzano grammatiche memorizzate nella cache, con una latenza di inferenza paragonabile a quella delle richieste standard con un sovraccarico minimo.

  6. Risposta: ricevi risposte di inferenza standard con una rigorosa conformità allo schema.

Funzionalità APIs o supportate

Puoi utilizzare output strutturati attraverso le seguenti funzionalità di Amazon Bedrock:

Converse e ConverseStream APIs: utilizza output strutturati con Converse e per l'inferenza conversazionale. ConverseStream APIs

InvokeModel e InvokeModelWithResponseStream APIs — Utilizza output strutturati con e per l'inferenza a giro singolo. InvokeModel InvokeModelWithResponseStream APIs

Inferenza tra regioni: utilizza output strutturati all'interno dell'inferenza tra regioni senza alcuna configurazione aggiuntiva.

Inferenza in batch: utilizza output strutturati all'interno dell'inferenza batch senza alcuna configurazione aggiuntiva.

Nota

Gli output strutturati sono incompatibili con le citazioni per i modelli antropici. Se abiliti le citazioni mentre utilizzi output strutturati, il modello restituirà un errore 400.

Modelli supportati

Gli output strutturati sono generalmente disponibili in tutte le regioni commerciali AWS per alcuni modelli serverless di Amazon Bedrock. Per l'elenco dei modelli supportati, consulta Supporto dei modelli per funzionalità.

Anthropic
  • Claude Haiku 4.5 () anthropic.claude-haiku-4-5-20251001-v1:0

  • Claude Sonnet 4.5 () anthropic.claude-sonnet-4-5-20250929-v1:0

  • Claude Opus 4.5 () anthropic.claude-opus-4-5-20251101-v1:0

  • Claude Opus 4.6 () anthropic.claude-opus-4-6-v1

Qwen
  • Qwen3 235 B A2B 2507 () qwen.qwen3-235b-a22b-2507-v1:0

  • Qwen3 32B (denso) () qwen.qwen3-32b-v1:0

  • qwen.qwen3-coder-30b-a3b-v1:0Qwen3-Coder-30B-A3B-Instruct ()

  • Qwen3 Coder 480B A35B Istruzioni () qwen.qwen3-coder-480b-a35b-v1:0

  • Qwen3 Next 80B A3B qwen.qwen3-next-80b-a3b ()

  • Qwen3 VL 235B A22B () qwen.qwen3-vl-235b-a22b

OpenAI
  • openai.gpt-oss-120b-1:0gpt-oss-120b ()

  • gpt-oss-20b () openai.gpt-oss-20b-1:0

  • GPT OSS Safeguard 120B () openai.gpt-oss-safeguard-120b

  • Protezione GPT OSS 20B () openai.gpt-oss-safeguard-20b

DeepSeek
  • DeepSeek-V 3.1 () deepseek.v3-v1:0

Google
  • Gemma 3 12B IT () google.gemma-3-12b-it

  • Gemma 3 27B PT () google.gemma-3-27b-it

MiniMax
  • MiniMax M2 () minimax.minimax-m2

Mistral AI
  • Magistral Small 2509 () mistral.magistral-small-2509

  • Ministry 3B () mistral.ministral-3-3b-instruct

  • Ministro 3 8B () mistral.ministral-3-8b-instruct

  • Ministry 14B 3.0 () mistral.ministral-3-14b-instruct

  • Mistral Grande (3) mistral.mistral-large-3-675b-instruct

  • Voxtral Mini 3B 2507 () mistral.voxtral-mini-3b-2507

  • Voxtral Small 24B 2507 () mistral.voxtral-small-24b-2507

Moonshot AI
  • Kimi K2 Thinking () moonshot.kimi-k2-thinking

NVIDIA
  • NVIDIA Nemotron Nano 12B v2 VL () BF16 nvidia.nemotron-nano-12b-v2

  • NVIDIA Nemotron Nano 9B v2 () nvidia.nemotron-nano-9b-v2

Richieste di esempio

Formato di output dello schema JSON

I seguenti esempi mostrano come utilizzare il formato di output JSON Schema con output strutturati.

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 antropico)

{ "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 (Modelli a peso aperto)

{ "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 rigoroso degli strumenti

I seguenti esempi mostrano come utilizzare il campo strict con l'uso degli strumenti.

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 antropico)

{ "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 (Modelli a peso aperto)

{ "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 }