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à.
Gestione degli eventi di output con l'API bidirezionale
Quando il modello Amazon Nova Sonic risponde, segue una sequenza di eventi strutturata. Il flusso inizia con un completionStart
evento che contiene identificatori univoci comesessionId
, promptName
e. completionId
Questi identificatori sono coerenti per tutto il ciclo di risposta e uniscono tutti gli eventi di risposta successivi.
Ogni tipo di risposta segue uno schema coerente in tre parti: contentStart
definisce il tipo e il formato del contenuto, l'evento di contenuto effettivo e contentEnd
chiude il segmento. La risposta include in genere più blocchi di contenuto in sequenza: riconoscimento vocale automatico (ASR), trascrizione (ciò che ha detto l'utente), uso opzionale di strumenti (quando sono necessarie informazioni esterne), risposta testuale (ciò che il modello intende dire) e risposta audio (l'output vocale).
La trascrizione ASR viene visualizzata per prima e consente al modello di comprendere il discorso dell'utente con e nel. role: "USER"
"additionalModelFields":
"{\"generationStage\":\"FINAL\"}"
contentStart
Quando il modello necessita di dati esterni, invia eventi relativi all'utensile con nomi e parametri specifici degli strumenti. La risposta testuale fornisce un'anteprima del discorso pianificato con role:
"ASSISTANT"
e. "additionalModelFields":
"{\"generationStage\":\"SPECULATIVE\"}"
La risposta audio fornisce quindi blocchi vocali codificati in base 64 che condividono le stesse durante lo streaming. contentId
Durante la generazione di audio, Amazon Nova Sonic supporta un flusso di conversazione naturale grazie alla sua funzionalità barge-in. Quando un utente interrompe Amazon Nova Sonic mentre sta parlando, Nova Sonic interrompe immediatamente la generazione del parlato, passa alla modalità di ascolto e invia una notifica di contenuto indicante che l'interruzione si è verificata. Poiché Nova Sonic funziona più velocemente del tempo reale, parte dell'audio potrebbe essere già stata trasmessa ma non ancora riprodotta. La notifica di interruzione consente all'applicazione client di cancellare la coda audio e interrompere immediatamente la riproduzione, creando un'esperienza di conversazione reattiva.
Una volta completata la generazione dell'audio (o interrotta tramite barge-in), Amazon Nova Sonic fornisce una risposta testuale aggiuntiva che contiene una trascrizione a livello di frase di ciò che è stato effettivamente pronunciato. Questa role:
"ASSISTANT"
risposta "additionalModelFields":
"{\"generationStage\":\"FINAL\"}"
testuale include un evento con e. contentStart
Durante la gestione della risposta, vengono inviati usageEvent
eventi per tenere traccia del consumo di token. Questi eventi contengono metriche dettagliate sui token di input e output (sia vocali che testuali) e i relativi totali cumulativi. Ciascuno usageEvent
mantiene gli stessi eventi sessionId
e completionId
quelli degli altri nel flusso di conversazione. promptName
La sezione dei dettagli fornisce sia le modifiche incrementali (delta) che i totali correnti dell'utilizzo dei token, consentendo un monitoraggio preciso dell'utilizzo durante la conversazione.
Il modello invia un completionEnd
evento con gli identificatori originali e un stopReason
che indica come è terminata la conversazione. Questa gerarchia di eventi garantisce che l'applicazione possa tenere traccia delle parti della risposta che coincidono tra loro ed elaborarle di conseguenza, mantenendo il contesto della conversazione in più turni.
Il flusso degli eventi in uscita inizia entrando nella fase di generazione della risposta. Inizia con il riconoscimento vocale automatico, seleziona uno strumento da utilizzare, trascrive il parlato, genera audio, finalizza la trascrizione e termina la sessione.

Flusso degli eventi di output
La struttura del flusso di eventi di output è descritta in questa sezione.
-
UsageEvent
"event": { "usageEvent": { "completionId": "string", // unique identifier for completion "details": { "delta": { // incremental changes since last event "input": { "speechTokens": number, // input speech tokens "textTokens": number // input text tokens }, "output": { "speechTokens": number, // speech tokens generated "textTokens": number // text tokens generated } }, "total": { // cumulative counts "input": { "speechTokens": number, // total speech tokens processed "textTokens": number // total text tokens processed }, "output": { "speechTokens": number, // total speech tokens generated "textTokens": number // total text tokens generated } } }, "promptName": "string", // same unique identifier from promptStart event "sessionId": "string", // unique identifier "totalInputTokens": number, // cumulative input tokens "totalOutputTokens": number, // cumulative output tokens "totalTokens": number // total tokens in the session } }
-
CompleteStartEvent
"event": { "completionStart": { "sessionId": "string", // unique identifier "promptName": "string", // same unique identifier from promptStart event "completionId": "string", // unique identifier } }
-
TextOutputContent
-
ContentStart
"event": { "contentStart": { "additionalModelFields": "{\"generationStage\":\"FINAL\"}" | "{\"generationStage\":\"SPECULATIVE\"}", "sessionId": "string", // unique identifier "promptName": "string", // same unique identifier from promptStart event "completionId": "string", // unique identifier "contentId": "string", // unique identifier for the content block "type": "TEXT", "role": "USER" | "ASSISTANT", "textOutputConfiguration": { "mediaType": "text/plain" } } }
-
TextOutput
"event": { "textOutput": { "sessionId": "string", // unique identifier "promptName": "string", // same unique identifier from promptStart event "completionId": "string", // unique identifier "contentId": "string", // same unique identifier from its contentStart "content": "string" // User transcribe or Text Response } }
-
ContentEnd
"event": { "contentEnd": { "sessionId": "string", // unique identifier "promptName": "string", // same unique identifier from promptStart event "completionId": "string", // unique identifier "contentId": "string", // same unique identifier from its contentStart "stopReason": "PARTIAL_TURN" | "END_TURN" | "INTERRUPTED", "type": "TEXT" } }
-
-
ToolUse
-
ContentStart
"event": { "contentStart": { "sessionId": "string", // unique identifier "promptName": "string", // same unique identifier from promptStart event "completionId": "string", // unique identifier "contentId": "string", // unique identifier for the content block "type": "TOOL", "role": "TOOL", "toolUseOutputConfiguration": { "mediaType": "application/json" } } }
-
ToolUse
"event": { "toolUse": { "sessionId": "string", // unique identifier "promptName": "string", // same unique identifier from promptStart event "completionId": "string", // unique identifier "contentId": "string", // same unique identifier from its contentStart "content": "json", "toolName": "string", "toolUseId": "string" } }
-
ContentEnd
"event": { "contentEnd": { "sessionId": "string", // unique identifier "promptName": "string", // same unique identifier from promptStart event "completionId": "string", // unique identifier "contentId": "string", // same unique identifier from its contentStart "stopReason": "TOOL_USE", "type": "TOOL" } }
-
-
AudioOutputContent
-
ContentStart
"event": { "contentStart": { "sessionId": "string", // unique identifier "promptName": "string", // same unique identifier from promptStart event "completionId": "string", // unique identifier "contentId": "string", // unique identifier for the content block "type": "AUDIO", "role": "ASSISTANT", "audioOutputConfiguration": { "mediaType": "audio/lpcm", "sampleRateHertz": 8000 | 16000 | 24000, "sampleSizeBits": 16, "encoding": "base64", "channelCount": 1 } } }
-
AudioOutput
"event": { "audioOutput": { "sessionId": "string", // unique identifier "promptName": "string", // same unique identifier from promptStart event "completionId": "string", // unique identifier "contentId": "string", // same unique identifier from its contentStart "content": "base64EncodedAudioData", // Audio } }
-
ContentEnd
"event": { "contentEnd": { "sessionId": "string", // unique identifier "promptName": "string", // same unique identifier from promptStart event "completionId": "string", // unique identifier "contentId": "string", // same unique identifier from its contentStart "stopReason": "PARTIAL_TURN" | "END_TURN", "type": "AUDIO" } }
-
-
CompletionEndEvent
"event": { "completionEnd": { "sessionId": "string", // unique identifier "promptName": "string", // same unique identifier from promptStart event "completionId": "string", // unique identifier "stopReason": "END_TURN" } }