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 usi gli output strutturati, il modello restituirà un errore 400.
Modelli supportati
Per vedere quali modelli supportano gli output strutturati, vai su Modelli a colpo d'occhio e seleziona il modello che ti interessa.
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
Gli esempi seguenti 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 }