Narzędzia systemowe

Aktualizuj wewnętrzny stan rozmów bez zewnętrznych żądań.

Narzędzia systemowe pozwalają asystentowi aktualizować wewnętrzny stan rozmowy. W przeciwieństwie do narzędzi webhook i narzędzi klienckich 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

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

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:

{
"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

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:

{
"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

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:

{
"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

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:

{
"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

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:

{
"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

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:

{
"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

Parametry:

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

Format wywołania funkcji:

{
"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

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:

{
"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

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

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.