React SDK
ElevenAgents SDK: Stellen Sie individuelle, interaktive Sprach-Agents in wenigen Minuten bereit.
Eine Erklärung der Funktionsweise von ElevenAgents finden Sie in der ElevenAgents-Übersicht.
Installation
Installieren Sie das Paket über einen Paketmanager in Ihrem Projekt.
Upgrade von einer früheren Version? Führen Sie npx skills add elevenlabs/packages aus, um den
Skill elevenlabs:sdk-migration für Ihren KI-Coding-Agent zu installieren. Er automatisiert Änderungen an Importen,
die Einbettung mit ConversationProvider und API-Updates.
@elevenlabs/react exportiert alles aus @elevenlabs/client erneut. Sie müssen daher nicht
beide Pakete installieren.
Verwendung
Hier ist ein minimales funktionierendes Beispiel, das eine Verbindung zu einem Agenten herstellt und Nutzern ermöglicht, eine Sprachunterhaltung zu starten und zu beenden:
In den folgenden Abschnitten wird jeder Teil im Detail erklärt.
ConversationProvider
Alle Conversation-Hooks müssen innerhalb eines ConversationProvider verwendet werden. Umschließen Sie Ihre App (oder den relevanten Teilbaum) mit diesem Provider.
Provider-Props
Der Provider akzeptiert dieselben Optionen wie useConversation – einschließlich Callbacks, Client-Tools, Überschreibungen und Serverstandort. So können Sie sie auf Provider-Ebene statt in jedem Hook-Consumer konfigurieren.
Gesteuerter Stummschaltungsstatus
Der Provider unterstützt die Props isMuted und onMutedChange für die gesteuerte Verwaltung des Stummschaltungsstatus. So können Sie den Status extern speichern, beispielsweise über mehrere Sitzungen hinweg.
useConversation
Ein praktischer React-Hook, der alle granularen Hooks in einem einzelnen Rückgabewert zusammenfasst. Erfordert einen übergeordneten ConversationProvider.
Für eine bessere Render-Performance sollten Sie stattdessen die granularen Hooks verwenden.
useConversation löst bei jeder Statusänderung ein erneutes Rendern aus, während die granularen Hooks nur
erneut rendern, wenn sich ihr jeweiliger Statusbereich ändert.
Unterhaltung initialisieren
Beachten Sie, dass ElevenAgents für Sprachunterhaltungen Zugriff auf das Mikrofon benötigt. Erklären Sie dies in der Benutzeroberfläche Ihrer App und ermöglichen Sie den Zugriff, bevor die Unterhaltung beginnt.
Optionen
Der Hook kann optional mit Optionen initialisiert werden. Diese können auch auf Ebene von ConversationProvider übergeben werden.
Zu den Optionen gehören:
- clientTools – Objektdefinition für Client-Tools, die vom Agenten aufgerufen werden können. Details finden Sie unten.
- overrides – Objektdefinition für Überschreibungen der Unterhaltungseinstellungen. Details finden Sie unten.
- textOnly – gibt an, ob die Unterhaltung im reinen Textmodus ausgeführt werden soll. Details finden Sie unten.
- serverLocation – gibt den Serverstandort an (
"us","eu-residency","in-residency","global"). Standard ist"us".
Überblick über Callbacks
- onConnect – Handler, der aufgerufen wird, wenn die Verbindungs zur Unterhaltung hergestellt ist.
- onDisconnect – Handler, der aufgerufen wird, wenn die Verbindung zur Unterhaltung beendet wird.
- onMessage – Handler, der aufgerufen wird, wenn eine neue Nachricht eingeht. Dabei kann es sich um vorläufige oder finale Transkriptionen der Nutzersprache, von einem LLM erzeugte Antworten oder Debug-Nachrichten handeln, wenn eine Debug-Option aktiviert ist.
- onError – Handler, der aufgerufen wird, wenn ein Fehler auftritt.
- onAudio – Handler, der aufgerufen wird, wenn Audiodaten eingehen.
- onModeChange – Handler, der aufgerufen wird, wenn sich der Unterhaltungsmodus ändert (Sprechen/Zuhören).
- onStatusChange – Handler, der aufgerufen wird, wenn sich der Verbindungsstatus ändert.
- onCanSendFeedbackChange – Handler, der aufgerufen wird, wenn sich die Möglichkeit zum Senden von Feedback ändert.
- onDebug – Handler, der aufgerufen wird, wenn Debuginformationen verfügbar sind.
- onUnhandledClientToolCall – Handler, der aufgerufen wird, wenn ein nicht behandelter Aufruf eines Client-Tools auftritt.
- onVadScore – Handler, der aufgerufen wird, wenn sich der Wert der Spracherkennung ändert.
- onAudioAlignment – Handler, der aufgerufen wird, wenn Audio-Alignment-Daten eingehen und Timing-Informationen auf Zeichenebene für die Sprache des Agenten bereitstellen.
- onAgentChatResponsePart – Handler, der den Antworttext des Agenten während seiner Generierung als Start-, Delta- und Stopp-Ereignisse erhält. Wird im reinen Textmodus immer gesendet. Aktivieren Sie für Sprachunterhaltungen
agent_chat_response_partin derclient_events-Konfiguration des Agenten.
Client-Tools
Mit Client-Tools kann der Agent clientseitige Funktionen aufrufen. Damit können Sie Aktionen im Client auslösen, etwa ein Modal öffnen oder im Namen des Nutzers einen API-Aufruf durchführen.
Die Definition der Client-Tools ist ein Objekt mit Funktionen und muss Ihrer Konfiguration in der ElevenLabs-Benutzeroberfläche entsprechen. Dort können Sie verschiedene Tools benennen und beschreiben sowie die vom Agenten übergebenen Parameter einrichten.
Wenn die Funktion einen Wert zurückgibt, wird er als Antwort an den Agenten übergeben.
Das Tool muss in der ElevenLabs-Benutzeroberfläche explizit so eingestellt werden, dass es die Unterhaltung blockiert, damit der Agent auf die Antwort warten und darauf reagieren kann. Andernfalls geht der Agent von Erfolg aus und setzt die Unterhaltung fort.
Einen stärker an React orientierten Ansatz zum Registrieren von Client-Tools finden Sie unter useConversationClientTool.
Überschreibungen der Unterhaltung
Sie können verschiedene Einstellungen der Unterhaltung überschreiben und sie anhand anderer Nutzerinteraktionen dynamisch festlegen.
Wir unterstützen das Überschreiben verschiedener Einstellungen. Diese Einstellungen sind optional und können verwendet werden, um das Unterhaltungserlebnis anzupassen.
Die folgenden Einstellungen sind verfügbar:
Nur Text
Wenn Ihr Agent für den reinen Textmodus konfiguriert ist, also keine Audionachrichten sendet oder empfängt, können Sie dieses Flag verwenden, um eine schlankere Version der Unterhaltung zu nutzen. In diesem Fall werden Nutzer nicht nach Mikrofonberechtigungen gefragt und es wird kein Audiokontext erstellt.
Gesteuerter Status
Sie können bestimmte Aspekte des Unterhaltungsstatus direkt über die Hook-Optionen steuern:
Datenresidenz
Sie können festlegen, mit welcher ElevenLabs-Serverregion eine Verbindung hergestellt werden soll. Weitere Informationen finden Sie im Leitfaden zur Datenresidenz.
Methoden
startSession
Die Methode startSession stellt die Verbindung her und beginnt, über das Mikrofon mit dem ElevenLabs-Agents-Agenten zu kommunizieren. Die Methode akzeptiert ein Optionsobjekt, in dem signedUrl, conversationToken oder agentId erforderlich ist.
Die Agent-ID erhalten Sie über die ElevenLabs-Benutzeroberfläche.
Wir empfehlen außerdem, Ihre eigenen Endnutzer-IDs zu übergeben, um Unterhaltungen Ihren Nutzern zuzuordnen.
Der Verbindungstyp wird anhand des Unterhaltungsmodus automatisch abgeleitet. Sprachunterhaltungen
verwenden WebRTC und reine Textunterhaltungen standardmäßig WebSocket. Bei Bedarf können Sie weiterhin
connectionType explizit angeben.
Für öffentliche Agenten, also Agenten ohne aktivierte Authentifizierung, ist nur agentId erforderlich.
Wenn die Unterhaltung eine Autorisierung erfordert, verwenden Sie die REST API, um signierte Links für eine WebSocket-Verbindung oder ein Unterhaltungstoken für eine WebRTC-Verbindung zu generieren.
startSession gibt ein Promise zurück, das zu einer conversationId aufgelöst wird. Der Wert ist eine global eindeutige Unterhaltungs-ID, mit der Sie separate Unterhaltungen identifizieren können.
WebSocket-Verbindung
WebRTC-Verbindung
endSession
Eine Methode zum manuellen Beenden der Unterhaltung. Die Methode trennt die Verbindung und beendet die Unterhaltung.
setVolume
Legt die Ausgabelautstärke der Unterhaltung fest. Akzeptiert ein Objekt mit einem Feld volume zwischen 0 und 1.
sendUserMessage
Sendet eine Textnachricht an den Agenten.
Kann verwendet werden, damit Nutzer die Nachricht eingeben können, statt das Mikrofon zu verwenden. Anders als sendContextualUpdate wird dies als Nutzernachricht behandelt und fordert den Agenten auf, seinen Zug in der Unterhaltung zu machen.
sendContextualUpdate
Sendet Kontextinformationen an den Agenten, die keine Antwort auslösen.
sendFeedback
Geben Sie Feedback zur Qualität der Unterhaltung. Dies hilft, die Leistung des Agenten zu verbessern.
sendUserActivity
Benachrichtigt den Agenten über Nutzeraktivität, um Unterbrechungen zu verhindern. Nützlich, wenn Nutzer die App aktiv verwenden und der Agent das Sprechen pausieren soll, etwa wenn Nutzer in einem Chat tippen.
Der Agent pausiert nach Erhalt dieses Signals für etwa 2 Sekunden.
changeInputDevice
Wechselt während einer aktiven Sprachunterhaltung das Audioeingabegerät. Diese Methode ist nur für Sprachunterhaltungen verfügbar.
changeOutputDevice
Wechselt während einer aktiven Sprachunterhaltung das Audioausgabegerät. Diese Methode ist nur für Sprachunterhaltungen verfügbar.
Der Gerätewechsel funktioniert nur bei Sprachunterhaltungen. Wenn keine spezifische deviceId angegeben ist,
verwendet der Browser seine Standardgeräteauswahl. Sie können verfügbare Geräte mit der
API MediaDevices.enumerateDevices()
auflisten.
getId
Gibt die ID der aktuellen Unterhaltung zurück.
getInputVolume / getOutputVolume
Methoden, die die aktuellen Ein- und Ausgabelautstärken zurückgeben (Skala von 0 bis 1).
getInputByteFrequencyData / getOutputByteFrequencyData
Methoden, die Uint8Arrays mit den aktuellen Eingabe-/Ausgabefrequenzdaten zurückgeben. Weitere Informationen finden Sie unter AnalyserNode.getByteFrequencyData.
Diese Methoden sind nur für Sprachunterhaltungen verfügbar. Im WebRTC-Modus ist Audio fest auf
pcm_48000 eingestellt. Daher kann eine Visualisierung mit den zurückgegebenen Daten andere Muster zeigen
als bei WebSocket-Verbindungen.
sendMCPToolApprovalResult
Sendet das Genehmigungsergebnis für MCP-Tool-Aufrufe (Model Context Protocol).
Rückgabewerte
Zusätzlich zu den oben genannten Methoden gibt useConversation folgenden reaktiven Status zurück:
- status – der aktuelle Verbindungsstatus (
"disconnected","connecting","connected"). - isSpeaking – gibt an, ob der Agent gerade spricht.
- isListening – gibt an, ob der Agent gerade zuhört.
- mode – der aktuelle Unterhaltungsmodus (
"speaking"oder"listening"). - isMuted – gibt an, ob das Mikrofon gerade stummgeschaltet ist.
- setMuted – Funktion zum Stummschalten bzw. Aktivieren des Mikrofons.
- canSendFeedback – gibt an, ob Feedback für die aktuelle Unterhaltung gesendet werden kann.
- message – die neueste Nachricht aus der Unterhaltung.
Granulare Hooks
Für eine bessere Render-Performance verwenden Sie diese Hooks statt useConversation. Jeder Hook abonniert nur seinen jeweiligen Statusbereich, sodass Komponenten nur erneut rendern, wenn sich die von ihnen verwendeten Daten ändern.
Alle granularen Hooks erfordern einen übergeordneten ConversationProvider.
useConversationControls
Gibt Aktionsmethoden zum Steuern der Unterhaltung zurück. Dieser Hook führt nicht zu erneutem Rendern, da er nur stabile Funktionsreferenzen bereitstellt.
useConversationStatus
Gibt den aktuellen Verbindungsstatus und eine optionale Statusmeldung zurück.
useConversationInput
Gibt den Stummschaltungsstatus und eine Setter-Funktion zum Umschalten des Mikrofons zurück.
useConversationMode
Gibt den Sprech-/Zuhörstatus des Agenten zurück.
useConversationFeedback
Gibt die Verfügbarkeit von Feedback und eine Methode zum Senden von Feedback zurück.
useRawConversation
Gibt die unverarbeitete Unterhaltungsinstanz zurück. Dies ist ein Ausweg für erweiterte Anwendungsfälle, in denen Sie direkten Zugriff auf das zugrunde liegende Objekt VoiceConversation oder TextConversation benötigen.
useConversationClientTool
Ein Hook zum dynamischen Registrieren von Client-Tools aus React-Komponenten. Tools werden automatisch deregistriert, wenn die Komponente ausgehängt wird.
Das ist nützlich, wenn der Handler eines Tools Zugriff auf Komponentenstatus oder Props benötigt, die auf Provider-Ebene nicht verfügbar sind.
Der Hook verwendet immer den aktuellen Closure-Wert des Handlers. Sie müssen sich daher keine Gedanken über veralteten Status machen.