Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Behandlung von Ausgabeereignissen mit der bidirektionalen API
Wenn das Amazon Nova Sonic-Modell reagiert, folgt es einer strukturierten Ereignissequenz. Der Ablauf beginnt mit einem completionStart
Ereignis, das eindeutige Identifikatoren wie sessionId
promptName
, und completionId
enthält. Diese Identifikatoren sind während des gesamten Antwortzyklus konsistent und vereinen alle nachfolgenden Reaktionsereignisse.
Jeder Antworttyp folgt einem konsistenten dreiteiligen Muster: Er contentStart
definiert den Inhaltstyp und das Format, das eigentliche Inhaltsereignis und contentEnd
schließt dieses Segment. Die Antwort umfasst in der Regel nacheinander mehrere Inhaltsblöcke: automatische Spracherkennung (ASR) -Transkription (was der Benutzer gesagt hat), optionale Verwendung von Tools (wenn externe Informationen benötigt werden), Textantwort (was das Modell sagen will) und Audioantwort (die gesprochene Ausgabe).
Die ASR-Transkription erscheint zuerst und vermittelt das Verständnis des Modells für die Sprache des Benutzers mit role: "USER"
und in der. "additionalModelFields":
"{\"generationStage\":\"FINAL\"}"
contentStart
Wenn das Modell externe Daten benötigt, sendet es werkzeugbezogene Ereignisse mit bestimmten Werkzeugnamen und -parametern. Die Textantwort bietet eine Vorschau der geplanten Rede mit role:
"ASSISTANT"
und"additionalModelFields":
"{\"generationStage\":\"SPECULATIVE\"}"
. Die Audioantwort liefert dann Base64-kodierte Sprachblöcke, die im gesamten Stream dieselbe Sprache verwenden. contentId
Während der Audiogenerierung unterstützt Amazon Nova Sonic durch seine Barge-In-Funktion den natürlichen Gesprächsfluss. Wenn ein Benutzer Amazon Nova Sonic unterbricht, während es spricht, stoppt Nova Sonic sofort die Sprachgenerierung, wechselt in den Hörmodus und sendet eine Inhaltsbenachrichtigung, die darauf hinweist, dass die Unterbrechung aufgetreten ist. Da Nova Sonic schneller als in Echtzeit arbeitet, wurden einige Audiodaten möglicherweise bereits übertragen, aber noch nicht abgespielt. Die Unterbrechungsbenachrichtigung ermöglicht es der Client-Anwendung, ihre Audiowarteschlange zu löschen und die Wiedergabe sofort zu beenden, wodurch ein responsives Konversationserlebnis entsteht.
Nachdem die Audiogenerierung abgeschlossen ist (oder per Barge-In unterbrochen wurde), bietet Amazon Nova Sonic eine zusätzliche Textantwort, die eine Transkription des tatsächlich Gesprochenen auf Satzebene enthält. Diese Textantwort beinhaltet ein Ereignis mit und. contentStart
role:
"ASSISTANT"
"additionalModelFields":
"{\"generationStage\":\"FINAL\"}"
Während der gesamten Antwortverarbeitung werden usageEvent
Ereignisse gesendet, um den Token-Verbrauch zu verfolgen. Diese Ereignisse enthalten detaillierte Metriken zu Eingabe- und Ausgabetokens (sowohl Sprache als auch Text) sowie deren Gesamtwerte. Jedes usageEvent
Ereignis behält dieselben sessionId
promptName
, und completionId
wie andere Ereignisse im Konversationsablauf bei. Der Detailbereich enthält sowohl inkrementelle Änderungen (Delta) als auch laufende Gesamtwerte der Token-Nutzung, sodass die Nutzung während der Konversation genau überwacht werden kann.
Das Modell sendet ein completionEnd
Ereignis mit den ursprünglichen Kennungen und einemstopReason
, das angibt, wie die Konversation endete. Diese Ereignishierarchie stellt sicher, dass Ihre Anwendung nachverfolgen kann, welche Teile der Antwort zusammengehören, und sie entsprechend verarbeiten kann, sodass der Konversationskontext über mehrere Runden hinweg erhalten bleibt.
Der Ablauf der Ausgabeereignisse beginnt mit dem Eintritt in die Phase der Antwortgenerierung. Er beginnt mit der automatischen Spracherkennung, wählt ein zu verwendendes Tool aus, transkribiert Sprache, generiert Audio, schließt die Transkription ab und beendet die Sitzung.

Ablauf des Ausgabeereignisses
Die Struktur des Ausgabeereignisflusses wird in diesem Abschnitt beschrieben.
-
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" } }