Hoppa till navigering

Systemverktyg

Uppdatera samtalens interna tillstånd utan externa förfrågningar.

Systemverktyg gör det möjligt för din assistent att uppdatera ett samtals interna tillstånd. Till skillnad från webhook-verktyg eller klientverktyg gör systemverktyg inga externa API-anrop och utlöser inga funktioner på klientsidan – de ändrar samtalets interna tillstånd utan att göra externa anrop.

Översikt

Vissa applikationer kräver att agenter kan styra ett samtals flöde eller tillstånd. Systemverktyg ger den möjligheten genom att låta assistenten utföra åtgärder som rör samtalets tillstånd och som inte kräver kommunikation med externa servrar eller klienten.

Tillgängliga systemverktyg

Implementering

När du skapar en agent via API:t kan du lägga till systemverktyg i agentkonfigurationen. Så här implementerar du både verktygen för att avsluta samtal och språkidentifiering:

Anpassad LLM-integration

När du använder ett anpassat LLM med ElevenLabs-agenter exponeras systemverktyg som funktionsdefinitioner som ditt LLM kan anropa. Varje systemverktyg har specifika parametrar och utlösningsvillkor:

Tillgängliga systemverktyg

Syfte: Avsluta automatiskt samtal när lämpliga villkor är uppfyllda.

Utlösande villkor: LLM:en ska anropa det här verktyget när:

  • Huvuduppgiften har slutförts och användaren är nöjd
  • Samtalet har nått ett naturligt avslut i ömsesidig överenskommelse
  • Användaren uttryckligen vill avsluta samtalet

Parametrar:

  • reason (sträng, krävs): Anledningen till att avsluta samtalet
  • message (sträng, valfritt): Ett avskedsmeddelande att skicka till användaren innan samtalet avslutas

Format för funktionsanrop:

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

Implementering: Konfigurera som ett systemverktyg i agentinställningarna. LLM:en får detaljerade instruktioner om när funktionen ska anropas.

Läs mer: Verktyget Avsluta samtal

Syfte: Växla automatiskt till användarens identifierade språk under samtal.

Utlösande villkor: LLM:en ska anropa det här verktyget när:

  • Användaren talar ett annat språk än det aktuella samtalsspråket
  • Användaren uttryckligen ber om att byta språk
  • Samtalet behöver stöd för flera språk

Parametrar:

  • reason (sträng, krävs): Anledningen till språkbytet
  • language (sträng, krävs): Språkkoden att byta till (måste finnas i listan över språk som stöds)

Format för funktionsanrop:

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

Implementering: Konfigurera språk som stöds i agentinställningarna och lägg till systemverktyget för språkidentifiering. Agenten växlar automatiskt röst och svar så att de matchar de identifierade språken.

Läs mer: Verktyget Språkidentifiering

Syfte: Överför konversationer mellan specialiserade AI-agenter utifrån användarens behov.

Utlösarvillkor: LLM:en ska anropa det här verktyget när:

  • Användarens begäran kräver specialiserad kunskap eller andra agentfunktioner
  • Den aktuella agenten inte kan hantera frågan tillräckligt bra
  • Konversationsflödet visar att en annan agenttyp behövs

Parametrar:

  • reason (sträng, valfritt): Orsaken till agentöverföringen
  • agent_number (heltal, krävs): Nollindexerat nummer för agenten att överföra till (baserat på konfigurerade överföringsregler)

Format för funktionsanrop:

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

Implementering: Definiera överföringsregler som kopplar villkor till specifika agent-ID:n. Konfigurera vilka agenter den aktuella agenten kan överföra till. Agenter refereras med nollindexerade nummer i överföringskonfigurationen.

Läs mer: Verktyget Agentöverföring

Syfte: Överlämna sömlöst samtal till mänskliga operatörer när AI-hjälp inte räcker till.

Utlösande villkor: LLM:en ska anropa det här verktyget när:

  • Komplexa problem kräver mänskligt omdöme
  • Användaren uttryckligen ber om mänsklig hjälp
  • AI:n når gränsen för vad den kan göra för den specifika förfrågan
  • Eskaleringsprotokoll utlöses

Parametrar:

  • reason (sträng, valfritt): Anledningen till överföringen
  • transfer_number (sträng, krävs): Telefonnummer att överföra till (måste matcha konfigurerade nummer)
  • client_message (sträng, krävs): Meddelande som läses upp för kunden medan överföringen väntar
  • agent_message (sträng, krävs): Meddelande till den mänskliga operatör som tar emot samtalet

Format för funktionsanrop:

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

Implementering: Konfigurera telefonnummer och villkor för överföring. Definiera meddelanden för både kunden och den mänskliga operatör som tar emot samtalet. Fungerar med både Twilio och SIP trunking.

Läs mer: Verktyget Överför till nummer

Syfte: Gör det möjligt för agenten att pausa och vänta på användarens inmatning utan att prata.

Utlösande villkor: LLM:en ska anropa det här verktyget när:

  • Användaren visar att hen behöver en stund (“Ge mig en sekund”, “Låt mig tänka”)
  • Användaren begär en paus i samtalsflödet
  • Agenten upptäcker att användaren behöver tid för att bearbeta information

Parametrar:

  • reason (sträng, valfritt): Fritt formulerad anledning som förklarar varför pausen behövs

Format för funktionsanrop:

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

Implementering: Ingen ytterligare konfiguration behövs. Verktyget signalerar helt enkelt till agenten att förbli tyst tills användaren talar igen.

Läs mer: Verktyget Hoppa över tur

Parametrar:

  • reason (sträng, valfritt): Anledningen till att spela DTMF-tonerna (t.ex. “navigerar till anknytning”, “anger PIN-kod”)
  • dtmf_tones (sträng, krävs): DTMF-sekvensen som ska spelas upp. Giltiga tecken: 0-9, *, #, w (paus på 0,5 s), W (paus på 1 s)

Format för funktionsanrop:

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

Läs mer: Verktyget Spela tonsignal från knappsats

Parametrar:

  • reason (sträng, obligatorisk): Anledningen till att röstbrevlåda identifierades (t.ex. ”automatiskt hälsningsmeddelande identifierat”, ”inget mänskligt svar”)

Format för funktionsanrop:

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

Läs mer: Verktyget Telefonsvararidentifiering

Syfte: Låt agenten uppdatera en eller flera dynamiska variabler baserat på konversationen, utan att anropa ett externt API.

Utlösande villkor: LLM:en ska anropa det här verktyget när:

  • Konversationen innehåller information som bör registreras (t.ex. en eskaleringsflagga, ett valt alternativ eller ett värde som användaren har angett)
  • En konfigurerad tillståndsuppdatering beror på ett värde som LLM:en måste bedöma eller extrahera från konversationen

Parametrar:

Funktionens parametrar beror på hur verktyget är konfigurerat. Varje konfigurerad tillståndsuppdatering som använder ett värde extraherat av en LLM lägger till en egenskap i schemat. Egenskapen får namnet på uppdateringens dynamiska variabel och typen string, number eller boolean. Tillståndsuppdateringar som enbart bygger på konstanter eller andra dynamiska variabler lägger inte till några parametrar.

Format för funktionsanrop:

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

Implementering: Agenten utvärderar varje konfigurerat uttryck med de extraherade parametrarna och konversationens aktuella dynamiska variabler, och tilldelar sedan resultaten till motsvarande dynamiska variabler. Ingen extern begäran skickas.

Läs mer: Verktyget Uppdatera tillstånd

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

Vanliga frågor

Ja, systemverktyg kan användas tillsammans med webhook-verktyg och klientverktyg i samma assistent. Det ger omfattande funktionalitet som kombinerar hantering av internt tillstånd med externa interaktioner.