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

# Outils système

**Les outils système** permettent à votre assistant de mettre à jour l’état interne d’une conversation. Contrairement aux [outils webhook](/docs/fr/eleven-agents/customization/tools/webhook-tools) ou aux [outils client](/docs/fr/eleven-agents/customization/tools/client-tools), les outils système n’effectuent pas d’appels API externes et ne déclenchent pas de fonctions côté client : ils modifient l’état interne de la conversation sans effectuer d’appels externes.

## Vue d’ensemble

Certaines applications nécessitent que les agents contrôlent le flux ou l’état d’une conversation.
Les outils système offrent cette capacité en permettant à l’assistant d’effectuer des actions liées à l’état de l’appel, sans avoir à communiquer avec des serveurs externes ou le client.

### Outils système disponibles

#### [Terminer l’appel](/docs/fr/eleven-agents/customization/tools/system-tools/end-call)

Permettez à votre agent de mettre automatiquement fin à une conversation lorsque les conditions appropriées sont réunies.

#### [Détection de la langue](/docs/fr/eleven-agents/customization/tools/system-tools/language-detection)

Permettez à votre agent de passer automatiquement à la langue de l’utilisateur au cours des conversations.

#### [Transfert d’agent](/docs/fr/eleven-agents/customization/tools/system-tools/agent-transfer)

Transférez facilement les conversations entre agents IA selon des conditions définies.

#### [Transférer vers un numéro](/docs/fr/eleven-agents/customization/tools/system-tools/transfer-to-number)

Transférez les appels vers des numéros de téléphone externes ou des URI SIP.

#### [Passer le tour](/docs/fr/eleven-agents/customization/tools/system-tools/skip-turn)

Permettez à l’agent de passer son tour si le LLM détecte qu’il ne doit pas encore parler.

#### [Jouer une tonalité de clavier](/docs/fr/eleven-agents/customization/tools/system-tools/play-keypad-touch-tone)

Permettez aux agents de jouer des tonalités DTMF pour interagir avec des systèmes téléphoniques automatisés et naviguer dans les menus.

#### [Détection de messagerie vocale](/docs/fr/eleven-agents/customization/tools/system-tools/voicemail-detection)

Permettez aux agents de détecter automatiquement les systèmes de messagerie vocale et de laisser éventuellement des messages.

#### [Mettre à jour l’état](/docs/fr/eleven-agents/customization/tools/system-tools/update-state)

Permettez à votre agent de mettre à jour des variables dynamiques en cours de conversation à l’aide d’expressions.

## Implémentation

Lors de la création d’un agent via l’API, vous pouvez ajouter des outils système à la configuration de votre agent. Voici comment implémenter les outils de fin d’appel et de détection de la langue :

## Intégration d’un LLM personnalisé

Lorsque vous utilisez un LLM personnalisé avec les agents ElevenLabs, les outils système sont exposés sous forme de définitions de fonctions que votre LLM peut appeler. Chaque outil système possède des paramètres et des conditions de déclenchement spécifiques :

### Outils système disponibles

#### Terminer l’appel

**Objectif** : Mettre automatiquement fin aux conversations lorsque les conditions appropriées sont réunies.

**Conditions de déclenchement** : le LLM doit appeler cet outil lorsque :

* La tâche principale est terminée et l'utilisateur est satisfait
* La conversation est arrivée à une conclusion naturelle avec un accord mutuel
* L'utilisateur indique explicitement vouloir mettre fin à la conversation

**Paramètres** :

* `reason` (chaîne, obligatoire) : la raison de la fin de l'appel
* `message` (chaîne, facultatif) : un message d'au revoir à envoyer à l'utilisateur avant de mettre fin à l'appel

**Format d'appel de fonction** :

```json
{
  "type": "function",
  "function": {
    "name": "end_call",
    "arguments": "{\"reason\": \"Task completed successfully\", \"message\": \"Thank you for using our service. Have a great day!\"}"
  }
}
```

**Mise en œuvre** : configurez cet outil système dans les paramètres de votre agent. Le LLM recevra des instructions détaillées sur le moment où appeler cette fonction.

En savoir plus : [Outil de fin d’appel](/docs/fr/eleven-agents/customization/tools/system-tools/end-call)

#### Détection de la langue

**Objectif :** basculer automatiquement vers la langue détectée de l'utilisateur au cours des conversations.

**Conditions de déclenchement :** le LLM doit appeler cet outil lorsque :

* L'utilisateur parle dans une langue différente de celle de la conversation en cours
* L'utilisateur demande explicitement à changer de langue
* La conversation nécessite la prise en charge de plusieurs langues

**Paramètres :**

* `reason` (chaîne, obligatoire) : la raison du changement de langue
* `language` (chaîne, obligatoire) : le code de langue vers lequel basculer (doit figurer dans la liste des langues prises en charge)

**Format d'appel de fonction :**

```json
{
  "type": "function",
  "function": {
    "name": "language_detection",
    "arguments": "{\"reason\": \"User requested Spanish\", \"language\": \"es\"}"
  }
}
```

**Implémentation :** configurez les langues prises en charge dans les paramètres de l'agent et ajoutez l'outil système de détection de langue. L'agent basculera automatiquement la voix et les réponses pour correspondre aux langues détectées.

En savoir plus : [Outil de détection de la langue](/docs/fr/eleven-agents/customization/tools/system-tools/language-detection)

#### Transfert d’agent

**Objectif** : transférer les conversations entre des agents IA spécialisés selon les besoins de l'utilisateur.

**Conditions de déclenchement** : le LLM doit appeler cet outil lorsque :

* La demande de l'utilisateur nécessite des connaissances spécialisées ou des capacités d'agent différentes
* L'agent actuel ne peut pas traiter la requête de manière adéquate
* Le déroulement de la conversation indique qu'un autre type d'agent est nécessaire

**Paramètres** :

* `reason` (chaîne, facultatif) : motif du transfert d'agent
* `agent_number` (entier, obligatoire) : numéro à indexation zéro de l'agent vers lequel effectuer le transfert (selon les règles de transfert configurées)

**Format d'appel de fonction** :

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

**Implémentation** : définissez des règles de transfert associant des conditions à des ID d'agent spécifiques. Configurez les agents vers lesquels l'agent actuel peut effectuer un transfert. Les agents sont référencés par des numéros à indexation zéro dans la configuration de transfert.

En savoir plus : [Outil de transfert d’agent](/docs/fr/eleven-agents/customization/tools/system-tools/agent-transfer)

#### Transférer vers un numéro

**Objectif** : Transférer de manière fluide les conversations à des opérateurs humains lorsque l'assistance de l'IA ne suffit pas.

**Conditions de déclenchement** : le LLM doit appeler cet outil lorsque :

* Des problèmes complexes nécessitent un jugement humain
* L'utilisateur demande explicitement une assistance humaine
* L'IA atteint les limites de ses capacités pour la demande concernée
* Les protocoles d'escalade sont déclenchés

**Paramètres** :

* `reason` (chaîne, facultatif) : la raison du transfert
* `transfer_number` (chaîne, obligatoire) : le numéro de téléphone vers lequel transférer l'appel, il doit correspondre aux numéros configurés
* `client_message` (chaîne, obligatoire) : message lu au client pendant l'attente du transfert
* `agent_message` (chaîne, obligatoire) : message destiné à l'opérateur humain qui reçoit l'appel

**Format d'appel de fonction** :

```json
{
  "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.\"}"
  }
}
```

**Mise en œuvre** : configurez les numéros de téléphone et les conditions de transfert. Définissez les messages destinés au client et à l'opérateur humain qui reçoit l'appel. Compatible avec Twilio et le trunking SIP.

En savoir plus : [Outil de transfert vers un numéro](/docs/fr/eleven-agents/customization/tools/system-tools/transfer-to-number)

#### Passer le tour

**Objectif** : permettre à l’agent de faire une pause et d’attendre l’entrée de l’utilisateur sans parler.

**Conditions de déclenchement** : le LLM doit appeler cet outil lorsque :

* L’utilisateur indique avoir besoin d’un moment (« Donnez-moi une seconde », « Laissez-moi réfléchir »)
* L’utilisateur demande une pause dans le flux de la conversation
* L’agent détecte que l’utilisateur a besoin de temps pour assimiler les informations

**Paramètres** :

* `reason` (chaîne, facultatif) : raison libre expliquant pourquoi la pause est nécessaire

**Format d’appel de fonction** :

```json
{
  "type": "function",
  "function": {
    "name": "skip_turn",
    "arguments": "{\"reason\": \"User requested time to think\"}"
  }
}
```

**Implémentation** : aucune configuration supplémentaire n’est nécessaire. L’outil signale simplement à l’agent de rester silencieux jusqu’à ce que l’utilisateur parle de nouveau.

En savoir plus : [Outil Passer le tour](/docs/fr/eleven-agents/customization/tools/system-tools/skip-turn)

#### Jouer une tonalité de clavier

**Paramètres :**

* `reason` (chaîne, facultatif) : la raison de la lecture des tonalités DTMF (par exemple, « navigation vers l'extension », « saisie du code PIN »)
* `dtmf_tones` (chaîne, obligatoire) : la séquence DTMF à lire. Caractères valides : 0-9, \*, #, w (pause de 0,5 s), W (pause de 1 s)

**Format d'appel de fonction :**

```json
{
  "type": "function",
  "function": {
    "name": "play_keypad_touch_tone",
    "arguments": "{"reason": "Navigating to customer service", "dtmf_tones": "2"}"
  }
}
```

En savoir plus : [Outil Jouer une tonalité de clavier](/docs/fr/eleven-agents/customization/tools/system-tools/play-keypad-touch-tone)

#### Détection de messagerie vocale

**Paramètres** :

* `reason` (chaîne, obligatoire) : raison de la détection de messagerie vocale (par exemple, « message d’accueil automatisé détecté », « aucune réponse humaine »)

**Format d’appel de fonction** :

```json
{
  "type": "function",
  "function": {
    "name": "voicemail_detection",
    "arguments": "{\"reason\": \"Automated greeting detected with request to leave message\"}"
  }
}
```

En savoir plus : [Outil de détection de messagerie vocale](/docs/fr/eleven-agents/customization/tools/system-tools/voicemail-detection)

#### Mettre à jour l’état

**Objectif** : permettre à l’agent de mettre à jour une ou plusieurs variables dynamiques selon la conversation, sans appeler d’API externe.

**Conditions de déclenchement** : le LLM doit appeler cet outil lorsque :

* La conversation fournit des informations qui doivent être enregistrées (par exemple, un indicateur d’escalade, une option choisie ou une valeur fournie par l’utilisateur)
* Une mise à jour d’état configurée dépend d’une valeur que le LLM doit évaluer ou extraire de la conversation

**Paramètres** :

Les paramètres de la fonction dépendent de la configuration de l’outil. Chaque mise à jour d’état configurée qui utilise une valeur extraite par le LLM ajoute une propriété au schéma, nommée d’après la variable dynamique de cette mise à jour et de type `string`, `number` ou `boolean`. Les mises à jour d’état créées uniquement à partir de constantes ou d’autres variables dynamiques n’ajoutent aucun paramètre.

**Format d’appel de fonction** :

```json
{
  "type": "function",
  "function": {
    "name": "update_state",
    "arguments": "{\"should_escalate\": true}"
  }
}
```

**Implémentation** : l’agent évalue chaque expression configurée à l’aide des paramètres extraits et des variables dynamiques actuelles de la conversation, puis attribue les résultats aux variables dynamiques correspondantes. Aucune requête externe n’est effectuée.

En savoir plus : [Outil de mise à jour de l’état](/docs/fr/eleven-agents/customization/tools/system-tools/update-state)

```python
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"},
                    },
                }
            },
        ),
    ),
)
```

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

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

// Each system tool is keyed by name under builtInTools.
// Leave "description" blank to use the default, tool-specific prompt.
await elevenlabs.conversationalAi.agents.create({
  conversationConfig: {
    agent: {
      prompt: {
        builtInTools: {
          endCall: {
            type: "system",
            name: "end_call",
            description: "",
            params: { systemToolType: "end_call" },
          },
          languageDetection: {
            type: "system",
            name: "language_detection",
            description: "",
            params: { systemToolType: "language_detection" },
          },
        },
      },
    },
  },
});
```

## FAQ

#### Les outils système peuvent-ils être combinés à d’autres types d’outils ?

Oui, les outils système peuvent être utilisés avec des outils webhook et des outils client dans le même assistant.
Cela permet de combiner une gestion complète de l’état interne avec
des interactions externes.

```
```