Przekazanie do innego agenta

Płynnie przekazuj użytkownika między agentami ElevenLabs na podstawie określonych warunków.

Omówienie

Przekazywanie między agentami pozwala agentowi ElevenLabs przekazać trwającą rozmowę innemu wskazanemu agentowi po spełnieniu określonych warunków. Umożliwia to wielopoziomowe workflow konwersacyjne, w których różni agenci obsługują konkretne zadania lub poziomy złożoności.

Na przykład początkowy agent (Orkiestrator) może obsługiwać ogólne zapytania, a następnie przekazać połączenie do wyspecjalizowanego agenta zależnie od kontekstu rozmowy. Przekazania mogą też być zagnieżdżone:

Orchestrator Agent (Initial Qualification)
│
├───> Agent 1 (e.g., Availability Inquiries)
│
├───> Agent 2 (e.g., Technical Support)
│ │
│ └───> Agent 2a (e.g., Hardware Support)
│
└───> Agent 3 (e.g., Billing Issues)
Przykładowa hierarchia przekazywania między agentami

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.

Włączanie przekazywania między agentami

Przekazywanie między agentami konfiguruje się za pomocą narzędzia systemowego transfer_to_agent.

1

Dodaj narzędzie przekazywania

Włącz przekazywanie między agentami, wybierając narzędzie systemowe transfer_to_agent w konfiguracji agenta na karcie Agent. Podczas dodawania narzędzia wybierz „Transfer to AI Agent”.

Dodawanie narzędzia przekazywania
2

Skonfiguruj opis narzędzia (opcjonalnie)

Możesz dodać własny opis, aby wskazać LLM, kiedy wywołać przekazanie. Jeśli zostawisz pole puste, użyty zostanie domyślny opis obejmujący zdefiniowane reguły przekazywania.

Opis narzędzia przekazywania
3

Zdefiniuj reguły przekazywania

Skonfiguruj konkretne reguły przekazywania do innych agentów. Dla każdej reguły określ:

  • Agent: Docelowy agent, do którego ma zostać przekazana rozmowa.
  • Warunek: Opis sytuacji w języku naturalnym, w której powinno nastąpić przekazanie (np. „Użytkownik pyta o szczegóły rozliczenia”, „Użytkownik prosi o pomoc techniczną dotyczącą produktu X”).
  • Opóźnienie przed przekazaniem (milisekundy): Minimalne opóźnienie (w milisekundach) przed przekazaniem. Domyślnie 0, czyli przekazanie natychmiastowe.
  • Komunikat przekazania: Opcjonalny własny komunikat odtwarzany podczas przekazania. Jeśli zostawisz pole puste, przekazanie nastąpi bez komunikatu.
  • Włącz pierwszą wiadomość: Czy agent przejmujący rozmowę ma odtworzyć swoją pierwszą wiadomość po przekazaniu. Domyślnie wyłączone.

LLM użyje tych warunków wraz z opisem narzędzia, aby zdecydować, kiedy i do którego agenta (według numeru) przekazać rozmowę.

Konfiguracja reguł przekazywania

Upewnij się, że konto użytkownika tworzącego agenta ma co najmniej uprawnienia obserwatora do wszystkich agentów docelowych wskazanych w regułach przekazywania.

Zachowanie podczas przekazywania

Gdy następuje przekazanie, agent nadrzędny (który je inicjuje) przekazuje pewne wartości konfiguracji do agenta podrzędnego (który przejmuje rozmowę), a inne są całkowicie resetowane.

Dziedziczenie konfiguracji

Agent nadrzędny nadpisuje następujące wartości u każdego agenta podrzędnego, niezależnie od jego własnej konfiguracji:

UstawienieOpis
Zdarzenia klientaKtóre zdarzenia wysyła klient (np. audio, interruption, user_transcript).
Format audio wyjściowego TTSFormat, w którym wysyłana jest mowa agenta (np. pcm_16000, ulaw_8000).
Format audio wejściowego ASRFormat audio użytkownika oczekiwany przez agenta (np. pcm_16000, ulaw_8000).

Dodatkowo przekazywany jest bieżący język agenta nadrzędnego — jeśli agent podrzędny go nie obsługuje, używa własnego języka domyślnego. Konfiguracja webhooka i analizy po rozmowie (w tym kryteria oceny oraz elementy zbierania danych) również obowiązuje dla całej rozmowy.

Niedziedziczone

Wszystkie pozostałe ustawienia konfiguruje agent podrzędny, w tym między innymi:

  • Prompt, pierwsza wiadomość, LLM, workflow, głos, narzędzia i baza wiedzy
  • Głos TTS, model, stabilność i inne ustawienia głosu (z wyjątkiem agent_output_audio_format)
  • Model ASR, jakość i słowa kluczowe (z wyjątkiem user_input_audio_format)
  • Tura/limit czasu, ustawienia języka, maksymalny czas trwania itd.

Konfiguruj te ustawienia spójnie dla każdego agenta w workflow, aby uniknąć niespójnego działania.

Transkrypcja i historia czatu

Pełna transkrypcja jest zachowywana przez całą rozmowę. Wiadomości użytkownika i agenta od każdego poprzedniego agenta pozostają w historii czatu.

Podczas przekazania wywołania narzędzia transfer_to_agent są usuwane z historii widocznej dla LLM agenta podrzędnego, dzięki czemu kontynuuje on rozmowę bez wspominania o przekazaniu.

Ocena po rozmowie

LLM oceniający po rozmowie otrzymuje pełną, niefiltrowaną transkrypcję — wszystkie wiadomości użytkownika i agenta oraz wszystkie wywołania narzędzi, w tym przekazanie.

Poszczególne wiadomości nie zawierają pola agent_id. Aby ustalić, który agent utworzył które wiadomości, ewaluator używa wywołania narzędzia transfer_to_agent jako znacznika granicy w transkrypcji.

Implementacja API

Możesz skonfigurować narzędzie systemowe transfer_to_agent podczas tworzenia lub aktualizowania agenta przez API.

from elevenlabs import AgentConfig, ConversationalConfig, ElevenLabs
elevenlabs = ElevenLabs(api_key="YOUR_API_KEY")
# Define transfer rules with new options
transfer_rules = [
{
"agent_id": "AGENT_ID_1",
"condition": "When the user asks for billing support.",
"delay_ms": 1000, # 1 second delay
"transfer_message": "I'm connecting you to our billing specialist.",
"enable_transferred_agent_first_message": True,
},
{
"agent_id": "AGENT_ID_2",
"condition": "When the user requests advanced technical help.",
"delay_ms": 0, # Immediate transfer
"transfer_message": None, # Silent transfer
"enable_transferred_agent_first_message": False,
},
]
response = elevenlabs.conversational_ai.agents.create(
conversation_config=ConversationalConfig(
agent=AgentConfig(
first_message="Hi, how can I help you today?",
prompt={
"prompt": "You are a helpful assistant.",
"built_in_tools": {
"transfer_to_agent": {
"type": "system",
"name": "transfer_to_agent",
# Optional custom description
"description": "Transfer the user to a specialized agent based on their request.",
"params": {
"system_tool_type": "transfer_to_agent",
"transfers": transfer_rules,
},
}
},
},
),
),
)
print(response)