Skip to navigation

Systeemtools

Werk de interne status van gesprekken bij zonder externe requests.

Systeemtools stellen je assistent in staat de interne status van een gesprek bij te werken. Anders dan webhooktools of clienttools voeren systeemtools geen externe API-aanroepen uit en activeren ze geen client-side functies. Ze wijzigen de interne status van het gesprek zonder externe aanroepen te doen.

Overzicht

Voor sommige applicaties moeten agents het verloop of de status van een gesprek kunnen beheren. Systeemtools bieden deze mogelijkheid doordat de assistent acties kan uitvoeren die betrekking hebben op de status van het gesprek en waarvoor geen communicatie met externe servers of de client nodig is.

Beschikbare systeemtools

Implementatie

Wanneer je via de API een agent maakt, kun je systeemtools aan je agentconfiguratie toevoegen. Zo implementeer je zowel de tools voor gesprek beëindigen als taaldetectie:

Aangepaste LLM-integratie

Wanneer je een aangepaste LLM gebruikt met ElevenLabs-agents, worden systeemtools beschikbaar gesteld als functiedefinities die je LLM kan aanroepen. Elke systeemtool heeft specifieke parameters en activeringsvoorwaarden:

Beschikbare systeemtools

Doel: Gesprekken automatisch beëindigen wanneer aan de juiste voorwaarden is voldaan.

Triggervoorwaarden: De LLM moet deze tool aanroepen wanneer:

  • De hoofdtaak is voltooid en de gebruiker tevreden is
  • Het gesprek op natuurlijke wijze is afgerond en beide partijen het eens zijn
  • De gebruiker expliciet aangeeft het gesprek te willen beëindigen

Parameters:

  • reason (string, vereist): De reden voor het beëindigen van het gesprek
  • message (string, optioneel): Een afscheidsbericht dat je naar de gebruiker stuurt voordat je het gesprek beëindigt

Indeling van de functieaanroep:

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

Implementatie: Configureer dit als een system tool in de instellingen van je agent. De LLM ontvangt gedetailleerde instructies over wanneer deze functie moet worden aangeroepen.

Meer informatie: Tool voor gesprek beëindigen

Doel: Tijdens gesprekken automatisch overschakelen naar de gedetecteerde taal van de gebruiker.

Triggervoorwaarden: De LLM moet deze tool aanroepen wanneer:

  • De gebruiker een andere taal spreekt dan de huidige gesprekstaal
  • De gebruiker expliciet vraagt om van taal te wisselen
  • Ondersteuning voor meerdere talen nodig is voor het gesprek

Parameters:

  • reason (string, verplicht): De reden voor de taalwissel
  • language (string, verplicht): De taalcode om naar over te schakelen (moet in de lijst met ondersteunde talen staan)

Indeling voor functieaanroepen:

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

Implementatie: Configureer ondersteunde talen in de agentinstellingen en voeg de systeemtool voor taaldetectie toe. De agent schakelt automatisch van stem en antwoorden om overeen te komen met gedetecteerde talen.

Meer informatie: Tool voor taaldetectie

Doel: Gesprekken overdragen tussen gespecialiseerde AI-agents op basis van gebruikersbehoeften.

Triggervoorwaarden: De LLM moet deze tool aanroepen wanneer:

  • Het verzoek van de gebruiker gespecialiseerde kennis of andere agentmogelijkheden vereist
  • De huidige agent de vraag niet goed genoeg kan afhandelen
  • De gespreksstroom aangeeft dat een ander agenttype nodig is

Parameters:

  • reason (string, optioneel): De reden voor de agentoverdracht
  • agent_number (integer, vereist): Nummer vanaf nul van de agent waarnaar moet worden overgedragen (op basis van geconfigureerde overdrachtsregels)

Indeling van functieaanroep:

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

Implementatie: Definieer overdrachtsregels die voorwaarden aan specifieke agent-ID’s koppelen. Configureer naar welke agents de huidige agent kan overdragen. Agents worden in de overdrachtsconfiguratie aangeduid met nummers vanaf nul.

Meer informatie: Tool voor agentoverdracht

Doel: Gesprekken naadloos doorverbinden met menselijke medewerkers wanneer AI-ondersteuning niet toereikend is.

Triggervoorwaarden: De LLM moet deze tool aanroepen wanneer:

  • Er complexe kwesties zijn die menselijk oordeel vereisen
  • De gebruiker expliciet om menselijke hulp vraagt
  • De AI voor het specifieke verzoek de grenzen van zijn mogelijkheden bereikt
  • Escalatieprotocollen worden geactiveerd

Parameters:

  • reason (string, optioneel): De reden voor de doorverbinding
  • transfer_number (string, vereist): Het telefoonnummer waarnaar wordt doorverbonden (moet overeenkomen met geconfigureerde nummers)
  • client_message (string, vereist): Bericht dat aan de klant wordt voorgelezen tijdens het wachten op de doorverbinding
  • agent_message (string, vereist): Bericht voor de menselijke medewerker die het gesprek ontvangt

Indeling van de functieaanroep:

{
"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.\"}"
}
}

Implementatie: Configureer telefoonnummers en voorwaarden voor doorverbinden. Definieer berichten voor zowel de klant als de menselijke medewerker die het gesprek ontvangt. Werkt met zowel Twilio als SIP trunking.

Meer informatie: Tool voor doorverbinden naar nummer

Doel: De agent toestaan te pauzeren en op invoer van de gebruiker te wachten zonder te spreken.

Triggervoorwaarden: De LLM moet deze tool aanroepen wanneer:

  • De gebruiker aangeeft een moment nodig te hebben (“Geef me even”, “Laat me nadenken”)
  • De gebruiker om een pauze in de gespreksstroom vraagt
  • De agent detecteert dat de gebruiker tijd nodig heeft om informatie te verwerken

Parameters:

  • reason (string, optioneel): Vrije reden die uitlegt waarom de pauze nodig is

Indeling voor functieaanroepen:

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

Implementatie: Geen aanvullende configuratie nodig. De tool geeft de agent eenvoudig het signaal om stil te blijven totdat de gebruiker weer spreekt.

Meer informatie: Tool voor beurt overslaan

Parameters:

  • reason (string, optioneel): De reden voor het afspelen van de DTMF-tonen (bijv. “naar een extensie navigeren”, “pincode invoeren”)
  • dtmf_tones (string, verplicht): De af te spelen DTMF-reeks. Geldige tekens: 0-9, *, #, w (pauze van 0,5 s), W (pauze van 1 s)

Indeling voor functieaanroepen:

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

Meer informatie: Tool voor toetsbloktoon afspelen

Parameters:

  • reason (string, verplicht): De reden voor het detecteren van voicemail (bijvoorbeeld “geautomatiseerde begroeting gedetecteerd”, “geen menselijke reactie”)

Indeling van functieaanroep:

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

Meer informatie: Tool voor voicemaildetectie

Doel: Laat de agent een of meer dynamische variabelen bijwerken op basis van het gesprek, zonder een externe API aan te roepen.

Triggervoorwaarden: De LLM moet deze tool aanroepen wanneer:

  • Het gesprek informatie bevat die moet worden vastgelegd (bijvoorbeeld een escalatievlag, een gekozen optie of een waarde die de gebruiker heeft opgegeven)
  • Een geconfigureerde statusupdate afhankelijk is van een waarde die de LLM uit het gesprek moet beoordelen of extraheren

Parameters:

De parameters van de functie zijn afhankelijk van hoe de tool is geconfigureerd. Elke geconfigureerde statusupdate die een door een LLM geëxtraheerde waarde gebruikt, voegt één eigenschap toe aan het schema. Deze eigenschap is vernoemd naar de dynamische variabele van die update en heeft het type string, number of boolean. Statusupdates die alleen uit constanten of andere dynamische variabelen zijn opgebouwd, voegen geen parameters toe.

Indeling van functieaanroep:

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

Implementatie: De agent evalueert elke geconfigureerde expressie met de geëxtraheerde parameters en de huidige dynamische variabelen van het gesprek, en wijst de resultaten vervolgens toe aan de bijbehorende dynamische variabelen. Er wordt geen externe request gedaan.

Meer informatie: Tool voor status bijwerken

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"},
},
}
},
),
),
)

Veelgestelde vragen

Ja, systeemtools kunnen in dezelfde assistent worden gebruikt naast webhooktools en clienttools. Dit maakt uitgebreide functionaliteit mogelijk die intern statusbeheer combineert met externe interacties.