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:
-
Richiesta iniziale: includi uno schema JSON tramite il
response_formatparametrooutputConfig.textFormatoutput_config.format, o o una definizione di strumento con ilstrict: trueflag nella richiesta di inferenza. -
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.
-
Compilazione per la prima volta: per i nuovi schemi, Amazon Bedrock compila la grammatica, operazione che può richiedere alcuni minuti.
-
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.
-
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.
-
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: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
-
Qwen3 235 B A2B 2507 ()
qwen.qwen3-235b-a22b-2507-v1:0Qwen3 32B (denso) ()
qwen.qwen3-32b-v1:0qwen.qwen3-coder-30b-a3b-v1:0Qwen3-Coder-30B-A3B-Instruct ()Qwen3 Coder 480B A35B Istruzioni ()
qwen.qwen3-coder-480b-a35b-v1:0Qwen3 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:0GPT OSS Safeguard 120B ()
openai.gpt-oss-safeguard-120bProtezione GPT OSS 20B ()
openai.gpt-oss-safeguard-20b
- DeepSeek
-
DeepSeek-V 3.1 ()
deepseek.v3-v1:0
-
Gemma 3 12B IT ()
google.gemma-3-12b-itGemma 3 27B PT ()
google.gemma-3-27b-it
- MiniMax
-
MiniMax M2 ()
minimax.minimax-m2
- Mistral AI
-
Magistral Small 2509 ()
mistral.magistral-small-2509Ministry 3B ()
mistral.ministral-3-3b-instructMinistro 3 8B ()
mistral.ministral-3-8b-instructMinistry 14B 3.0 ()
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
- Moonshot AI
-
Kimi K2 Thinking ()
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
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 }