> This is a page from the ElevenLabs documentation. For a complete page index, fetch https://elevenlabs.io/docs/llms.txt. For the full documentation in a single file, fetch https://elevenlabs.io/docs/llms-full.txt.

# Systemverktyg

**Systemverktyg** gör det möjligt för din assistent att uppdatera ett samtals interna tillstånd. Till skillnad från [webhook-verktyg](/docs/sv/eleven-agents/customization/tools/webhook-tools) eller [klientverktyg](/docs/sv/eleven-agents/customization/tools/client-tools) 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

#### [Avsluta samtal](/docs/sv/eleven-agents/customization/tools/system-tools/end-call)

Låt agenten automatiskt avsluta ett samtal när lämpliga villkor är uppfyllda.

#### [Språkidentifiering](/docs/sv/eleven-agents/customization/tools/system-tools/language-detection)

Låt agenten automatiskt byta till användarens språk under samtal.

#### [Agentöverföring](/docs/sv/eleven-agents/customization/tools/system-tools/agent-transfer)

Överför smidigt samtal mellan AI-agenter utifrån definierade villkor.

#### [Överför till nummer](/docs/sv/eleven-agents/customization/tools/system-tools/transfer-to-number)

Överför samtal till externa telefonnummer eller SIP-URI:er.

#### [Hoppa över tur](/docs/sv/eleven-agents/customization/tools/system-tools/skip-turn)

Låt agenten hoppa över sina turer om LLM:et upptäcker att agenten inte ska tala än.

#### [Spela tonsignal från knappsats](/docs/sv/eleven-agents/customization/tools/system-tools/play-keypad-touch-tone)

Låt agenter spela DTMF-toner för att interagera med automatiserade telefonsystem och navigera i menyer.

#### [Telefonsvararidentifiering](/docs/sv/eleven-agents/customization/tools/system-tools/voicemail-detection)

Låt agenter automatiskt identifiera telefonsvararsystem och valfritt lämna meddelanden.

#### [Uppdatera tillstånd](/docs/sv/eleven-agents/customization/tools/system-tools/update-state)

Låt agenten uppdatera dynamiska variabler mitt i samtalet med hjälp av uttryck.

## 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

#### Avsluta samtal

**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**:

```json
{
  "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](/docs/sv/eleven-agents/customization/tools/system-tools/end-call)

#### Språkidentifiering

**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**:

```json
{
  "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](/docs/sv/eleven-agents/customization/tools/system-tools/language-detection)

#### Agentöverföring

**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**:

```json
{
  "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](/docs/sv/eleven-agents/customization/tools/system-tools/agent-transfer)

#### Överför till nummer

**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**:

```json
{
  "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](/docs/sv/eleven-agents/customization/tools/system-tools/transfer-to-number)

#### Hoppa över tur

**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**:

```json
{
  "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](/docs/sv/eleven-agents/customization/tools/system-tools/skip-turn)

#### Spela tonsignal från knappsats

**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**:

```json
{
  "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](/docs/sv/eleven-agents/customization/tools/system-tools/play-keypad-touch-tone)

#### Telefonsvararidentifiering

**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**:

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

Läs mer: [Verktyget Telefonsvararidentifiering](/docs/sv/eleven-agents/customization/tools/system-tools/voicemail-detection)

#### Uppdatera tillstånd

**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**:

```json
{
  "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](/docs/sv/eleven-agents/customization/tools/system-tools/update-state)

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

```javascript
import { ElevenLabsClient } from "@elevenlabs/elevenlabs-js";

const elevenlabs = new ElevenLabsClient({
  apiKey: "YOUR_API_KEY",
});

// Each system tool is keyed by name under builtInTools.
// Leave "description" blank to use the default, tool-specific prompt.
await elevenlabs.conversationalAi.agents.create({
  conversationConfig: {
    agent: {
      prompt: {
        builtInTools: {
          endCall: {
            type: "system",
            name: "end_call",
            description: "",
            params: { systemToolType: "end_call" },
          },
          languageDetection: {
            type: "system",
            name: "language_detection",
            description: "",
            params: { systemToolType: "language_detection" },
          },
        },
      },
    },
  },
});
```

## Vanliga frågor

#### Kan systemverktyg kombineras med andra verktygstyper?

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.

```
```