Transfert d’agent

Transférez facilement l’utilisateur entre des agents ElevenLabs selon des conditions définies.

Vue d’ensemble

Le transfert d’agent à agent permet à un agent ElevenLabs de confier une conversation en cours à un autre agent désigné lorsque certaines conditions sont remplies. Cela permet de créer des workflows conversationnels à plusieurs niveaux, où différents agents traitent des tâches spécifiques ou des niveaux de complexité distincts.

Par exemple, un agent initial (orchestrateur) peut traiter les demandes générales, puis transférer l’appel à un agent spécialisé selon le contexte de la conversation. Les transferts peuvent également être imbriqués :

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)
Exemple de hiérarchie de transfert entre agents

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.

Activer le transfert d’agent

Le transfert d’agent se configure à l’aide de l’outil système transfer_to_agent.

1

Ajouter l’outil de transfert

Activez le transfert d’agent en sélectionnant l’outil système transfer_to_agent dans la configuration de votre agent, sous l’onglet Agent. Lors de l’ajout d’un outil, choisissez « Transfer to AI Agent ».

Ajouter l’outil de transfert
2

Configurer la description de l’outil (facultatif)

Vous pouvez fournir une description personnalisée pour indiquer au LLM quand déclencher un transfert. Si vous la laissez vide, une description par défaut englobant les règles de transfert définies sera utilisée.

Description de l’outil de transfert
3

Définir les règles de transfert

Configurez les règles spécifiques de transfert vers d’autres agents. Pour chaque règle, indiquez :

  • Agent : l’agent cible auquel transférer la conversation.
  • Condition : une description en langage naturel des circonstances dans lesquelles le transfert doit avoir lieu (par exemple, « L’utilisateur demande des informations de facturation », « L’utilisateur demande une assistance technique pour le produit X »).
  • Délai avant le transfert (millisecondes) : le délai minimal, en millisecondes, avant le transfert. La valeur par défaut est 0 pour un transfert immédiat.
  • Message de transfert : un message personnalisé facultatif à diffuser pendant le transfert. Si vous le laissez vide, le transfert s’effectuera en silence.
  • Activer le premier message : indique si l’agent destinataire doit diffuser son premier message après le transfert. Désactivé par défaut.

Le LLM utilisera ces conditions, ainsi que la description de l’outil, pour décider quand transférer et vers quel agent, identifié par son numéro.

Configuration des règles de transfert

Assurez-vous que le compte utilisateur qui crée l’agent dispose au minimum des autorisations de lecteur pour tous les agents cibles spécifiés dans les règles de transfert.

Comportement du transfert

Lorsqu’un transfert a lieu, l’agent parent (celui qui initie le transfert) transmet certaines valeurs de configuration à l’agent enfant (celui qui reçoit la conversation), tandis que d’autres sont entièrement réinitialisées.

Héritage de configuration

L’agent parent remplace les valeurs suivantes pour chaque agent enfant, quelle que soit la propre configuration de ce dernier :

ParamètreDescription
Événements clientÉvénements envoyés par le client (par exemple audio, interruption, user_transcript).
Format audio de sortie TTSFormat dans lequel la parole de l’agent est envoyée (par exemple pcm_16000, ulaw_8000).
Format audio d’entrée ASRFormat audio utilisateur attendu par l’agent (par exemple pcm_16000, ulaw_8000).

De plus, la langue actuelle de l’agent parent est conservée. Si l’agent enfant ne la prend pas en charge, il revient à sa propre langue par défaut. La configuration du webhook post-appel et de l’analyse, y compris les critères d’évaluation et les éléments de collecte de données, s’applique également à l’ensemble de la conversation.

Éléments non hérités

Toutes les autres configurations sont définies par l’agent enfant, notamment :

  • Le prompt, le premier message, le LLM, le workflow, la voix, les outils et la base de connaissances
  • La voix TTS, le modèle, la stabilité et les autres paramètres vocaux, à l’exception de agent_output_audio_format
  • Le modèle ASR, la qualité et les mots-clés, à l’exception de user_input_audio_format
  • Les paramètres de tour et de délai d’expiration, les préréglages de langue, la durée maximale, etc.

Configurez ces paramètres de manière cohérente pour chaque agent du workflow afin d’éviter des comportements incohérents.

Transcription et historique du chat

La transcription complète est conservée tout au long de la conversation. Les messages de l’utilisateur et de l’agent de tous les agents précédents restent dans l’historique du chat.

Lors d’un transfert, les appels à l’outil transfer_to_agent sont supprimés de l’historique visible par le LLM de l’agent enfant, afin qu’il poursuive la conversation sans mentionner le transfert.

Évaluation post-appel

Le LLM évaluateur post-appel reçoit la transcription complète, non filtrée, avec tous les messages utilisateur et agent, ainsi que tous les appels d’outils, y compris le transfert.

Les messages individuels ne comportent pas de champ agent_id. Pour déterminer quel agent a produit quels messages, l’évaluateur utilise l’appel à l’outil transfer_to_agent comme marqueur de limite dans la transcription.

Implémentation via l’API

Vous pouvez configurer l’outil système transfer_to_agent lors de la création ou de la mise à jour d’un agent via l’API.

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)