System-Tools

Aktualisieren Sie den internen Zustand von Gesprächen ohne externe Anfragen.

Systemtools ermöglichen Ihrem Assistenten, den internen Zustand einer Unterhaltung zu aktualisieren. Im Gegensatz zu Webhook-Tools oder Client-Tools führen Systemtools keine externen API-Aufrufe aus und lösen keine clientseitigen Funktionen aus – sie ändern den internen Zustand der Unterhaltung, ohne externe Aufrufe vorzunehmen.

Überblick

Einige Anwendungen erfordern, dass Agents den Ablauf oder Zustand einer Unterhaltung steuern. Systemtools bieten diese Möglichkeit, indem sie dem Assistenten erlauben, Aktionen zum Zustand des Anrufs auszuführen, die keine Kommunikation mit externen Servern oder dem Client erfordern.

Verfügbare Systemtools

Implementierung

Wenn Sie einen Agent über die API erstellen, können Sie Systemtools zu Ihrer Agent-Konfiguration hinzufügen. So implementieren Sie die Tools zum Beenden von Anrufen und zur Spracherkennung:

Integration eines benutzerdefinierten LLM

Wenn Sie ein benutzerdefiniertes LLM mit ElevenLabs Agents verwenden, werden Systemtools als Funktionsdefinitionen bereitgestellt, die Ihr LLM aufrufen kann. Jedes Systemtool hat spezifische Parameter und Auslösebedingungen:

Verfügbare Systemtools

Zweck: Unterhaltungen automatisch beenden, wenn die entsprechenden Bedingungen erfüllt sind.

Auslösebedingungen: Das LLM sollte dieses Tool aufrufen, wenn:

  • die Hauptaufgabe abgeschlossen ist und der Nutzer zufrieden ist
  • die Unterhaltung mit gegenseitigem Einverständnis zu einem natürlichen Ende gekommen ist
  • der Nutzer ausdrücklich angibt, dass er die Unterhaltung beenden möchte

Parameter:

  • reason (string, erforderlich): Der Grund für die Beendigung des Anrufs
  • message (string, optional): Eine Abschiedsnachricht, die dem Nutzer vor dem Beenden des Anrufs gesendet wird

Format des Funktionsaufrufs:

{
"type": "function",
"function": {
"name": "end_call",
"arguments": "{\"reason\": \"Task completed successfully\", \"message\": \"Thank you for using our service. Have a great day!\"}"
}
}

Implementierung: Konfigurieren Sie das Tool in den Agent-Einstellungen als System-Tool. Das LLM erhält detaillierte Anweisungen dazu, wann diese Funktion aufgerufen werden soll.

Mehr erfahren: Tool zum Beenden von Anrufen

Zweck: Während Gesprächen automatisch zur erkannten Sprache des Nutzers wechseln.

Auslösebedingungen: Das LLM sollte dieses Tool aufrufen, wenn:

  • Der Nutzer eine andere Sprache als die aktuelle Gesprächssprache spricht
  • Der Nutzer ausdrücklich einen Sprachwechsel anfordert
  • Das Gespräch Unterstützung für mehrere Sprachen benötigt

Parameter:

  • reason (String, erforderlich): Der Grund für den Sprachwechsel
  • language (String, erforderlich): Der Sprachcode, zu dem gewechselt werden soll (muss in der Liste der unterstützten Sprachen enthalten sein)

Format des Funktionsaufrufs:

{
"type": "function",
"function": {
"name": "language_detection",
"arguments": "{\"reason\": \"User requested Spanish\", \"language\": \"es\"}"
}
}

Implementierung: Konfigurieren Sie unterstützte Sprachen in den Agent-Einstellungen und fügen Sie das Systemtool zur Spracherkennung hinzu. Der Agent passt Stimme und Antworten automatisch an die erkannten Sprachen an.

Mehr erfahren: Tool zur Spracherkennung

Zweck: Überträgt Gespräche je nach Nutzerbedarf zwischen spezialisierten KI-Agenten.

Auslösebedingungen: Das LLM sollte dieses Tool aufrufen, wenn:

  • Die Nutzeranfrage spezialisiertes Wissen oder andere Agentenfunktionen erfordert
  • Der aktuelle Agent die Anfrage nicht angemessen bearbeiten kann
  • Der Gesprächsverlauf auf den Bedarf eines anderen Agententyps hinweist

Parameter:

  • reason (string, optional): Der Grund für die Agentenübergabe
  • agent_number (integer, erforderlich): Nullbasierte Nummer des Zielagenten (basierend auf konfigurierten Übergaberegeln)

Format des Funktionsaufrufs:

{
"type": "function",
"function": {
"name": "transfer_to_agent",
"arguments": "{\"reason\": \"User needs billing support\", \"agent_number\": 0}"
}
}

Implementierung: Definieren Sie Übergaberegeln, die Bedingungen bestimmten Agenten-IDs zuordnen. Konfigurieren Sie, an welche Agenten der aktuelle Agent übergeben kann. Agenten werden in der Übergabekonfiguration durch nullbasierte Nummern referenziert.

Mehr erfahren: Tool zur Agent-Weiterleitung

Zweck: Unterhaltungen nahtlos an menschliche Mitarbeiter übergeben, wenn KI-Unterstützung nicht ausreicht.

Auslösebedingungen: Das LLM sollte dieses Tool aufrufen, wenn:

  • komplexe Probleme menschliches Urteilsvermögen erfordern
  • der Nutzer ausdrücklich menschliche Unterstützung anfordert
  • die KI bei der spezifischen Anfrage an die Grenzen ihrer Fähigkeiten stößt
  • Eskalationsprotokolle ausgelöst werden

Parameter:

  • reason (string, optional): Der Grund für die Übergabe
  • transfer_number (string, erforderlich): Die Telefonnummer für die Weiterleitung (muss mit den konfigurierten Nummern übereinstimmen)
  • client_message (string, erforderlich): Nachricht, die dem Kunden während der Wartezeit auf die Weiterleitung vorgelesen wird
  • agent_message (string, erforderlich): Nachricht für den menschlichen Mitarbeiter, der den Anruf entgegennimmt

Format des Funktionsaufrufs:

{
"type": "function",
"function": {
"name": "transfer_to_number",
"arguments": "{\"reason\": \"Complex billing issue\", \"transfer_number\": \"+15551234567\", \"client_message\": \"I'm transferring you to a billing specialist who can help with your account.\", \"agent_message\": \"Customer has a complex billing dispute about order #12345 from last month.\"}"
}
}

Implementierung: Konfigurieren Sie Telefonnummern und Bedingungen für Weiterleitungen. Definieren Sie Nachrichten für Kunden und für den menschlichen Mitarbeiter, der den Anruf entgegennimmt. Funktioniert mit Twilio und SIP-Trunking.

Mehr erfahren: Tool zum Weiterleiten an eine Nummer

Zweck: Dem Agenten erlauben, zu pausieren und ohne zu sprechen auf Nutzereingaben zu warten.

Auslösebedingungen: Das LLM sollte dieses Tool aufrufen, wenn:

  • Der Nutzer angibt, dass er einen Moment braucht („Geben Sie mir eine Sekunde“, „Lassen Sie mich nachdenken“)
  • Der Nutzer eine Pause im Gesprächsablauf anfordert
  • Der Agent erkennt, dass der Nutzer Zeit braucht, um Informationen zu verarbeiten

Parameter:

  • reason (String, optional): Freitext-Grund, der erklärt, warum die Pause nötig ist

Format des Funktionsaufrufs:

{
"type": "function",
"function": {
"name": "skip_turn",
"arguments": "{\"reason\": \"User requested time to think\"}"
}
}

Implementierung: Keine zusätzliche Konfiguration erforderlich. Das Tool signalisiert dem Agenten einfach, still zu bleiben, bis der Nutzer erneut spricht.

Mehr erfahren: Tool zum Überspringen eines Zugs

Parameter:

  • reason (String, optional): Der Grund für das Abspielen der DTMF-Töne (z. B. „Durchwahl auswählen“, „PIN eingeben“)
  • dtmf_tones (String, erforderlich): Die abzuspielende DTMF-Sequenz. Gültige Zeichen: 0-9, *, #, w (0,5 s Pause), W (1 s Pause)

Format des Funktionsaufrufs:

{
"type": "function",
"function": {
"name": "play_keypad_touch_tone",
"arguments": "{"reason": "Navigating to customer service", "dtmf_tones": "2"}"
}
}

Mehr erfahren: Tool zum Abspielen von Tastentönen

Parameter:

  • reason (string, erforderlich): Der Grund für die Erkennung einer Mailbox (z. B. „automatische Begrüßung erkannt“, „keine menschliche Antwort“)

Format des Funktionsaufrufs:

{
"type": "function",
"function": {
"name": "voicemail_detection",
"arguments": "{\"reason\": \"Automated greeting detected with request to leave message\"}"
}
}

Mehr erfahren: Tool zur Mailbox-Erkennung

Zweck: Ermöglicht dem Agenten, eine oder mehrere dynamische Variablen anhand der Konversation zu aktualisieren, ohne eine externe API aufzurufen.

Auslösebedingungen: Das LLM sollte dieses Tool aufrufen, wenn:

  • Die Konversation Informationen liefert, die gespeichert werden sollten, z. B. ein Eskalationsflag, eine ausgewählte Option oder ein vom Nutzer angegebener Wert
  • Eine konfigurierte Statusaktualisierung von einem Wert abhängt, den das LLM aus der Konversation bewerten oder extrahieren muss

Parameter:

Die Parameter der Funktion hängen davon ab, wie das Tool konfiguriert ist. Jede konfigurierte Statusaktualisierung, die einen vom LLM extrahierten Wert verwendet, fügt dem Schema eine Eigenschaft hinzu. Sie wird nach der dynamischen Variablen dieser Aktualisierung benannt und als string, number oder boolean typisiert. Statusaktualisierungen, die nur aus Konstanten oder anderen dynamischen Variablen erstellt werden, fügen keine Parameter hinzu.

Format des Funktionsaufrufs:

{
"type": "function",
"function": {
"name": "update_state",
"arguments": "{\"should_escalate\": true}"
}
}

Implementierung: Der Agent wertet jeden konfigurierten Ausdruck anhand der extrahierten Parameter und der aktuellen dynamischen Variablen der Konversation aus und weist die Ergebnisse den entsprechenden dynamischen Variablen zu. Es wird keine externe Anfrage gestellt.

Mehr erfahren: Tool zum Aktualisieren des Zustands

from elevenlabs import AgentConfig, ConversationalConfig, ElevenLabs
elevenlabs = ElevenLabs(api_key="YOUR_API_KEY")
# Each system tool is keyed by name under built_in_tools.
# Leave "description" blank to use the default, tool-specific prompt.
response = elevenlabs.conversational_ai.agents.create(
conversation_config=ConversationalConfig(
agent=AgentConfig(
prompt={
"built_in_tools": {
"end_call": {
"type": "system",
"name": "end_call",
"description": "",
"params": {"system_tool_type": "end_call"},
},
"language_detection": {
"type": "system",
"name": "language_detection",
"description": "",
"params": {"system_tool_type": "language_detection"},
},
}
},
),
),
)

FAQ

Ja, Systemtools können im selben Assistenten zusammen mit Webhook-Tools und Client-Tools verwendet werden. So entsteht ein umfassender Funktionsumfang, der die Verwaltung interner Zustände mit externen Interaktionen kombiniert.