WebSocket mit mehreren Kontexten
Dieser Leitfaden zeigt Ihnen, wie Sie Echtzeit-Sprachagenten mit der WebSocket-API für mehrere Kontexte erstellen.
Die Orchestrierung von Sprachagenten mit dieser WebSocket-API für mehrere Kontexte ist komplex und wird fortgeschrittenen Entwicklern empfohlen. Als stärker verwaltete Lösung können Sie unser Produkt Agents Platform nutzen, das viele dieser Herausforderungen vereinfacht.
Überblick
Reaktionsschnelle Sprachagenten erfordern die Fähigkeit, Audiostreams dynamisch zu verwalten, Unterbrechungen zuverlässig zu verarbeiten und über Gesprächswechsel hinweg natürlich klingende Sprache beizubehalten. Unsere WebSocket-API für mehrere Kontexte für Text to Speech (TTS) wurde speziell für diese Szenarien entwickelt.
Diese API erweitert unsere standardmäßige TTS-WebSocket-Funktionalität um das Konzept der „Kontexte“. Jeder Kontext arbeitet als unabhängiger Audiogenerierungsstream innerhalb einer einzelnen WebSocket-Verbindung. So können Sie:
- Mehrere Sprachsequenzen gleichzeitig verwalten, etwa wenn der Agent spricht und gleichzeitig eine Antwort auf eine Nutzerunterbrechung vorbereitet.
- Nutzereinwürfe nahtlos verarbeiten, indem Sie einen bestehenden Sprachkontext schließen und einen neuen starten.
- Prosodische Konsistenz für Äußerungen innerhalb desselben logischen Kontexts bewahren.
- Ressourcen effizient nutzen, indem Sie nicht mehr benötigte Kontexte gezielt schließen.
Die WebSocket-API für mehrere Kontexte ist für Sprachanwendungen optimiert und nicht dafür vorgesehen, mehrere unabhängige Audiostreams gleichzeitig zu generieren. Daher ist jede Verbindung auf 5 gleichzeitige Kontexte begrenzt.
Dieser Leitfaden führt Sie durch die Verbindung mit dem WebSocket für mehrere Kontexte, die Verwaltung von Kontexten und Best Practices für überzeugende Sprachagenten.
Best Practices
Diese Best Practices sind entscheidend, um mit unserer WebSocket-API für mehrere Kontexte reaktionsschnelle und effiziente Sprachagenten zu erstellen.
Eine einzelne WebSocket-Verbindung nutzen
Stellen Sie für jede Endnutzer-Sitzung eine WebSocket-Verbindung her. Das reduziert im Vergleich zum Aufbau mehrerer Verbindungen den Overhead und die Latenz. Innerhalb dieser Verbindung können Sie mehrere Kontexte für verschiedene Teile des Gesprächs verwalten.
Antworten in Blöcken streamen, Sätze generieren
Streamen Sie bei langen Antworten den Text in kleineren Blöcken und verwenden Sie das Flag flush: true
am Ende vollständiger Sätze. Das verbessert die Qualität des generierten Audios und die
Reaktionsfähigkeit.
Unterbrechungen zuverlässig verarbeiten
Streamen Sie Text in einen Kontext, bis eine Unterbrechung erfolgt. Erstellen Sie dann einen neuen Kontext und schließen Sie den bestehenden. Dieser Ansatz gewährleistet reibungslose Übergänge, wenn sich der Gesprächsfluss ändert.
Kontextlebenszyklus verwalten
Schließen Sie ungenutzte Kontexte zeitnah. Der Server kann pro Verbindung bis zu 5 gleichzeitige Kontexte verwalten, Sie sollten Kontexte jedoch schließen, sobald sie nicht mehr benötigt werden.
Kontext-Timeouts verhindern
Kontexte laufen standardmäßig nach 20 Sekunden ab und werden automatisch geschlossen. Das Inaktivitäts- Timeout ist ein Parameter auf WebSocket-Ebene, der für alle Kontexte gilt und bei Bedarf bis zu 180 Sekunden betragen kann. Senden Sie eine leere Textnachricht an einen Kontext, um die Timeout-Uhr zurückzusetzen.
Unterbrechungen verarbeiten
Wenn ein Nutzer Ihren Agenten unterbricht, sollten Sie den aktuellen Kontext schließen und einen neuen erstellen:
Einen Kontext aktiv halten
Kontexte laufen nach standardmäßig 20 Sekunden Inaktivität automatisch ab. Wenn Sie einen Kontext ohne Textgenerierung aktiv halten müssen, etwa während einer Verarbeitungsverzögerung, können Sie eine leere Textnachricht senden, um die Timeout-Uhr zurückzusetzen.
Die WebSocket-Verbindung schließen
Wenn Ihr Gespräch endet, können Sie alle Kontexte bereinigen, indem Sie den Socket schließen:
Vollständiges Beispiel für einen Gesprächsagenten
Voraussetzungen
- Ein ElevenLabs-Konto mit API-Schlüssel (erfahren Sie, wie Sie Ihren API-Schlüssel finden).
- Python oder Node.js (oder eine andere JavaScript-Runtime), installiert auf Ihrem Computer.
- Kenntnisse der WebSocket-Kommunikation. Für grundlegende Konzepte empfehlen wir unseren Leitfaden zum standardmäßigen WebSocket-Streaming.
Einrichtung
Installieren Sie die erforderlichen Abhängigkeiten für die von Ihnen gewählte Sprache:
Erstellen Sie im Verzeichnis Ihres Projekts eine .env-Datei, um Ihren API-Schlüssel zu speichern: