

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
<a name="structured-output"></a>

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
<a name="structured-output-benefits"></a>

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
<a name="structured-output-how-it-works"></a>

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
<a name="structured-output-json-schema"></a>

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
<a name="structured-output-strict-tool-use"></a>

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](https://docs.aws.amazon.com/bedrock/latest/APIReference/welcome.html).

### Richiedi un flusso di lavoro
<a name="structured-output-request-workflow"></a>

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.textFormat``output_config.format`, o o una definizione di strumento con il `strict: true` flag nella richiesta di inferenza.

1. **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.

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

1. **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.

1. **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.

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

## Funzionalità APIs o supportate
<a name="structured-output-supported-apis"></a>

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
<a name="structured-output-supported-models"></a>

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à.

### Visualizza tutti i modelli supportati
<a name="w2aac13c32c35c11b5b1"></a>

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:0`Qwen3-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:0`gpt-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
<a name="structured-output-examples"></a>

### Formato di output dello schema JSON
<a name="structured-output-json-schema-examples"></a>

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

#### API Converse
<a name="json-schema-converse"></a>

##### Visualizza l'esempio
<a name="w2aac13c32c35c13b3b5b3b1"></a>

```
{
  "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)
<a name="json-schema-invokemodel-claude"></a>

##### Visualizza l'esempio
<a name="w2aac13c32c35c13b3b7b3b1"></a>

```
{
  "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)
<a name="json-schema-invokemodel-openweight"></a>

##### Visualizza l'esempio
<a name="w2aac13c32c35c13b3b9b3b1"></a>

```
{
  "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
<a name="structured-output-strict-tool-examples"></a>

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

#### API Converse
<a name="strict-tool-converse"></a>

##### Visualizza l'esempio
<a name="w2aac13c32c35c13b5b5b3b1"></a>

```
{
  "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)
<a name="strict-tool-invokemodel-claude"></a>

##### Visualizza l'esempio
<a name="w2aac13c32c35c13b5b7b3b1"></a>

```
{
  "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)
<a name="strict-tool-invokemodel-openweight"></a>

##### Visualizza l'esempio
<a name="w2aac13c32c35c13b5b9b3b1"></a>

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