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

# Agentenweiterleitung

## Überblick

Die Agentenweiterleitung ermöglicht es einem ElevenLabs-Agenten, das laufende Gespräch unter bestimmten Bedingungen an einen anderen festgelegten Agenten zu übergeben. So lassen sich mehrstufige Gesprächsabläufe erstellen, in denen verschiedene Agenten bestimmte Aufgaben oder Komplexitätsstufen übernehmen.

Ein erster Agent (Orchestrator) kann beispielsweise allgemeine Anfragen bearbeiten und den Anruf dann abhängig vom Gesprächskontext an einen spezialisierten Agenten weiterleiten. Weiterleitungen können auch verschachtelt sein:

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

```

**Zweck**: Überträgt Gespräche je nach Nutzerbedarf zwischen spezialisierten KI-Agenten.

**Auslösebedingungen**: Das LLM sollte dieses Tool aufrufen, wenn:

* Die Nutzeranfrage spezialisiertes Wissen oder andere Agentenfunktionen erfordert
* Der aktuelle Agent die Anfrage nicht angemessen bearbeiten kann
* Der Gesprächsverlauf auf den Bedarf eines anderen Agententyps hinweist

**Parameter**:

* `reason` (string, optional): Der Grund für die Agentenübergabe
* `agent_number` (integer, erforderlich): Nullbasierte Nummer des Zielagenten (basierend auf konfigurierten Übergaberegeln)

**Format des Funktionsaufrufs**:

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

**Implementierung**: Definieren Sie Übergaberegeln, die Bedingungen bestimmten Agenten-IDs zuordnen. Konfigurieren Sie, an welche Agenten der aktuelle Agent übergeben kann. Agenten werden in der Übergabekonfiguration durch nullbasierte Nummern referenziert.

## Agentenweiterleitung aktivieren

Die Agentenweiterleitung wird mit dem System-Tool `transfer_to_agent` konfiguriert.

#### Weiterleitungs-Tool hinzufügen

Aktivieren Sie die Agentenweiterleitung, indem Sie in der Konfiguration Ihres Agenten auf der Registerkarte `Agent` das System-Tool `transfer_to_agent` auswählen. Wählen Sie beim Hinzufügen eines Tools „An KI-Agenten weiterleiten“.

![Weiterleitungs-Tool hinzufügen](/docs/_fern-img/3e2756669b192395680d48a17c622493faee9fb61649f491bbe66820a91d46ef.webp)

#### Tool-Beschreibung konfigurieren (optional)

Sie können eine eigene Beschreibung angeben, um dem LLM mitzuteilen, wann es eine Weiterleitung auslösen soll. Wenn Sie das Feld leer lassen, wird eine Standardbeschreibung verwendet, die die definierten Weiterleitungsregeln umfasst.

![Beschreibung des Weiterleitungs-Tools](/docs/_fern-img/6b916200ef66cd0c6f5af7f6ba51b4b48eb1a266c7b10e863ae874c5a11452ae.webp)

#### Weiterleitungsregeln definieren

Konfigurieren Sie die genauen Regeln für die Weiterleitung an andere Agenten. Geben Sie für jede Regel Folgendes an:

* **Agent**: Der Zielagent, an den das Gespräch weitergeleitet wird.
* **Bedingung**: Eine Beschreibung in natürlicher Sprache, unter welchen Umständen die Weiterleitung erfolgen soll (z. B. „Nutzer fragt nach Rechnungsdetails“, „Nutzer benötigt technischen Support für Produkt X“).
* **Verzögerung vor der Weiterleitung (Millisekunden)**: Die Mindestverzögerung in Millisekunden, bevor die Weiterleitung erfolgt. Standardmäßig 0 für eine sofortige Weiterleitung.
* **Weiterleitungsnachricht**: Eine optionale eigene Nachricht, die während der Weiterleitung abgespielt wird. Wenn Sie das Feld leer lassen, erfolgt die Weiterleitung ohne Ansage.
* **Erste Nachricht aktivieren**: Legt fest, ob der weitergeleitete Agent nach der Weiterleitung seine erste Nachricht abspielen soll. Standardmäßig deaktiviert.

Das LLM verwendet diese Bedingungen zusammen mit der Tool-Beschreibung, um zu entscheiden, wann und an welchen Agenten (nach Nummer) weitergeleitet wird.

![Konfiguration der Weiterleitungsregeln](/docs/_fern-img/b1b7e0f58ae757640af46630fde962a78ef4a164a380f974297bb643ccc29443.webp)

> **Note**
>
> Stellen Sie sicher, dass das Benutzerkonto, das den Agenten erstellt, mindestens Leseberechtigungen für alle in den Weiterleitungsregeln angegebenen Zielagenten hat.

## Verhalten bei Weiterleitungen

Bei einer Weiterleitung übergibt der **übergeordnete Agent** (der die Weiterleitung einleitet) bestimmte Konfigurationswerte an den **untergeordneten Agenten** (der das Gespräch übernimmt), während andere vollständig zurückgesetzt werden.

### Vererbte Konfiguration

Der übergeordnete Agent überschreibt bei jedem untergeordneten Agenten die folgenden Werte, unabhängig von dessen eigener Konfiguration:

| Einstellung                | Beschreibung                                                                            |
| -------------------------- | --------------------------------------------------------------------------------------- |
| **Client-Ereignisse**      | Welche Ereignisse der Client sendet (z. B. `audio`, `interruption`, `user_transcript`). |
| **TTS-Ausgabeaudioformat** | Format, in dem die Sprache des Agenten gesendet wird (z. B. `pcm_16000`, `ulaw_8000`).  |
| **ASR-Eingabeaudioformat** | Format der Nutzeraudios, die der Agent erwartet (z. B. `pcm_16000`, `ulaw_8000`).       |

Zusätzlich wird die aktuelle Sprache des übergeordneten Agenten übernommen. Unterstützt der untergeordnete Agent diese nicht, verwendet er seine eigene Standardsprache. Die Webhook- und Analysekonfiguration nach dem Anruf (einschließlich Bewertungskriterien und Datenerfassungselementen) gilt ebenfalls für das gesamte Gespräch.

### Nicht vererbt

Alle anderen Konfigurationen werden vom untergeordneten Agenten festgelegt, einschließlich, aber nicht beschränkt auf:

* Prompt, erste Nachricht, LLM, Workflow, Stimme, Tools und Wissensdatenbank
* TTS-Stimme, Modell, Stabilität und andere Stimmeinstellungen (außer `agent_output_audio_format`)
* ASR-Modell, Qualität und Schlüsselwörter (außer `user_input_audio_format`)
* Sprecherwechsel/Timeout, Sprachvoreinstellungen, maximale Dauer usw.

> **Note**
>
> Konfigurieren Sie diese Einstellungen für jeden Agenten im Workflow einheitlich, um abweichendes Verhalten zu vermeiden.

### Transkript und Chatverlauf

Das vollständige Transkript bleibt während des gesamten Gesprächs erhalten. Nachrichten von Nutzern und Agenten aller vorherigen Agenten verbleiben im Chatverlauf.

Während einer Weiterleitung werden `transfer_to_agent`-Tool-Aufrufe aus dem Verlauf entfernt, der für das LLM des untergeordneten Agenten sichtbar ist. So setzt es das Gespräch fort, ohne die Übergabe zu erwähnen.

### Bewertung nach dem Anruf

Das LLM für die Bewertung nach dem Anruf erhält das vollständige, ungefilterte Transkript – alle Nutzer- und Agentennachrichten sowie alle Tool-Aufrufe einschließlich der Weiterleitung.

Einzelne Nachrichten enthalten kein Feld `agent_id`. Um festzustellen, welcher Agent welche Nachrichten erstellt hat, verwendet der Evaluator den `transfer_to_agent`-Tool-Aufruf als Grenzmarkierung im Transkript.

## API-Implementierung

Sie können das System-Tool `transfer_to_agent` beim Erstellen oder Aktualisieren eines Agenten über die API konfigurieren.

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