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

# Agentoverdracht

## Overzicht

Met agent-naar-agentoverdracht kan een ElevenLabs-agent het lopende gesprek overdragen aan een andere aangewezen agent wanneer aan specifieke voorwaarden is voldaan. Zo kun je gelaagde conversationele workflows maken waarin verschillende agents specifieke taken of niveaus van complexiteit afhandelen.

Een initiële agent (Orchestrator) kan bijvoorbeeld algemene vragen afhandelen en het gesprek vervolgens op basis van de context overdragen aan een gespecialiseerde agent. Overdrachten kunnen ook genest zijn:

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

```

**Doel**: Gesprekken overdragen tussen gespecialiseerde AI-agents op basis van gebruikersbehoeften.

**Triggervoorwaarden**: De LLM moet deze tool aanroepen wanneer:

* Het verzoek van de gebruiker gespecialiseerde kennis of andere agentmogelijkheden vereist
* De huidige agent de vraag niet goed genoeg kan afhandelen
* De gespreksstroom aangeeft dat een ander agenttype nodig is

**Parameters**:

* `reason` (string, optioneel): De reden voor de agentoverdracht
* `agent_number` (integer, vereist): Nummer vanaf nul van de agent waarnaar moet worden overgedragen (op basis van geconfigureerde overdrachtsregels)

**Indeling van functieaanroep**:

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

**Implementatie**: Definieer overdrachtsregels die voorwaarden aan specifieke agent-ID's koppelen. Configureer naar welke agents de huidige agent kan overdragen. Agents worden in de overdrachtsconfiguratie aangeduid met nummers vanaf nul.

## Agentoverdracht inschakelen

Agentoverdracht wordt geconfigureerd met de systeemtool `transfer_to_agent`.

#### De overdrachtstool toevoegen

Schakel agentoverdracht in door de systeemtool `transfer_to_agent` te selecteren in de configuratie van je agent, op het tabblad `Agent`. Kies "Transfer to AI Agent" wanneer je een tool toevoegt.

![Overdrachtstool toevoegen](/docs/_fern-img/3e2756669b192395680d48a17c622493faee9fb61649f491bbe66820a91d46ef.webp)

#### Toolbeschrijving configureren (optioneel)

Je kunt een aangepaste beschrijving opgeven om de LLM te laten weten wanneer deze een overdracht moet activeren. Als je dit leeg laat, wordt een standaardbeschrijving gebruikt met de gedefinieerde overdrachtsregels.

![Beschrijving van overdrachtstool](/docs/_fern-img/6b916200ef66cd0c6f5af7f6ba51b4b48eb1a266c7b10e863ae874c5a11452ae.webp)

#### Overdrachtsregels definiëren

Configureer de specifieke regels voor overdracht aan andere agents. Geef voor elke regel het volgende op:

* **Agent**: De doelagent waarnaar je het gesprek overdraagt.
* **Voorwaarde**: Een beschrijving in natuurlijke taal van de omstandigheden waaronder de overdracht moet plaatsvinden (bijv. "Gebruiker vraagt naar factureringsgegevens", "Gebruiker vraagt technische support voor product X").
* **Vertraging vóór overdracht (milliseconden)**: De minimale vertraging (in milliseconden) voordat de overdracht plaatsvindt. De standaardwaarde is 0 voor onmiddellijke overdracht.
* **Overdrachtsbericht**: Een optioneel aangepast bericht dat tijdens de overdracht wordt afgespeeld. Als je dit leeg laat, vindt de overdracht stilzwijgend plaats.
* **Eerste bericht inschakelen**: Of de overgedragen agent na de overdracht zijn eerste bericht moet afspelen. Standaard uitgeschakeld.

De LLM gebruikt deze voorwaarden, samen met de toolbeschrijving, om te bepalen wanneer en naar welke agent (op nummer) het gesprek moet worden overgedragen.

![Configuratie van overdrachtsregels](/docs/_fern-img/b1b7e0f58ae757640af46630fde962a78ef4a164a380f974297bb643ccc29443.webp)

> **Note**
>
> Zorg ervoor dat de gebruikersaccount die de agent maakt, minimaal viewerrechten heeft voor alle doelagents die in de overdrachtsregels zijn opgegeven.

## Gedrag bij overdracht

Wanneer een overdracht plaatsvindt, geeft de **bovenliggende agent** (degene die de overdracht start) bepaalde configuratiewaarden door aan de **onderliggende agent** (degene die het gesprek ontvangt), terwijl andere volledig worden gereset.

### Overname van configuratie

De bovenliggende agent overschrijft de volgende waarden bij elke onderliggende agent, ongeacht de eigen configuratie van de onderliggende agent:

| Instelling                  | Beschrijving                                                                                 |
| --------------------------- | -------------------------------------------------------------------------------------------- |
| **Clientgebeurtenissen**    | Welke gebeurtenissen de client verstuurt (bijv. `audio`, `interruption`, `user_transcript`). |
| **TTS-uitvoeraudioformaat** | Formaat waarin de spraak van de agent wordt verstuurd (bijv. `pcm_16000`, `ulaw_8000`).      |
| **ASR-invoeraudioformaat**  | Formaat van de gebruikersaudio die de agent verwacht (bijv. `pcm_16000`, `ulaw_8000`).       |

Daarnaast wordt de huidige taal van de bovenliggende agent overgenomen. Als de onderliggende agent deze niet ondersteunt, valt deze terug op zijn eigen standaardtaal. De webhook- en analyseconfiguratie na het gesprek (inclusief evaluatiecriteria en gegevensverzamelingsitems) geldt ook voor het hele gesprek.

### Niet overgenomen

Alle andere configuraties worden ingesteld door de onderliggende agent, waaronder, maar niet beperkt tot:

* Prompt, eerste bericht, LLM, workflow, stem, tools en kennisbank
* TTS-stem, model, stabiliteit en andere steminstellingen (behalve `agent_output_audio_format`)
* ASR-model, kwaliteit en trefwoorden (behalve `user_input_audio_format`)
* Beurt/time-out, taalpresets, maximale duur enzovoort

> **Note**
>
> Configureer deze instellingen consistent voor elke agent in de workflow om afwijkend gedrag te voorkomen.

### Transcript en chatgeschiedenis

Het volledige transcript blijft behouden gedurende het hele gesprek. Berichten van gebruikers en agents van alle voorgaande agents blijven in de chatgeschiedenis staan.

Tijdens een overdracht worden toolaanroepen van `transfer_to_agent` verwijderd uit de geschiedenis die zichtbaar is voor de LLM van de onderliggende agent, zodat deze het gesprek voortzet zonder de overdracht te noemen.

### Evaluatie na het gesprek

De LLM-evaluator na het gesprek ontvangt het volledige, ongefilterde transcript: alle berichten van gebruikers en agents, en alle toolaanroepen inclusief de overdracht.

Afzonderlijke berichten hebben geen veld `agent_id`. Om te bepalen welke agent welke berichten heeft geproduceerd, gebruikt de evaluator de toolaanroep `transfer_to_agent` als grensmarkering in het transcript.

## API-implementatie

Je kunt de systeemtool `transfer_to_agent` configureren wanneer je via de API een agent maakt of bijwerkt.

```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,
                },
              ],
            },
          },
        },
      },
    },
  },
});
```