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

# Narzędzia systemowe

**Narzędzia systemowe** pozwalają asystentowi aktualizować wewnętrzny stan rozmowy. W przeciwieństwie do [narzędzi webhook](/docs/pl/eleven-agents/customization/tools/webhook-tools) i [narzędzi klienckich](/docs/pl/eleven-agents/customization/tools/client-tools) narzędzia systemowe nie wykonują zewnętrznych wywołań API ani nie uruchamiają funkcji po stronie klienta — zmieniają wewnętrzny stan rozmowy bez wykonywania zewnętrznych wywołań.

## Omówienie

Niektóre aplikacje wymagają, by agenci kontrolowali przebieg lub stan rozmowy.
Narzędzia systemowe umożliwiają asystentowi wykonywanie działań związanych ze stanem połączenia, które nie wymagają komunikacji z zewnętrznymi serwerami ani klientem.

### Dostępne narzędzia systemowe

#### [Zakończ rozmowę](/docs/pl/eleven-agents/customization/tools/system-tools/end-call)

Pozwól agentowi automatycznie zakończyć rozmowę, gdy zostaną spełnione odpowiednie warunki.

#### [Wykrywanie języka](/docs/pl/eleven-agents/customization/tools/system-tools/language-detection)

Pozwól agentowi automatycznie przełączać się na język użytkownika podczas rozmowy.

#### [Przekazanie do agenta](/docs/pl/eleven-agents/customization/tools/system-tools/agent-transfer)

Płynnie przekazuj rozmowy między agentami AI na podstawie określonych warunków.

#### [Przekazanie na numer](/docs/pl/eleven-agents/customization/tools/system-tools/transfer-to-number)

Przekazuj połączenia na zewnętrzne numery telefonów lub adresy URI SIP.

#### [Pomiń turę](/docs/pl/eleven-agents/customization/tools/system-tools/skip-turn)

Pozwól agentowi pomijać tury, jeśli LLM wykryje, że nie powinien jeszcze mówić.

#### [Odtwórz ton klawiatury](/docs/pl/eleven-agents/customization/tools/system-tools/play-keypad-touch-tone)

Pozwól agentom odtwarzać tony DTMF, by korzystać z automatycznych systemów telefonicznych i poruszać się po menu.

#### [Wykrywanie poczty głosowej](/docs/pl/eleven-agents/customization/tools/system-tools/voicemail-detection)

Pozwól agentom automatycznie wykrywać systemy poczty głosowej i opcjonalnie zostawiać wiadomości.

#### [Aktualizuj stan](/docs/pl/eleven-agents/customization/tools/system-tools/update-state)

Pozwól agentowi aktualizować zmienne dynamiczne w trakcie rozmowy za pomocą wyrażeń.

## Implementacja

Tworząc agenta przez API, możesz dodać narzędzia systemowe do jego konfiguracji. Oto jak wdrożyć narzędzia do kończenia rozmowy i wykrywania języka:

## Integracja z własnym LLM

Gdy używasz własnego LLM z agentami ElevenLabs, narzędzia systemowe są udostępniane jako definicje funkcji, które może wywołać LLM. Każde narzędzie systemowe ma określone parametry i warunki uruchomienia:

### Dostępne narzędzia systemowe

#### Zakończ rozmowę

**Cel**: Automatyczne kończenie rozmów, gdy zostaną spełnione odpowiednie warunki.

**Warunki wywołania**: LLM powinien wywołać to narzędzie, gdy:

* Główne zadanie zostało ukończone, a użytkownik jest zadowolony
* Rozmowa naturalnie dobiegła końca za obopólną zgodą
* Użytkownik wyraźnie chce zakończyć rozmowę

**Parametry**:

* `reason` (string, wymagany): Powód zakończenia rozmowy
* `message` (string, opcjonalny): Wiadomość pożegnalna wysyłana użytkownikowi przed zakończeniem rozmowy

**Format wywołania funkcji**:

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

**Implementacja**: Skonfiguruj jako narzędzie systemowe w ustawieniach agenta. LLM otrzyma szczegółowe instrukcje, kiedy wywołać tę funkcję.

Dowiedz się więcej: [Narzędzie do kończenia rozmowy](/docs/pl/eleven-agents/customization/tools/system-tools/end-call)

#### Wykrywanie języka

**Cel**: Automatyczne przełączanie na wykryty język użytkownika podczas rozmowy.

**Warunki wywołania**: LLM powinien wywołać to narzędzie, gdy:

* Użytkownik mówi w języku innym niż bieżący język rozmowy
* Użytkownik wyraźnie prosi o zmianę języka
* Rozmowa wymaga obsługi wielu języków

**Parametry**:

* `reason` (string, wymagany): Powód zmiany języka
* `language` (string, wymagany): Kod języka, na który ma nastąpić przełączenie (musi znajdować się na liście obsługiwanych języków)

**Format wywołania funkcji**:

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

**Wdrożenie**: Skonfiguruj obsługiwane języki w ustawieniach agenta i dodaj narzędzie systemowe wykrywania języka. Agent automatycznie zmieni głos i odpowiedzi, aby pasowały do wykrytych języków.

Dowiedz się więcej: [Narzędzie do wykrywania języka](/docs/pl/eleven-agents/customization/tools/system-tools/language-detection)

#### Przekazanie do agenta

**Cel**: Przekazywanie rozmów między wyspecjalizowanymi agentami AI zależnie od potrzeb użytkownika.

**Warunki wywołania**: LLM powinien wywołać to narzędzie, gdy:

* Prośba użytkownika wymaga specjalistycznej wiedzy lub innych możliwości agenta
* Obecny agent nie może odpowiednio obsłużyć zapytania
* Przebieg rozmowy wskazuje na potrzebę innego typu agenta

**Parametry**:

* `reason` (string, opcjonalnie): Powód przekazania do innego agenta
* `agent_number` (integer, wymagane): Numer agenta liczony od zera, do którego należy przekazać rozmowę (na podstawie skonfigurowanych zasad przekazywania)

**Format wywołania funkcji**:

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

**Implementacja**: Zdefiniuj zasady przekazywania, które mapują warunki na konkretne identyfikatory agentów. Skonfiguruj, do których agentów obecny agent może przekazywać rozmowy. W konfiguracji przekazywania agenci są oznaczani numerami liczonymi od zera.

Dowiedz się więcej: [Narzędzie do przekazywania do agenta](/docs/pl/eleven-agents/customization/tools/system-tools/agent-transfer)

#### Przekazanie na numer

**Cel**: Płynne przekazywanie rozmów konsultantom, gdy pomoc AI nie wystarcza.

**Warunki wywołania**: LLM powinien wywołać to narzędzie, gdy:

* Występują złożone problemy wymagające ludzkiego osądu
* Użytkownik wyraźnie prosi o pomoc człowieka
* AI osiąga granice swoich możliwości w przypadku konkretnej prośby
* Zostają uruchomione procedury eskalacji

**Parametry**:

* `reason` (string, opcjonalny): Powód przekazania
* `transfer_number` (string, wymagany): Numer telefonu, na który należy przekazać rozmowę (musi odpowiadać skonfigurowanym numerom)
* `client_message` (string, wymagany): Wiadomość odczytywana klientowi podczas oczekiwania na przekazanie
* `agent_message` (string, wymagany): Wiadomość dla konsultanta przejmującego rozmowę

**Format wywołania funkcji**:

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

**Implementacja**: Skonfiguruj numery telefonów i warunki przekazywania. Zdefiniuj wiadomości dla klienta i konsultanta przejmującego rozmowę. Działa zarówno z Twilio, jak i trunkingiem SIP.

Dowiedz się więcej: [Narzędzie do przekazywania na numer](/docs/pl/eleven-agents/customization/tools/system-tools/transfer-to-number)

#### Pomiń turę

**Cel**: Pozwala agentowi wstrzymać się i czekać na dane od użytkownika bez mówienia.

**Warunki wywołania**: LLM powinien wywołać to narzędzie, gdy:

* Użytkownik sygnalizuje, że potrzebuje chwili („Daj mi sekundę”, „Muszę pomyśleć”)
* Użytkownik prosi o pauzę w rozmowie
* Agent wykrywa, że użytkownik potrzebuje czasu na przetworzenie informacji

**Parametry**:

* `reason` (string, opcjonalny): Dowolny powód wyjaśniający, dlaczego potrzebna jest pauza

**Format wywołania funkcji**:

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

**Implementacja**: Nie wymaga dodatkowej konfiguracji. Narzędzie po prostu sygnalizuje agentowi, aby milczał, dopóki użytkownik znów się nie odezwie.

Dowiedz się więcej: [Narzędzie do pomijania tury](/docs/pl/eleven-agents/customization/tools/system-tools/skip-turn)

#### Odtwórz ton klawiatury

**Parametry**:

* `reason` (string, opcjonalny): Powód odtwarzania tonów DTMF (np. „przejście do numeru wewnętrznego”, „wpisywanie PIN-u”)
* `dtmf_tones` (string, wymagany): Sekwencja DTMF do odtworzenia. Prawidłowe znaki: 0-9, \*, #, w (pauza 0,5 s), W (pauza 1 s)

**Format wywołania funkcji**:

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

Dowiedz się więcej: [Narzędzie do odtwarzania tonu klawiatury](/docs/pl/eleven-agents/customization/tools/system-tools/play-keypad-touch-tone)

#### Wykrywanie poczty głosowej

**Parametry**:

* `reason` (string, wymagany): Powód wykrycia poczty głosowej (np. „wykryto automatyczne powitanie”, „brak odpowiedzi człowieka”)

**Format wywołania funkcji**:

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

Dowiedz się więcej: [Narzędzie do wykrywania poczty głosowej](/docs/pl/eleven-agents/customization/tools/system-tools/voicemail-detection)

#### Aktualizuj stan

**Cel**: Pozwala agentowi aktualizować jedną lub więcej zmiennych dynamicznych na podstawie rozmowy, bez wywoływania zewnętrznego API.

**Warunki wywołania**: LLM powinien wywołać to narzędzie, gdy:

* Rozmowa dostarcza informacji, którą należy zapisać (np. flagę eskalacji, wybraną opcję lub wartość podaną przez użytkownika)
* Skonfigurowana aktualizacja stanu zależy od wartości, którą LLM musi ocenić lub wyodrębnić z rozmowy

**Parametry**:

Parametry funkcji zależą od konfiguracji narzędzia. Każda skonfigurowana aktualizacja stanu używająca wartości wyodrębnionej przez LLM dodaje jedną właściwość do schematu, nazwaną od zmiennej dynamicznej tej aktualizacji i z typem `string`, `number` lub `boolean`. Aktualizacje stanu tworzone wyłącznie ze stałych lub innych zmiennych dynamicznych nie dodają parametrów.

**Format wywołania funkcji**:

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

**Implementacja**: Agent ocenia każde skonfigurowane wyrażenie, używając wyodrębnionych parametrów oraz bieżących zmiennych dynamicznych rozmowy, a następnie przypisuje wyniki do odpowiednich zmiennych dynamicznych. Nie wykonuje żadnego zewnętrznego żądania.

Dowiedz się więcej: [Narzędzie do aktualizacji stanu](/docs/pl/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" },
          },
        },
      },
    },
  },
});
```

## FAQ

#### Czy narzędzia systemowe można łączyć z innymi typami narzędzi?

Tak, narzędzi systemowych można używać razem z narzędziami webhook i narzędziami klienckimi w tym samym asystencie.
Pozwala to łączyć zarządzanie stanem wewnętrznym z
interakcjami zewnętrznymi.

```
```