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à.
Utilizzo dell’API Converse
Per utilizzare l’API Converse, vengono chiamate le operazioni Converse o ConverseStream per inviare messaggi a un modello. Per chiamare Converse, è richiesta l’autorizzazione per l’operazione bedrock:InvokeModel. Per chiamare ConverseStream, è richiesta l’autorizzazione per l’operazione bedrock:InvokeModelWithResponseStream.
Richiesta
Quando si effettua una richiesta Converse con un endpoint di runtime Amazon Bedrock, è possibile includere i seguenti campi:
-
modelId: parametro obbligatorio nell’intestazione che consente di specificare la risorsa da utilizzare per l’inferenza.
-
I seguenti campi consentono di personalizzare il prompt:
-
messages: consente di specificare il contenuto e il ruolo dei prompt.
-
system: consente di specificare i prompt di sistema che definiscono le istruzioni o il contesto per il modello.
-
inferenceConfig: consente di specificare i parametri di inferenza comuni a tutti i modelli. Parametri di inferenza che influenzano la generazione della risposta.
-
additionalModelRequestCampi: da utilizzare per specificare i parametri di inferenza specifici del modello con cui si esegue l'inferenza.
-
promptVariables (se si utilizza un prompt di Gestione prompt): consente di definire le variabili da usare nel prompt e i valori da assegnarvi.
-
-
I seguenti campi consentono di personalizzare la modalità di restituzione della risposta:
-
guardrailConfig: consente di includere un guardrail da applicare all’intero prompt.
-
toolConfig: consente di includere uno strumento che aiuti un modello a generare risposte.
-
additionalModelResponseFieldPaths— Utilizzate questo campo per specificare i campi da restituire come oggetto puntatore JSON.
-
ServiceTier: utilizzare questo campo per specificare il livello di servizio per una particolare richiesta
-
-
requestMetadata: consente di includere metadati che si possono filtrare quando si utilizzano log di invocazione.
Nota
Le seguenti restrizioni si applicano quando si utilizza un prompt di Gestione prompt con Converse o ConverseStream:
-
Non è possibile includere i campi
additionalModelRequestFields,inferenceConfig,systemotoolConfig. -
Se si include il campo
messages, i messaggi vengono aggiunti dopo i messaggi definiti nel prompt. -
Se si include il campo
guardrailConfig, il guardrail viene applicato all’intero prompt. Se includiguardContentblocchi nel ContentBlockcampo, il guardrail verrà applicato solo a quei blocchi.
Per ulteriori informazioni su una campo nel corpo della richiesta Converse, espandi la sezione corrispondente:
Il campo messages è un array di oggetti Message, ciascuno dei quali definisce un messaggio tra l’utente e il modello. Un oggetto Message contiene i campi seguenti:
-
role: definisce se il messaggio proviene da
user(prompt inviato al modello) oassistant(risposta del modello). -
content: definisce il contenuto del prompt.
Nota
Amazon Bedrock non archivia testo, immagini o documenti forniti dall’utente come contenuto. I dati vengono utilizzati solo per generare la risposta.
È possibile mantenere il contesto della conversazione includendone tutti i messaggi nelle richieste Converse successive e utilizzando il campo role per specificare se il messaggio proviene dall’utente o dal modello.
Il content campo è mappato su una serie di ContentBlockoggetti. All'interno di ciascuno ContentBlock, puoi specificare uno dei seguenti campi (per vedere quali modelli supportano quali blocchi, vediModelli e funzionalità del modello supportati):
Nota
Le seguenti restrizioni riguardano il campo content:
-
Puoi includere fino a 20 immagini. Le dimensioni, l’altezza e la larghezza di ciascuna immagine non devono superare rispettivamente 3,75 MB, 8.000 px e 8.000 px.
-
Puoi includere fino a 5 documenti. Le dimensioni di ogni documento non devono superare i 4,5 MB.
-
Puoi includere immagini e documenti solo se
roleè impostato suuser.
Nell’esempio messages seguente, l’utente richiede un elenco di tre brani pop e il modello genera un elenco di brani.
[ { "role": "user", "content": [ { "text": "Create a list of 3 pop songs." } ] }, { "role": "assistant", "content": [ { "text": "Here is a list of 3 pop songs by artists from the United Kingdom:\n\n1. \"As It Was\" by Harry Styles\n2. \"Easy On Me\" by Adele\n3. \"Unholy\" by Sam Smith and Kim Petras" } ] } ]
Un prompt di sistema è un tipo di prompt che fornisce istruzioni o contesto al modello sull’attività che deve eseguire o sulla persona che dovrebbe adottare durante la conversazione. È possibile specificare un elenco di prompt di sistema per la richiesta nel campo system (SystemContentBlock), come illustrato nell'esempio seguente.
[ { "text": "You are an app that creates play lists for a radio station that plays rock and pop music. Only return song names and the artist. " } ]
L'ConverseAPI supporta un set base di parametri di inferenza impostati nel inferenceConfig campo (). InferenceConfiguration I parametri di inferenza inclusi nel set di base sono i seguenti:
-
maxTokens: numero massimo di token da consentire nella risposta generata.
-
stopSequences: elenco di sequenze di arresto. Una sequenza di arresto è una sequenza di caratteri che determina l’interruzione della generazione della risposta da parte del modello.
-
temperature: probabilità che il modello selezioni opzioni con maggiore probabilità durante la generazione di una risposta.
-
topP: percentuale di candidati più probabili che il modello considera per il token successivo.
Per ulteriori informazioni, consulta Influenza sulla generazione della risposta con i parametri di inferenza.
L’esempio JSON seguente imposta il parametro di inferenza temperature.
{"temperature": 0.5}
Se il modello in uso ha parametri di inferenza aggiuntivi, è possibile impostare tali parametri specificandoli come elementi JSON nel campo additionalModelRequestFields. L’esempio JSON seguente mostra come impostare top_k, disponibile nei modelli Anthropic Claude, ma non è un parametro di inferenza di base nell’API Messages.
{"top_k": 200}
Se si specifica un prompt di Gestione prompt in modelId come risorsa su cui eseguire l’inferenza, è possibile utilizzare questo campo per assegnare i valori effettivi alle variabili dei prompt. Il campo promptVariables è mappato a un oggetto JSON con chiavi che corrispondono alle variabili definite nei prompt e ai valori con cui sostituire le variabili.
Supponiamo ad esempio che sia presente un prompt che dice Make me a L’ID del prompt è {{genre}} playlist consisting of the following number of songs: {{number}}.PROMPT12345 e la sua versione è 1. È possibile inviare la seguente richiesta Converse per sostituire le variabili:
POST /model/arn:aws:bedrock:us-east-1:111122223333:prompt/PROMPT12345:1/converse HTTP/1.1 Content-type: application/json { "promptVariables": { "genre" : "pop", "number": 3 } }
È possibile applicare un guardrail creato con Guardrail per Amazon Bedrock includendo questo campo. Per applicare il guardrail a un messaggio specifico della conversazione, includi il messaggio in un. GuardrailConverseContentBlock Se non si include alcun oggetto GuardrailConverseContentBlock nel corpo della richiesta, il guardrail viene applicato a tutti i messaggi nel campo messages. Per vedere un esempio, consulta Includere un guardrail con l’API Converse.
Questo campo consente di definire uno strumento che il modello può utilizzare per generare una risposta. Per ulteriori informazioni, consulta Utilizzo di uno strumento per completare una risposta al modello Amazon Bedrock.
Si può anche specificare i percorsi per i parametri aggiuntivi del modello nel campo additionalModelResponseFieldPaths, come illustrato nell’esempio seguente:
[ "/stop_sequence" ]
L’API restituisce i campi aggiuntivi richiesti nel campo additionalModelResponseFields.
Questo campo è mappato a un oggetto JSON. È possibile specificare le chiavi e i valori dei metadati a cui eseguire il mapping all’interno dell’oggetto. È possibile utilizzare i metadati di richiesta per filtrare i log di invocazione del modello.
Questo campo è mappato a un oggetto JSON. È possibile specificare il livello di servizio per una richiesta particolare.
L'esempio seguente mostra la serviceTier struttura:
"serviceTier": { "type": "reserved" | "priority" | "default" | "flex" }
Per informazioni dettagliate sui livelli di servizio, inclusi prezzi e caratteristiche prestazionali, vedereLivelli di servizio per l'ottimizzazione delle prestazioni e dei costi.
È anche possibile aggiungere, facoltativamente, punti di controllo della cache ai campi tools o system per utilizzare il caching dei prompt, a seconda del modello in uso. Per ulteriori informazioni, consulta Caching dei prompt per un’inferenza del modello più rapida.
Risposta
La risposta ricevuta dall’API Converse dipende dall’operazione chiamata, Converse o ConverseStream.
Risposta Converse
Nel modulo di rispostaConverse, il output campo (ConverseOutput) contiene il messaggio (Message) generato dal modello. Il contenuto del messaggio si trova nel campo content (ContentBlock) e il ruolo (useroassistant) a cui corrisponde il messaggio è nel role campo.
Se è stato utilizzato il caching dei prompt, nel campo di utilizzo cacheReadInputTokensCount e cacheWriteInputTokensCount indicano quanti token totali sono stati letti e scritti dalla e nella cache, rispettivamente.
Se hai utilizzato i livelli di servizio, nel campo di risposta, ti service tier diremo quale livello di servizio è stato utilizzato per la richiesta.
Il metrics campo (ConverseMetrics) include le metriche per la chiamata. Per determinare il motivo per cui il modello ha interrotto la generazione di contenuto, controlla il campo stopReason. È possibile ottenere informazioni sui token passati al modello nella richiesta e sui token generati nella risposta controllando il usage campo (). TokenUsage Se sono stati specificati campi di risposta aggiuntivi nella richiesta, l’API li restituisce come elementi JSON nel campo additionalModelResponseFields.
L’esempio seguente mostra la risposta ottenuta da Converse quando si passa il prompt discusso in Richiesta.
{ "output": { "message": { "role": "assistant", "content": [ { "text": "Here is a list of 3 pop songs by artists from the United Kingdom:\n\n1. \"Wannabe\" by Spice Girls\n2. \"Bitter Sweet Symphony\" by The Verve \n3. \"Don't Look Back in Anger\" by Oasis" } ] } }, "stopReason": "end_turn", "usage": { "inputTokens": 125, "outputTokens": 60, "totalTokens": 185 }, "metrics": { "latencyMs": 1175 } }
ConverseStream risposta
Se si chiama ConverseStream per trasmettere in streaming la risposta da un modello, il flusso viene restituito nel campo stream della risposta. Il flusso invia gli eventi seguenti nell’ordine indicato.
-
messageStart(MessageStartEvent). L'evento di inizio di un messaggio. Include il ruolo per il messaggio. -
contentBlockStart(ContentBlockStartEvent). Un evento di avvio del blocco di contenuto. Solo con utilizzo dello strumento. -
contentBlockDelta(ContentBlockDeltaEvent). Un evento delta del blocco di contenuto. Include uno degli elementi seguenti:-
text: testo parziale generato dal modello. -
reasoningContent: ragionamento parziale eseguito dal modello per generare la risposta. È necessario inviare l’oggettosignaturerestituito, oltre a tutti i messaggi precedenti nelle richiesteConversesuccessive. Se uno qualsiasi dei messaggi viene modificato, la risposta genera un errore. -
toolUse: oggetto JSON di input parziale per l’utilizzo dello strumento.
-
-
contentBlockStop(ContentBlockStopEvent). Un evento Content Block Stop. -
messageStop(MessageStopEvent). L'evento di interruzione del messaggio. Include il motivo per cui il modello ha interrotto la generazione di output. -
metadata(ConverseStreamMetadataEvent). Metadati per la richiesta. I metadati includono l'utilizzo del token inusage(TokenUsage) e le metriche per la chiamata inmetrics(). ConverseStreamMetadataEvent
ConverseStream trasmette un blocco di contenuto completo come ContentBlockStartEvent evento, uno o più ContentBlockDeltaEvent eventi e un evento. ContentBlockStopEvent Utilizza il campo contentBlockIndex come indice per correlare gli eventi che compongono un blocco di contenuto.
Di seguito è mostrato un esempio di risposta parziale di ConverseStream.
{'messageStart': {'role': 'assistant'}} {'contentBlockDelta': {'delta': {'text': ''}, 'contentBlockIndex': 0}} {'contentBlockDelta': {'delta': {'text': ' Title'}, 'contentBlockIndex': 0}} {'contentBlockDelta': {'delta': {'text': ':'}, 'contentBlockIndex': 0}} . . . {'contentBlockDelta': {'delta': {'text': ' The'}, 'contentBlockIndex': 0}} {'messageStop': {'stopReason': 'max_tokens'}} {'metadata': {'usage': {'inputTokens': 47, 'outputTokens': 20, 'totalTokens': 67}, 'metrics': {'latencyMs': 100.0}}}