Variables dynamiques
Transmettez des valeurs d’exécution pour personnaliser le comportement de votre agent.
Les variables dynamiques vous permettent d’injecter des valeurs d’exécution dans les messages, les prompts système et les outils de votre agent. Vous pouvez ainsi personnaliser chaque conversation avec des données propres à l’utilisateur, sans concevoir plusieurs agents.
Vue d’ensemble
Les variables dynamiques peuvent être intégrées à plusieurs aspects de votre agent :
- Prompts système pour personnaliser le comportement et le contexte
- Premiers messages pour personnaliser les salutations
- Paramètres et en-têtes des outils pour transmettre des données propres à l’utilisateur
Voici quelques exemples d’utilisation des variables dynamiques :
- Personnaliser les salutations avec les noms des utilisateurs
- Inclure les détails du compte dans les réponses
- Transmettre des données lors d’appels d’outils
- Personnaliser le comportement selon les niveaux d’abonnement
- Accéder aux informations système telles que l’ID de conversation ou la durée de l’appel
Les variables dynamiques prennent en charge trois types de valeurs :
Variables dynamiques système
Votre agent a accès, dans chaque conversation et sans configuration à l’exécution, aux variables intégrées system__*. Ces variables sont préfixées par l’espace de noms réservé system__ et se mettent automatiquement à jour à mesure que la conversation progresse. Les variables dynamiques personnalisées ne peuvent pas utiliser le préfixe system__ ni remplacer les variables système.
Les variables marquées d’un † changent d’un tour à l’autre. Les placer dans le texte d’un prompt peut empêcher la mise en cache du prompt. Consultez les bonnes pratiques pour découvrir des alternatives.
Identité de l’agent et de la conversation
Heure et fuseau horaire
Téléphonie et messagerie
Ces variables sont renseignées lorsqu’elles s’appliquent aux canaux de téléphonie et de messagerie :
État de la conversation à chaque tour
Format de l’historique de conversation
La variable system__conversation_history contient un objet JSON ayant la structure suivante :
Chaque entrée comprend un role ("user", "agent" ou "tool") et l’un des éléments suivants :
message: le contenu textuel du tourtool_requests: un tableau d’appels d’outils effectués par l’agent, avec les valeurs de paramètres résoluestool_results: un tableau de réponses d’outils
Si le résultat d’un outil ou un paramètre contient un historique de conversation imbriqué, celui-ci est remplacé par un espace réservé (tel que [conversation_history (5 turns)]) afin d’éviter une expansion récursive illimitée.
Cette variable est utile pour transmettre le contexte de conversation à des outils, tels que des webhooks ou des LLM personnalisés, ou pour inclure l’historique de conversation dans les prompts de sous-agents lors des transferts.
Variables dynamiques secrètes
Les variables dynamiques secrètes sont renseignées de la même manière que les variables dynamiques normales, mais indiquent à ElevenAgents qu’elles doivent être utilisées uniquement dans les en-têtes de variables dynamiques et ne jamais être envoyées à un fournisseur de LLM dans le prompt système ou le premier message d’un agent.
Utilisez des variables dynamiques secrètes pour les jetons d’authentification ou les ID privés qui ne doivent pas être envoyés à un LLM. Pour créer une variable dynamique secrète, préfixez la variable dynamique avec secret__.
Les valeurs secrètes sont stockées sous forme masquée ; l’API des conversations les renvoie donc comme <REDACTED>.
Les webhooks de transcription après appel transmettent les valeurs d’origine. Assurez-vous donc que votre point de terminaison webhook
les traite comme des secrets. N’utilisez pas le préfixe secret__ pour les valeurs que vous devez récupérer depuis l’
API des conversations. Transmettez-les comme des variables dynamiques ordinaires, ou transmettez un identifiant non sensible et
recherchez la valeur sensible dans votre propre système.
Mettre à jour des variables dynamiques à partir d’outils
Les appels d’outils peuvent créer ou mettre à jour des variables dynamiques s’ils renvoient un objet JSON valide. Pour définir ce qui doit être extrait, définissez les chemins d’objet à l’aide de la notation par points. Si le champ ou le chemin n’existe pas, aucune mise à jour n’est effectuée.
Exemple d’objet de réponse et de notation par points :
- Le statut correspond au chemin :
response.status - L’email du premier utilisateur dans le tableau users correspond au chemin :
response.users.0.email
Pour définir une variable dynamique sur l’email du premier utilisateur, configurez l’affectation comme suit.

Les affectations sont configurées sur chaque outil webhook. Consultez les affectations d’outils dans le Guide de l’API.
Guide
Prérequis :
- Un compte ElevenLabs
- Un agent ElevenAgents configuré (suivez le guide de démarrage rapide pour en concevoir un)
Définir des variables dynamiques dans les prompts
Ajoutez des variables à l’aide d’accolades doubles {{variable_name}} dans vos :
- Prompts système
- Premiers messages
- Paramètres d’outils


Définir des variables dynamiques dans les outils
Vous pouvez également définir des variables dynamiques dans la configuration de l’outil.
Pour créer une variable dynamique, définissez le type de valeur sur Variable dynamique et cliquez sur le bouton +.


Définir des espaces réservés
Configurez des valeurs par défaut pour effectuer des tests sans transmettre de variables à l’exécution.
Mettre à jour via le Dashboard
Mettre à jour via la CLI
Mettre à jour via l'API
Définissez des valeurs par défaut pour chaque variable dynamique dans le Dashboard de l’agent.

Transmettre des variables à l'exécution
Lorsque vous démarrez une conversation, fournissez les variables dynamiques dans votre code :
Vérifiez que vous avez installé la dernière version du SDK.
Intégration à la page publique de conversation
La page publique de conversation prend en charge les variables dynamiques via des paramètres URL, ce qui vous permet de personnaliser les conversations lorsque vous partagez des liens d’agent. Cette fonctionnalité est particulièrement utile pour intégrer des agents personnalisés dans des sites web, des emails ou des campagnes marketing.
Méthodes de paramètres URL
Il existe deux méthodes pour transmettre des variables dynamiques à la page publique de conversation :
Méthode 1 : JSON encodé en Base64
Transmettez les variables sous forme d’objet JSON encodé en base64 à l’aide du paramètre vars :
Le paramètre vars contient du JSON encodé en base64 :
Méthode 2 : paramètres de requête individuels
Transmettez les variables à l’aide de paramètres de requête préfixés par var_ :
Priorité des paramètres
Lorsque les deux méthodes sont utilisées simultanément, les paramètres var_ individuels sont prioritaires sur les variables encodées en base64 afin d’éviter les conflits :
Dans cet exemple, user_name aura la valeur "John" (provenant de var_user_name) au lieu de "Jane" (provenant de vars encodé en base64).
Exemples d’implémentation
Génération d'URL en JavaScript
Génération d'URL en Python
Construction manuelle d'URL
Bonnes pratiques
Définir un fuseau horaire plutôt que d'ajouter l'heure actuelle dans les prompts
Les variables du prompt système, des nœuds de workflow et des procédures sont résolues à chaque tour. Si une valeur change entre deux tours, le prompt ne peut pas être mis en cache, ce qui augmente le coût et la latence. {{system__time_utc}} et {{system__time_second}} changent à chaque tour ; {{system__time}} et {{system__time_minute}} changent chaque minute.
Pour fournir à l’agent la date et l’heure actuelles, définissez un fuseau horaire à l’aide du bouton de fuseau horaire dans l’éditeur de prompt système (conversation_config.agent.prompt.timezone), au lieu de placer {{system__time}} ou {{system__time_utc}} dans le texte du prompt. Lorsqu’un fuseau horaire est défini, la plateforme ajoute la date et l’heure actuelles en dehors du préfixe du prompt mis en cache, afin que votre prompt système reste mis en cache d’un tour à l’autre. Sans fuseau horaire, l’agent ne reçoit pas la date et l’heure actuelles.
Si votre prompt nécessite la date ou l’heure en ligne, combinez {{system__time_date}}, {{system__time_hour}} et {{system__timezone}} (par exemple, Nous sommes le {{system__time_date}}, il est {{system__time_hour}} h ({{system__timezone}})). Ces valeurs changent au plus une fois par heure.
Lier les variables d'état en direct aux paramètres et en-têtes des outils
Si un outil a besoin d’une valeur marquée d’un †, liez-la au paramètre ou à l’en-tête de l’outil au lieu de la placer dans le prompt. Les paramètres d’outils ne sont résolus que lorsque l’outil est appelé ; ils n’affectent donc pas la mise en cache du prompt. Le LLM a déjà accès à la conversation ; {{system__conversation_history}} est donc rarement nécessaire dans les prompts.
Envisager des alternatives aux compteurs de tours dans les prompts
Si votre prompt vérifie des compteurs de tours tels que {{system__agent_turns}}, envisagez les alternatives suivantes. Utilisez first_message pour les salutations ou les mentions d’information statiques d’ouverture.
Pour le comportement lors de la première réponse, vous pouvez formuler l’instruction autour de l’historique de conversation (par exemple, « Lors de votre première réponse, lorsque vous n’avez pas encore salué l’appelant… »). Cette approche repose sur le respect de l’instruction par le LLM. Testez-la donc avec votre modèle et conservez le compteur de tours si les résultats sont moins fiables.
Si le compteur détermine seulement le moment d’une bifurcation ou d’une escalade, une condition d’expression de branche de workflow ou une expression d’étape If d’une procédure structurée (telle que system__agent_turns >= 5) peut le gérer en dehors du prompt. Cela ne couvre pas les cas où le LLM a besoin de la valeur elle-même.
Utiliser secret__ uniquement pour les valeurs qui restent dans les en-têtes d'outils
Préfixez les jetons d’authentification et les clés API avec secret__ afin qu’ils ne puissent être liés qu’aux en-têtes d’outils et ne soient jamais envoyés au LLM. Comme les valeurs secret__ sont masquées sous la forme <REDACTED> dans l’API des conversations (les webhooks de transcription après appel reçoivent toujours les valeurs d’origine), transmettez les valeurs que vous devez récupérer depuis l’API des conversations comme variables dynamiques ordinaires, ou transmettez un identifiant non sensible et recherchez la valeur sensible dans votre propre système.
Ne pas utiliser system__user_id pour l'authentification
system__user_id est fourni par le client à des fins de suivi et d’analyse, et n’est pas vérifié par ElevenAgents. Vérifiez l’identité de l’appelant via un webhook de démarrage de conversation, un jeton signé dans une variable d’en-tête secret__ ou un appel d’outil de vérification avant d’exposer les données du compte.
Configurer des espaces réservés pour les tests et les aperçus
Définissez des valeurs par défaut dans dynamic_variable_placeholders pour chaque variable personnalisée utilisée dans vos prompts, vos premiers messages et vos outils. Les aperçus de conversations dans le Dashboard et les tests de simulation n’exécutent pas les webhooks de démarrage de conversation. Les variables non définies restent donc des espaces réservés littéraux {{variable_name}} lors des tests.
Résolution des problèmes
Variables non remplacées
Vérifiez que :
- Les noms des variables correspondent exactement, en respectant la casse
- Les variables utilisent des doubles accolades :
{{variable_name}} - Les variables sont incluses dans votre objet
dynamic_variables
Erreurs de type
Assurez-vous que :
- Les valeurs des variables correspondent au type attendu
- Les valeurs sont uniquement des chaînes de caractères, des nombres ou des valeurs booléennes