Outils système

Mettez à jour l’état interne des conversations sans requêtes externes.

Les outils système permettent à votre assistant de mettre à jour l’état interne d’une conversation. Contrairement aux outils webhook ou aux outils client, 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

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

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 :

{
"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

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 :

{
"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

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 :

{
"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

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 :

{
"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

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 :

{
"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

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 :

{
"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

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 :

{
"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

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 :

{
"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

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

FAQ

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.