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

# Przekazanie do agenta

## Omówienie

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

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

```text
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)

```

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

## Włączanie przekazywania między agentami

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

#### 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](/docs/_fern-img/3e2756669b192395680d48a17c622493faee9fb61649f491bbe66820a91d46ef.webp)

#### Skonfiguruj opis narzędzia (opcjonalnie)

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

![Opis narzędzia przekazywania](/docs/_fern-img/6b916200ef66cd0c6f5af7f6ba51b4b48eb1a266c7b10e863ae874c5a11452ae.webp)

#### Zdefiniuj reguły przekazywania

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

* **Agent**: Agent docelowy, do którego ma zostać przekazana rozmowa.
* **Warunek**: Opis w języku naturalnym sytuacji, w których ma nastąpić przekazanie (np. „Użytkownik pyta o szczegóły płatności”, „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 natychmiastowe przekazanie.
* **Komunikat przekazania**: Opcjonalny własny komunikat odtwarzany podczas przekazania. Jeśli pozostawisz to pole puste, przekazanie nastąpi bez komunikatu.
* **Włącz pierwszą wiadomość**: Określa, 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](/docs/_fern-img/b1b7e0f58ae757640af46630fde962a78ef4a164a380f974297bb643ccc29443.webp)

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

## Działanie przekazywania

Gdy następuje przekazanie, **agent nadrzędny** (ten, który je inicjuje) przekazuje określone wartości konfiguracji **agentowi podrzędnemu** (temu, który przejmuje rozmowę), a pozostałe są całkowicie resetowane.

### Dziedziczenie konfiguracji

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

| Ustawienie                       | Opis                                                                               |
| -------------------------------- | ---------------------------------------------------------------------------------- |
| **Zdarzenia klienta**            | Zdarzenia wysyłane przez klienta (np. `audio`, `interruption`, `user_transcript`). |
| **Format audio wyjściowego TTS** | Format, w którym wysyłana jest mowa agenta (np. `pcm_16000`, `ulaw_8000`).         |
| **Format audio wejściowego ASR** | Format 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 i elementy zbierania danych) również obejmuje całą rozmowę.

### Niedziedziczone ustawienia

Wszystkie pozostałe ustawienia konfiguruje agent podrzędny, 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`)
* Tury/limity czasu, ustawienia języka, maksymalny czas trwania itd.

> **Note**
>
> Konfiguruj te ustawienia spójnie dla każdego agenta w workflow, aby uniknąć rozbieżności w działaniu.

Agent korzystający z [modelu Realtime](/docs/pl/eleven-agents/customization/realtime-models) może przekazywać rozmowy tylko do i od innych agentów korzystających z modelu Realtime.

### Transkrypcja i historia czatu

Pełna transkrypcja jest zachowywana przez całą rozmowę. Wiadomości użytkownika i agenta od wszystkich wcześniejszych agentów 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 mają pola `agent_id`. Aby określić, który agent utworzył dane wiadomości, moduł oceniający 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.

```python
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)
```

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

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

await elevenlabs.conversationalAi.agents.create({
  conversationConfig: {
    agent: {
      firstMessage: "Hi, how can I help you today?",
      prompt: {
        prompt: "You are a helpful assistant.",
        builtInTools: {
          transferToAgent: {
            type: "system",
            name: "transfer_to_agent",
            description: "Transfer the user to a specialized agent based on their request.", // Optional custom description
            params: {
              systemToolType: "transfer_to_agent",
              transfers: [
                {
                  agentId: "AGENT_ID_1",
                  condition: "When the user asks for billing support.",
                  delayMs: 1000, // 1 second delay
                  transferMessage: "I'm connecting you to our billing specialist.",
                  enableTransferredAgentFirstMessage: true,
                },
                {
                  agentId: "AGENT_ID_2",
                  condition: "When the user requests advanced technical help.",
                  delayMs: 0, // Immediate transfer
                  // transferMessage omitted for a silent transfer
                  enableTransferredAgentFirstMessage: false,
                },
              ],
            },
          },
        },
      },
    },
  },
});
```