

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.

# Ausgabeereignisse mit der bidirektionalen API behandeln
<a name="output-events"></a>

**Anmerkung**  
Diese Dokumentation bezieht sich auf Amazon Nova Version 1. Den Amazon Nova 2 Sonic-Leitfaden finden Sie unter [Umgang mit Ausgabeereignissen mit der bidirektionalen API](https://docs.aws.amazon.com/nova/latest/nova2-userguide/sonic-output-events.html).

Wenn das Amazon-Nova-Sonic-Modell antwortet, 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: `contentStart` definiert den Inhaltstyp und das Format, das eigentliche Inhaltsereignis und `contentEnd` schließt dieses Segment. Die Antwort umfasst in der Regel mehrere aufeinanderfolgende Inhaltsblöcke: Transkription mittels automatischer Spracherkennung (ASR) (was der Benutzer gesagt hat), optionale Verwendung von Tools (wenn externe Informationen benötigt werden), Textantwort (was das Modell zu sagen plant) 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 `"additionalModelFields": "{\"generationStage\":\"FINAL\"}"` in `contentStart`. Wenn das Modell externe Daten benötigt, sendet es Tool-bezogene Ereignisse mit bestimmten Tool-Namen und -Parametern. Die Textantwort bietet eine Vorschau des geplanten Sprachbeitrags mit `role: "ASSISTANT"` und `"additionalModelFields": "{\"generationStage\":\"SPECULATIVE\"}"`. Die Audioantwort liefert dann Base64-kodierte Sprachblöcke, die im gesamten Stream dieselbe `contentId` verwenden.

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 `contentStart`-Ereignis mit `role: "ASSISTANT"` und `"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 Ausgabetoken (sowohl Sprache als auch Text) sowie deren kumulierte Gesamtwerte. Jedes `usageEvent`-Ereignis behält dieselben `sessionId`, `promptName` und `completionId` wie andere Ereignisse im Konversationsablauf bei. Der Abschnitt „Details“ enthält sowohl inkrementelle Änderungen (Delta) als auch laufende Summen der Token-Verwendung, wodurch eine genaue Überwachung der Verwendung während der Konversation ermöglicht wird.

Das Modell sendet ein `completionEnd`-Ereignis mit den ursprünglichen Kennungen und einem `stopReason`, der angibt, wie die Konversation endete. Diese Ereignishierarchie stellt sicher, dass Ihre Anwendung nachverfolgen kann, welche Teile der Antwort zusammengehören, und diese entsprechend verarbeiten kann, wobei der Konversationskontext über mehrere Gesprächsrunden hinweg beibehalten wird.

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.

![\[Diagramm, das den Ablauf der Ausgabeereignisse in Amazon Nova Sonic erklärt.\]](http://docs.aws.amazon.com/de_de/nova/latest/userguide/images/output-events.png)


## Ausgabeereignis-Ablauf
<a name="output-event-flow"></a>

In diesem Abschnitt wird die Struktur des Ausgabe-Ereignisflusses beschrieben.

1. `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
       }
   }
   ```

1. `CompleteStartEvent`

   ```
   "event": {
           "completionStart": {
               "sessionId": "string", // unique identifier
               "promptName": "string", // same unique identifier from promptStart event
               "completionId": "string", // unique identifier
           }
       }
   ```

1. `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"
         }
       }
     ```

1. `ToolUse`

   1. `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"
            }
          }
        }
      ```

   1. `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"
          }
        }
      ```

   1. `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"
          }
        }
      ```

1. `AudioOutputContent`

   1. `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
                  }
            }
        }
      ```

   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
              }
          }
      ```

   1. `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"
          }
        }
      ```

1. `CompletionEndEvent`

   ```
   "event": {
       "completionEnd": {
         "sessionId": "string", // unique identifier
         "promptName": "string", // same unique identifier from promptStart event
         "completionId": "string", // unique identifier
         "stopReason": "END_TURN" 
       }
     }
   ```