Utilizzo di Converse API - 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à.

Utilizzo di Converse API

Per utilizzare nuovamente il plugin Converse API, si chiamano le ConverseStream operazioni Converse o per inviare messaggi a un modello. Per chiamareConverse, è necessaria l'autorizzazione per l'bedrock:InvokeModeloperazione. Per chiamareConverseStream, è necessaria l'autorizzazione per l'bedrock:InvokeModelWithResponseStreamoperazione.

Richiesta

Quando effettui una richiesta Converse con un endpoint di runtime Amazon Bedrock, puoi includere i seguenti campi:

  • modelID — Un parametro obbligatorio nell'intestazione che consente di specificare la risorsa da utilizzare per l'inferenza.

  • I seguenti campi consentono di personalizzare il prompt:

    • messaggi: consente di specificare il contenuto e il ruolo dei prompt.

    • sistema: da utilizzare per specificare i prompt di sistema, che definiscono le istruzioni o il contesto per il modello.

    • InferenceConfig — Utilizzato per specificare i parametri di inferenza comuni a tutti i modelli. I parametri di inferenza influenzano la generazione della risposta.

    • additionalmodelRequestFields— Da utilizzare per specificare i parametri di inferenza specifici del modello con cui si esegue l'inferenza.

    • PromptVariables — (Se si utilizza un prompt di Prompt management) Utilizzate questo campo per definire le variabili da compilare nel prompt e i valori con cui riempirle.

  • I seguenti campi consentono di personalizzare la modalità di restituzione della risposta:

    • GuardrailConfig: utilizzate questo campo per includere un guardrail da applicare all'intero prompt.

    • ToolConfig — Utilizzate questo campo per includere uno strumento che aiuti un modello a generare risposte.

    • additionalModelResponseFieldPaths— Utilizzate questo campo per specificare i campi da restituire come oggetto puntatore JSON.

  • RequestMetadata: utilizzate questo campo per includere metadati che possono essere filtrati quando si utilizzano i log di chiamata.

Nota

Le seguenti restrizioni si applicano quando si utilizza un prompt di gestione dei prompt con o: Converse ConverseStream

  • Non puoi includere i campiadditionalModelRequestFields, inferenceConfigsystem, otoolConfig.

  • Se si include il messages campo, i messaggi vengono aggiunti dopo i messaggi definiti nel prompt.

  • Se si include il guardrailConfig campo, il guardrail viene applicato all'intero prompt. Se includi guardContent blocchi nel ContentBlockcampo, il guardrail verrà applicato solo a quei blocchi.

Espandi una sezione per saperne di più su un campo nel corpo della Converse richiesta:

Il messages campo è una matrice di oggetti Message, ognuno dei quali definisce un messaggio tra l'utente e il modello. Un Message oggetto contiene i seguenti campi:

  • role — Definisce se il messaggio proviene da user (il prompt inviato al modello) o assistant (la risposta del modello).

  • content: definisce il contenuto del prompt.

    Nota

    Amazon Bedrock non memorizza testo, immagini o documenti che fornisci come contenuto. I dati vengono utilizzati solo per generare la risposta.

È possibile mantenere il contesto della conversazione includendo tutti i messaggi della conversazione nelle Converse richieste successive e utilizzando il role campo 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 modalità, vediModelli e caratteristiche del modello supportati):

text

Il text campo viene mappato su una stringa che specifica il prompt. Il text campo viene interpretato insieme ad altri campi specificati nello stesso. ContentBlock

(Facoltativo) Per alcuni modelli, è possibile aggiungere checkpoint della cache utilizzando cachePoint i campi per utilizzare il prompt caching. Il prompt caching è una funzionalità che consente di iniziare a memorizzare nella cache il contesto delle conversazioni per ottenere risparmi in termini di costi e latenza. Per ulteriori informazioni, consulta Memorizzazione rapida nella cache per un'inferenza più rapida del modello.

Nota

Il prompt caching di Amazon Bedrock è attualmente disponibile solo per un numero selezionato di clienti. Per ulteriori informazioni sulla partecipazione all'anteprima, consulta Amazon Bedrock prompt caching.

Quanto segue mostra un oggetto Message con un content array contenente solo un testo: ContentBlock

{ "role": "user | assistant", "content": [ { "text": "string" } ] }

Quanto segue mostra un oggetto Message con una content matrice contenente un testo ContentBlocke un cachePoint campo opzionale. Di conseguenza, il contenuto del testo ContentBlockviene aggiunto alla cache.

{ "role": "user | assistant", "content": [ { "text": "string" }, { "cachePoint": { "type": "default" } } ] }
image

Il image campo è mappato su un ImageBlock. Passa i byte non elaborati, codificati in base64, per un'immagine nel campo. bytes Se si utilizza un AWS SDK, non è necessario codificare i byte in base64.

Se si esclude il text campo, il modello descrive l'immagine.

(Facoltativo) Per alcuni modelli, è possibile aggiungere checkpoint della cache utilizzando cachePoint i campi per utilizzare il prompt caching. Il prompt caching è una funzionalità che consente di iniziare a memorizzare nella cache il contesto delle conversazioni per ottenere risparmi in termini di costi e latenza. Per ulteriori informazioni, consulta Memorizzazione rapida nella cache per un'inferenza più rapida del modello.

Nota

Il prompt caching di Amazon Bedrock è attualmente disponibile solo per un numero selezionato di clienti. Per ulteriori informazioni sulla partecipazione all'anteprima, consulta Amazon Bedrock prompt caching.

Quanto segue mostra un oggetto Message con un content array contenente solo un'immagine: ContentBlock

{ "role": "user", "content": [ { "image": { "format": "png | jpeg | gif | webp", "source": { "bytes": "image in bytes" } } } ] }

Quanto segue mostra un oggetto Message con una content matrice contenente un'immagine ContentBlocke un cachePoint campo opzionale. Di conseguenza, il contenuto dell'immagine viene aggiunto alla cache.

{ "role": "user", "content": [ { "image": { "format": "png | jpeg | gif | webp", "source": { "bytes": "image in bytes" } } }, { "cachePoint": { "type": "default" } } ] }
document

Il document campo è mappato su un DocumentBlock. Se includi unDocumentBlock, verifica che la tua richiesta sia conforme alle seguenti restrizioni:

  • Nel content campo dell'oggetto Message, devi includere anche un text campo con un prompt relativo al documento.

  • Passate i byte non elaborati, codificati in base64, per il documento nel campo. bytes Se utilizzate un AWS SDK, non è necessario codificare i byte del documento in base64.

  • Il name campo può contenere solo i seguenti caratteri:

    • Caratteri alfanumerici

    • Caratteri di spaziatura (non più di uno di seguito)

    • Trattini

    • Parentesi

    • Parentesi quadre

    Nota

    Il name campo è vulnerabile alle iniezioni tempestive, perché il modello potrebbe inavvertitamente interpretarlo come istruzioni. Pertanto, si consiglia di specificare un nome neutro.

(Facoltativo) Per alcuni modelli, è possibile aggiungere checkpoint della cache utilizzando cachePoint i campi per utilizzare il prompt caching. Il prompt caching è una funzionalità che consente di iniziare a memorizzare nella cache il contesto delle conversazioni per ottenere risparmi in termini di costi e latenza. Per ulteriori informazioni, consulta Memorizzazione rapida nella cache per un'inferenza più rapida del modello.

Nota

Il prompt caching di Amazon Bedrock è attualmente disponibile solo per un numero selezionato di clienti. Per ulteriori informazioni sulla partecipazione all'anteprima, consulta Amazon Bedrock prompt caching.

Quanto segue mostra un oggetto Message con un content array contenente solo un documento ContentBlocke un testo di accompagnamento obbligatorio. ContentBlock

{ "role": "user", "content": [ { "text": "string" }, { "document": { "format": "pdf | csv | doc | docx | xls | xlsx | html | txt | md", "name": "string", "source": { "bytes": "document in bytes" } } } ] }

Quanto segue mostra un oggetto Message con una content matrice contenente un documento ContentBlocke il testo di accompagnamento obbligatorio ContentBlock, nonché un CachePoint che aggiunge sia il contenuto del documento che quello del testo alla cache.

{ "role": "user", "content": [ { "text": "string" }, { "document": { "format": "pdf | csv | doc | docx | xls | xlsx | html | txt | md", "name": "string", "source": { "bytes": "document in bytes" } } }, { "cachePoint": { "type": "default" } } ] }
video

Il video campo è mappato a un oggetto. VideoBlock Passa i byte non elaborati nel bytes campo, codificati in base64. Se si utilizza l' AWS SDK, non è necessario codificare i byte in base64.

Se non includi il text campo, il modello descriverà il video.

Quanto segue mostra un oggetto Message con un content array contenente solo un video ContentBlock.

{ "role": "user", "content": [ { "video": { "format": "mov | mkv | mp4 | webm | flv | mpeg | mpg | wmv | three_gp", "source": { "bytes": "video in bytes" } } } ] }

Nota che per i file con .3gp estensione, il formato deve essere specificato comethree_gp.

Puoi anche passare un video tramite un URI Amazon S3 invece di passare i byte direttamente nel corpo della richiesta. Quanto segue mostra un Message oggetto con un array di contenuti contenente solo un video ContentBlock la cui sorgente video è passata attraverso un URI Amazon S3.

{ "role": "user", "content": [ { "video": { "format": "mov | mkv | mp4 | webm | flv | mpeg | mpg | wmv | three_gp", "source": { "s3Location": { "uri": "${S3Uri}", "bucketOwner": "${AccountId}" } } } } ] }

Il s3Location parametro è supportato solo nella regione Stati Uniti orientali (Virginia settentrionale).

Nota

Il ruolo assunto deve avere l's3:GetObjectautorizzazione per l'URI di Amazon S3. Il bucketOwner campo è facoltativo ma deve essere specificato se l'account che effettua la richiesta non possiede il bucket in cui si trova l'URI di Amazon S3.

guardContent

Il guardContent campo è mappato su un GuardrailConverseContentBlockoggetto. È possibile utilizzare questo campo per indirizzare un input che deve essere valutato dal guardrail definito nel guardrailConfig campo. Se non specifichi questo campo, il guardrail valuta tutti i messaggi nel corpo della richiesta. Puoi passare i seguenti tipi di contenuto in un file: GuardBlock

Per ulteriori informazioni sull'uso dei guardrail, vedere. Blocca i contenuti dannosi nei modelli che utilizzano Amazon Bedrock Guardrails

reasoningContent

Il reasoningContent campo è mappato a. ReasoningContentBlock Questo blocco contiene contenuti riguardanti il ragionamento che è stato eseguito dal modello per generare la risposta ContentBlock allegata.

Quanto segue mostra un Message oggetto con una content matrice contenente solo un testo ReasoningContentBlock e un testo di accompagnamento. ContentBlock

{ "role": "user", "content": [ { "text": "string" }, { "reasoningContent": { "reasoningText": { "text": "string", "signature": "string" } "redactedContent": "base64-encoded binary data object" } } ] }

ReasoningContentBlockContiene il ragionamento utilizzato per generare il contenuto di accompagnamento nel reasoningText campo, oltre a qualsiasi contenuto del ragionamento che è stato crittografato dal fornitore del modello per motivi di fiducia e sicurezza sul campo. redactedContent

All'interno del reasoningText campo, i text campi descrivono il ragionamento. Il signature campo è un hash di tutti i messaggi della conversazione ed è una protezione contro la manomissione del ragionamento usato dal modello. È necessario includere la firma e tutti i messaggi precedenti nelle richieste successive. Converse Se uno qualsiasi dei messaggi viene modificato, la risposta genera un errore.

toolUse

Contiene informazioni su uno strumento da utilizzare per il modello. Per ulteriori informazioni, consulta Usa uno strumento per completare una risposta al modello Amazon Bedrock.

toolResult

Contiene informazioni sul risultato ottenuto dal modello utilizzando uno strumento. Per ulteriori informazioni, consulta Usa uno strumento per completare una risposta al modello Amazon Bedrock.

Nota

Le seguenti restrizioni riguardano il content campo:

  • Puoi includere fino a 20 immagini. Le dimensioni, l'altezza e la larghezza di ogni immagine non devono superare rispettivamente 3,75 MB, 8.000 px e 8.000 px.

  • Puoi includere fino a cinque documenti. Le dimensioni di ogni documento non devono superare i 4,5 MB.

  • Puoi includere immagini e documenti solo se lo role èuser.

Nell'messagesesempio 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 svolgere o sul personaggio che deve assumere 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. " } ]

Il Converse L'API supporta un set base di parametri di inferenza impostati nel campo (). inferenceConfig InferenceConfiguration Il set base di parametri di inferenza è:

  • maxTokens: il numero massimo di token da consentire nella risposta generata.

  • stopSequences: un elenco di sequenze di interruzioni. Una sequenza di interruzioni è una sequenza di caratteri che causa l'interruzione della generazione della risposta da parte del modello.

  • temperatura — La probabilità che il modello selezioni opzioni a maggiore probabilità durante la generazione di una risposta.

  • TopP: la percentuale di candidati più probabili che il modello considera per il token successivo.

Per ulteriori informazioni, consulta Influenza la generazione della risposta con parametri di inferenza.

L'esempio seguente JSON imposta il parametro di inferenza. temperature

{"temperature": 0.5}

Se il modello che stai utilizzando ha parametri di inferenza aggiuntivi, puoi impostare tali parametri specificandoli come JSON nel campo. additionalModelRequestFields L'esempio seguente JSON mostra come impostaretop_k, che è disponibile in Anthropic Claude modelli, ma non è un parametro di inferenza di base nell'API dei messaggi.

{"top_k": 200}

Se si specifica un prompt di Prompt management modelId come risorsa su cui eseguire l'inferenza, utilizzare questo campo per inserire nelle variabili di prompt i valori effettivi. Il promptVariables campo è mappato su un oggetto JSON con chiavi che corrispondono alle variabili definite nei prompt e valori con cui sostituire le variabili.

Ad esempio, supponiamo che tu abbia un prompt che dice. Make me a {{genre}} playlist consisting of the following number of songs: {{number}}. L'ID del prompt è PROMPT12345 e la sua versione è. 1 È possibile inviare la seguente Converse richiesta 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 } }

Puoi applicare un guardrail creato con Amazon Bedrock Guardrails includendo questo campo. Per applicare il guardrail a un messaggio specifico della conversazione, includi il messaggio in un. GuardrailConverseContentBlock Se non includi alcuna GuardrailConverseContentBlock s nel corpo della richiesta, il guardrail viene applicato a tutti i messaggi nel messages campo. Per vedere un esempio, consulta Include un guardrail con Converse API .

Questo campo consente di definire uno strumento da utilizzare per il modello per aiutarlo a generare una risposta. Per ulteriori informazioni, consulta Usa uno strumento per completare una risposta al modello Amazon Bedrock.

È possibile specificare i percorsi per i parametri aggiuntivi del modello nel additionalModelResponseFieldPaths campo, come mostrato nell'esempio seguente.

[ "/stop_sequence" ]

L'API restituisce i campi aggiuntivi richiesti nel additionalModelResponseFields campo.

Questo campo è mappato a un oggetto JSON. È possibile specificare le chiavi e i valori dei metadati a cui mappare all'interno di questo oggetto. È possibile utilizzare i metadati di richiesta per filtrare i log di invocazione del modello.

Facoltativamente, puoi anche aggiungere checkpoint della cache ai tools campi system or per utilizzare la memorizzazione nella cache rapida, a seconda del modello che stai utilizzando. Per ulteriori informazioni, consulta Memorizzazione rapida nella cache per un'inferenza più rapida del modello.

Nota

Il prompt caching di Amazon Bedrock è attualmente disponibile solo per un numero selezionato di clienti. Per ulteriori informazioni sulla partecipazione all'anteprima, consulta Amazon Bedrock prompt caching.

Risposta

La risposta che ricevi dal Converse L'API dipende dall'operazione che chiami Converse oConverseStream.

Risposta inversa

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 hai usato il prompt caching, inserisci nel campo usage cacheReadInputTokensCount e ti cacheWriteInputTokensCount dico quanti token totali sono stati letti dalla cache e scritti nella cache, rispettivamente.

Il metrics campo (ConverseMetrics) include le metriche per la chiamata. Per determinare il motivo per cui il modello ha smesso di generare contenuti, controlla il stopReason campo. Puoi ottenere informazioni sui token passati al modello nella richiesta e sui token generati nella risposta controllando il usage campo () TokenUsage. Se hai specificato campi di risposta aggiuntivi nella richiesta, l'API li restituisce come JSON nel campo. additionalModelResponseFields

L'esempio seguente mostra la risposta ottenuta 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 chiami ConverseStream per trasmettere in streaming la risposta da un modello, il flusso viene restituito nel campo di stream risposta. Lo stream emette i seguenti eventi nell'ordine seguente.

  1. messageStart(MessageStartEvent). L'evento di inizio di un messaggio. Include il ruolo del messaggio.

  2. contentBlockStart(ContentBlockStartEvent). Un evento di avvio del blocco di contenuto. Solo uso dello strumento.

  3. contentBlockDelta(ContentBlockDeltaEvent). Un evento delta del blocco di contenuto. Include uno dei seguenti:

    • text— Il testo parziale generato dal modello.

    • reasoningContent— Il ragionamento parziale eseguito dal modello per generare la risposta. È necessario inviare i messaggi restituitisignature, oltre a tutti i messaggi precedenti nelle Converse richieste successive. Se uno qualsiasi dei messaggi viene modificato, la risposta genera un errore.

    • toolUse— L'oggetto JSON di input parziale per l'uso dello strumento.

  4. contentBlockStop(ContentBlockStopEvent). Un evento Content Block Stop.

  5. messageStop(MessageStopEvent). L'evento di interruzione del messaggio. Include il motivo per cui il modello ha smesso di generare output.

  6. metadata(ConverseStreamMetadataEvent). Metadati per la richiesta. I metadati includono l'utilizzo del token in usage (TokenUsage) e le metriche per la chiamata in metrics (). ConverseStreamMetadataEvent

ConverseStream trasmette un blocco di contenuto completo come ContentBlockStartEvent evento, uno o più ContentBlockDeltaEvent eventi e un evento. ContentBlockStopEvent Usa il contentBlockIndex campo come indice per correlare gli eventi che compongono un blocco di contenuto.

L'esempio seguente è una risposta parziale diConverseStream.

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