Versioning des agents
Expérimentez en toute sécurité avec les configurations d’agent grâce aux branches, aux versions et au déploiement du trafic
Le versioning des agents vous permet d’expérimenter différentes configurations de votre agent sans risquer votre environnement de production. Créez des branches isolées, testez les modifications et déployez progressivement les mises à jour à l’aide d’un déploiement par pourcentage de trafic.
Vous souhaitez effectuer des tests A/B ? Consultez Expériences pour connaître le workflow recommandé afin de tester les modifications d’un agent sur du trafic actif.
Vue d’ensemble
Le système de versioning fournit :
- Des instantanés immuables de la configuration de votre agent à tout moment
- Des branches isolées pour tester les modifications avant la mise en production
- Une répartition du trafic pour déployer progressivement les modifications auprès d’un pourcentage d’utilisateurs
- La fusion pour intégrer les modifications de n’importe quelle branche dans toute autre branche
- Le rebasage pour intégrer dans une branche les dernières modifications de la branche principale
Une fois le versioning activé sur un agent, il ne peut pas être désactivé. Tenez-en compte avant d’activer le versioning sur des agents existants.
Concepts clés
Versions
Une version est un instantané immuable de la configuration d’un agent à un moment précis. Chaque version possède un ID unique, au format agtvrsn_xxxx, et contient :
conversation_config: prompt système, paramètres LLM, configuration vocale, outils, base de connaissancesplatform_settings: sous-ensemble versionné incluant les paramètres d’évaluation, de widget, de collecte de données et de sécuritéworkflow: définition complète du workflow avec nœuds et arêtes
Les versions sont créées automatiquement lorsque vous enregistrez des modifications dans un agent versionné. Une fois créée, une version ne peut pas être modifiée.
Branches
Les branches sont des lignes de développement nommées, similaires aux branches git. Elles vous permettent de travailler sur des modifications de manière isolée avant de les fusionner dans la branche principale.
- Chaque agent versionné possède une branche Main qui ne peut pas être supprimée ni archivée
- Des branches supplémentaires peuvent être créées à partir de n’importe quelle version de toute branche existante, pas uniquement de la branche principale
- Les branches peuvent être fusionnées dans toute autre branche, et les branches autres que la branche principale peuvent être rebasées sur la branche principale pour intégrer ses dernières modifications
- Chaque branche possède : un ID (
agtbrch_xxxx), un nom, une description et une liste de versions - Les noms de branche peuvent contenir des lettres, des chiffres et
() [] {} - / .(140 caractères maximum)
Déploiement du trafic
Le trafic peut être réparti entre plusieurs branches par pourcentage, permettant des déploiements progressifs et des tests A/B.
- Le total des pourcentages doit toujours être exactement de 100 %
- Le routage du trafic est déterministe selon l’ID de conversation, un même utilisateur est donc toujours routé vers la même branche
- Seules les branches non archivées avec 0 % de trafic peuvent être archivées
Brouillons
Les modifications non enregistrées sont stockées comme brouillons, ce qui vous permet de travailler sur des modifications sans créer immédiatement une nouvelle version.
- Les brouillons sont par utilisateur et par branche ; chaque membre de l’équipe dispose de son propre brouillon
- Les brouillons sont automatiquement supprimés lorsqu’une nouvelle version est validée
- Les brouillons sont également supprimés lors d’une fusion dans une branche
Activer le versioning
Le versioning est facultatif et doit être activé explicitement. Vous pouvez l’activer lors de la création d’un nouvel agent ou sur un agent existant.
Une fois activé, le versioning ne peut pas être désactivé. Cette modification est permanente pour votre agent.
Activer lors de la création d’un agent
Activer depuis le Dashboard
Activer via l’API
Ouvrez votre agent dans le Dashboard, accédez à Paramètres et activez le versioning. Une fois activé, l’onglet Versioning devient disponible pour gérer les branches, les brouillons, les versions et le déploiement du trafic.
Activer sur un agent existant
Activer depuis le Dashboard
Activer via l’API
Ouvrez votre agent dans le Dashboard, accédez à Paramètres et activez le versioning.
L’activation du versioning crée la branche initiale « Main » avec une première version contenant la configuration actuelle de l’agent.
Utiliser les branches
Créer une branche
Les branches peuvent être créées à partir de n’importe quelle version de toute branche, pas uniquement de la branche principale. Vous pouvez éventuellement inclure des modifications de configuration qui seront appliquées à la version initiale de la nouvelle branche.
Lister les branches
Obtenir les détails d’une branche
Valider des modifications
Lorsque vous mettez à jour un agent avec le versioning activé, spécifiez branch_id pour créer une nouvelle version sur cette branche.
Mettre à jour depuis le Dashboard
Mettre à jour via la CLI
Mettre à jour via l’API
Ouvrez l’onglet Versioning de votre agent, sélectionnez la branche cible, modifiez la configuration et enregistrez pour créer une nouvelle version.
Une nouvelle version est créée automatiquement sur la branche spécifiée, et tout brouillon existant pour cet utilisateur sur cette branche est supprimé.
Déployer le trafic
Utilisez l’endpoint de déploiement pour répartir le trafic entre les branches. Cela permet des déploiements progressifs et des tests A/B.
Le routage du trafic est déterministe selon l’ID de conversation, ce qui garantit qu’un même utilisateur accède systématiquement à la même branche au fil des sessions.
Fusionner des branches
Lorsque les modifications d’une branche vous conviennent, fusionnez-les dans une autre branche. Toute branche non archivée peut être fusionnée dans toute autre branche non archivée, pas uniquement dans la branche principale.
Pour faire examiner les modifications d’une branche avant leur fusion, ou pour accéder à une branche pour laquelle vous ne disposez pas d’un accès en écriture, ouvrez une proposition de fusion au lieu de fusionner directement.
La fusion :
- Crée une nouvelle version sur la branche cible avec la configuration de la branche source
- Archive éventuellement la branche source, comportement par défaut
- Transfère automatiquement le trafic de la branche source vers la branche cible
La fusion échoue avec no_new_changes_to_merge si la branche source a été créée à partir de la branche cible
et ne contient aucun nouveau commit au-delà de celle-ci, et avec branch_already_merged si elle a déjà été fusionnée
dans cette branche cible.
Résoudre les conflits de fusion
Si un paramètre a été modifié à la fois dans la branche source et dans la branche cible depuis leur divergence, la valeur de la branche mise à jour le plus récemment est conservée par défaut. Définissez force=True pour toujours utiliser la valeur de la branche source, indépendamment des horodatages.
Prévisualisez le résultat d’une fusion, y compris les champs qui seraient remplacés, avant de la valider :
Rebaser des branches sur main
Le rebasage intègre les dernières modifications de la branche main dans une autre branche, à l’image d’un git rebase. Il permet de maintenir une branche de longue durée à jour avec main, sans encore fusionner les propres modifications de la branche.
Le rebasage :
- Crée une nouvelle version sur la branche qui intègre les dernières modifications de main
- Préserve les propres modifications de la branche : si un paramètre a été modifié à la fois sur la branche et sur main, la valeur de la branche est toujours conservée
- Échoue avec
branch_already_up_to_datesi la branche inclut déjà toutes les modifications de main
Seules les branches autres que main peuvent être rebasées, et uniquement sur main. Le rebasage de la branche main elle-même
renvoie une erreur cannot_rebase_main.
Prévisualisez le résultat d’un rebasage avant de le valider :
Archiver des branches
Archivez les branches dont vous n’avez plus besoin. Votre liste de branches reste ainsi organisée.
Vous ne pouvez pas archiver une branche à laquelle du trafic est attribué. Supprimez tout le trafic avant de l’archiver.
Vous pouvez désarchiver les branches archivées en définissant archived=False.
Récupérer des versions spécifiques
Vous pouvez récupérer un agent à une version spécifique ou à la pointe d’une branche.
Récupérer un agent à une version spécifique
Récupérer un agent à la pointe d’une branche
Inclure les modifications de brouillon
Référence des paramètres
Paramètres versionnés
Ces paramètres peuvent différer selon les versions et les branches :
Paramètres par agent
Ces paramètres sont partagés entre toutes les versions :
Les modifications du nom et des balises sur des branches autres que main ne sont pas appliquées à l’agent tant qu’elles ne sont pas fusionnées avec main.
Bonnes pratiques
Créer des tests avant de créer une branche
Configurez des tests automatisés qui reproduisent le comportement attendu avant de créer une nouvelle branche. Vous établissez ainsi une référence et détectez rapidement les régressions lorsque vous itérez sur votre expérimentation.
Utiliser des noms de branche explicites
Choisissez des noms de branche qui communiquent clairement l’objectif de l’expérimentation. Incluez le nom de la fonctionnalité,
l’hypothèse ou le numéro du ticket pour les retrouver facilement (par exemple, feature/new-greeting-flow ou
experiment/shorter-responses).
Documenter l’objectif des branches
Utilisez le champ de description de la branche pour expliquer l’hypothèse que vous testez, les métriques qui définissent la réussite, ainsi que les dépendances ou considérations éventuelles. Les membres de l’équipe comprennent ainsi les expérimentations en cours.
Utiliser les brouillons pour les travaux en cours
Enregistrez fréquemment des brouillons pendant que vous itérez sur les modifications. Vous préservez ainsi votre travail sans créer de versions inutiles. Effectuez un commit uniquement lorsque vous êtes prêt à tester ou à déployer.
Commencer avec de faibles pourcentages de trafic
Lors du déploiement d’une nouvelle branche, commencez avec 5 à 10 % du trafic. Vous limitez ainsi l’exposition en cas de problème, tout en obtenant des données pertinentes.
Surveiller les métriques clés avant d’augmenter le trafic
Utilisez le Dashboard d’analytique pour comparer les performances des branches. Examinez les taux de finalisation des appels, la durée moyenne des conversations, les scores d’évaluation de réussite et les taux d’exécution des outils. N’augmentez le trafic que lorsque les métriques atteignent ou dépassent la référence de votre branche main.
Augmenter le trafic progressivement
Augmentez le trafic par paliers (10 % → 25 % → 50 % → 100 %) à mesure que votre confiance grandit. Cette approche minimise les risques tout en validant les performances à chaque étape.
Limiter la durée de vie des branches
Fusionnez rapidement les expérimentations réussies pour éviter les écarts de configuration. Pour les branches qui doivent rester ouvertes plus longtemps, rebasez-les périodiquement sur main afin qu’elles ne s’en écartent pas trop et ne deviennent pas plus difficiles à fusionner.