Dialfire Agent AI - Guide

Dialfire Agent AI - Guide : Quelques étapes pour devenir un agent AI prêt à l'emploi - simple, flexible, fascinant.

Démarrage rapide : voici comment lancer votre agent IA dans Dialfire

Bienvenue dans l'univers des agents IA Dialfire !🎉

Ne vous inquiétez pas, vous n'avez pas besoin d'être un expert en technologie pour mettre en place votre propre agent IA intelligent. En quelques clics seulement, votre agent est prêt à l'emploi et attend de prendre vos appels.

C'est aussi simple que ça :
  • Dans le menu Dialfire, ouvrez Voice Automation : c'est ici que tous les agents IA sont créés et gérés.
  • Cliquez en haut à droite sur Nouveau IVR et sélectionnez votre agent IA. Il est créé en un seul clic.
  • Voilà: Vous AI Agent commencez avec un modèle d'exemple prêt à l'emploi. Ce modèle contient déjà tous les éléments importants pour démarrer – parfait pour y apporter immédiatement vos propres modifications.

Les bases du prompting – commencez facilement, développez-vous intelligemment 🎓

Le plus important dans le prompting : Commencez petit et développez progressivement.

Pour un démarrage réussi :
  • Commencez par un variante minimale qui explique à l'agent de manière approximative ce que vous attendez de lui. Au sens figuré : dites à l'agent où il doit aller, pas comment il doit bouger ses pieds.
    Testez ce que l'agent maîtrise déjà – vous serez surpris.
  • Créez ensuite une variante qui est tout juste suffisante pour passer en ligne.
  • Commencez avec un volume d'appels raisonnable qui vous permet de visualiser chaque appel individuellement.
  • Résolvez les problèmes que vous identifiez en situation réelle – ceux-ci sont souvent très différents de ceux qui vous ont posé problème lors des « tests de simulation ». C'est la partie à laquelle vous devriez consacrer le plus de temps.

☝️Moins, c'est souvent mieux :
  • Fixez-vous des attentes réalistes : les humains font des erreurs, l'IA aussi – la perfection à 100 % n'existe pas.
  • Formulez de manière claire et simple.
  • Évitez les instructions contradictoires.
  • Lorsque vous indiquez ce que le bot ne doit pas faire, précisez également ce qu'il doit faire à la place.
  • N'utilisez le discours direct que là où c'est nécessaire (par exemple, pour la conformité). Décrivez plutôt « ce que » l'agent doit dire, et non « comment » il doit le dire.
  • Évitez les informations supplémentaires inutiles.
  • Ne vous focalisez pas sur des erreurs individuelles et n'essayez pas de les compenser.
  • Les instructions supplémentaires détériorent souvent les performances dans d'autres domaines qui fonctionnaient bien auparavant. Recherchez plutôt des instructions que vous pouvez supprimer, ce qui est souvent beaucoup plus efficace.
  • Décrivez votre projet à votre agent afin qu'il comprenne le sens des différentes instructions et puisse prendre de meilleures décisions.
  • L'agent IA n'est pas un extraterrestre👽 : Avant d'expliquer le monde à l'agent, vérifiez qu'il ne connaît pas déjà le concept.
    Exemple : « Tu es un robot de service dans une agence de location de voitures » au lieu de « Tu reçois des appels de clients qui ont des problèmes avec une voiture ».

Ces règles simples vous permettent déjà de créer des agents IA utiles pour une utilisation pratique.

💡Attention : Si vous ajoutez de plus en plus de tâches, vous finirez par remarquer que votre agent semble devenir moins intelligent, perd en spontanéité et commet des erreurs. C'est tout à fait naturel et cela s'explique par le fait que, tout comme les humains, l'IA a une capacité d'attention limitée.

La bonne nouvelle : Il existe des solutions à ce problème, que nous vous présentons ci-dessous. Vous n'avez donc plus aucune limite. 🎉

Le premier prompt : le cœur de votre agent

Le prompt est le cerveau de votre agent IA. C'est là que vous définissez qui il est, comment il parle et ce dont il est capable. 

☝️Important : La structure n'est pas imposée, la créativité et l'expérience font la différence. Tout ce que vous savez déjà sur l'utilisation de l'IA reste valable.

☝️Règle de base : Rédigez le prompt comme vous le feriez pour un nouvel employé avant de le laisser répondre au téléphone. Si vous suivez ce conseil, vous pouvez ignorer de nombreux tutoriels.

Structure approximative du prompt :

Contient les descriptions de base du comportement que doit adopter le bot :

  • Rôle et objectif – Qui parle ? Quel est l'objectif de l'agent ?
  • Tâche – Que doit faire l'agent pendant la conversation ?
  • Lignes directrices – Que ne doit en aucun cas faire l'agent pendant la conversation ?
  • FAQ / Modèles de réponse – Phrases types courtes et claires pour le LLM

Contient Instructions de contrôle qui sont directement intégrées dans le texte et qui confèrent encore plus de dynamisme à l'ensemble

À l'exception des instructions de contrôle facultatives, il n'y a pas de format particulier que vous devez impérativement respecter. Nous recommandons Markdown pour le formatage, car il est particulièrement bien compris par l'IA.

Exemple de prompt de démarrage simple :

# Your Role
You are Helena Fisher, a friendly AI phone agent from GreatProducts. You always speak politely, confidently, and in a natural tone.
 
# Your Task
Greet the customer and ask them to briefly explain their request.
$customer_request Customer's inquiry
 
Answer questions from the FAQ. For unknown requests, transfer the call using function "connect_agent". If resolved, say goodbye and use function "hangup".
 
@connect_agent Transfers the call to a human agent.
@hangup Ends the call.
 
# FAQ
Q: Wants to return product  
A: They can return products within 30 days if unused and in original packaging. 
  
Q: Delivery times  
A: Standard: 3–5 business days. Express: 1–2 business days.  
 
Q: Opening hours  
A: Mon–Fri: 8:00–18:00, Sat: 9:00–14:00. 
 

Dans l'exemple, vous voyez # Your Task comme titre de section dans format Markdown ainsi que $customer_request et @connect_agent comme instructions de contrôle. Nous reviendrons plus en détail sur ces deux éléments dans un instant... restez attentif 😉

Tester le prompt – essayer, découvrir, optimiser 🧪

Avant que votre agent IA ne brille dans la pratique, testez votre prompt directement dans le menu Voice Automation. Vous pouvez facilement vérifier ici comment votre agent réagit, soit via Call, soit dans Chat.

Comment ça marche :
  • Ouvrir le menu : naviguez vers Voice AutomationTest.
  • Sélectionner le mode test : choisissez entre Call (appel simulé) ou Chat (interaction textuelle).
  • Lancer l'interaction : prononcez ou écrivez vos requêtes de test, exactement comme le feraient vos clients.
  • Observez les résultats : vérifiez si l'agent remplit correctement les variables et exécute de manière fiable les invocations de fonctions.

💡Conseil : De petites modifications à un endroit peuvent avoir un impact important sur l'ensemble du processus. Testez à nouveau immédiatement.

C'est parti, votre agent IA est prêt à démarrer ! 🚀

🎉 Félicitations !

Vous avez réussi : vous avez configuré et testé votre agent IA et il est maintenant prêt à faire passer l'expérience du service client à un niveau supérieur ! Cependant, avant que votre agent puisse commencer, vous devez lui attribuer la bonne ligne entrante :

1️⃣ Dans le menu Voice Automation, allez dans la zone de test et activez la version finale de votre bot.

2️⃣ Activer sur votre ligne entrante :

  • Ouvrez le menu Numéros de téléphone et sélectionnez la ligne souhaitée.
  • Sous Paramètres SVI, sélectionnez le titre de votre bot dans le menu déroulant SVI.
  • Cochez la case activé et sauvegardez – c'est terminé !

Et voilà, votre agent IA est en ligne et prêt à ravir vos clients. Détendez-vous, profitez du spectacle et observez votre nouveau collègue virtuel révolutionner votre service client ! 🤘

La facturation de votre agent IA est simple et transparente :
  • Toutes les minutes de connexion de l'agent IA sont facturées au tarif Conversational AI C, en plus des frais de connexion habituels.
  • De plus, la durée des synthèses vocales générées est également facturée selon le tarif Conversational AI C.
  • 💡Smart-Saving: Les sorties vocales qui se répètent exactement sont automatiquement mises en mémoire cache. Cela n'entraîne aucun coût supplémentaire lors du prochain appel.

Ce que nous n'avons pas encore expliqué... 🤔

Dans le prompt d'exemple, deux éléments apparaissent que nous souhaitons souligner :

  • Les textes indicatifs pour les variables tels que $customer_request
  • Les appels de fonction tels que @connect_agent

Ces deux éléments sont des outils essentiels qui rendent votre Agent encore plus puissant.

Dans l'étape suivante, nous vous montrerons comment fonctionnent les variables et les invocations de fonctions, et pourquoi elles sont la clé pour mener des conversations vraiment intelligentes.

Textes indicatifs

Avec textes indicatifs pour variables insérées, votre agent devient un pro des notes : il enregistre automatiquement les informations issues de la conversation directement dans les données, que vous pouvez ensuite traiter dans Dialfire.

Syntaxe:

$nom_du_champ description du champ → définit un champ attendu

Exemple:

$demande_client demande du client → enregistre la demande formulée par le client  

☝️Important:
  • Placez le champ avec $ devant, sur une ligne séparée, à proximité du sujet auquel le champ se rapporte. Ainsi, l'agent sait, grâce au contexte environnant, quand le champ doit être rempli. Cependant, ne faites aucune référence à la variable dans le reste du texte du prompt, c'est-à-dire pas : « N'oubliez pas de remplir la variable XYZ »
  • Nommez la variable de manière à ce qu'elle ait un sens pour l'agent – par exemple « Prénom » au lieu de « Champ15 » et ajoutez une petite description après le nom du champ – cela fonctionne de manière beaucoup plus fiable

Variable avec options

Écrivez directement sous la variable une autre ligne options: avec les valeurs autorisées, séparées par des virgules. L'agent ne peut alors utiliser que celles-ci. Cela ressemble par exemple à ceci :

$will_newsletter Le client accepte de recevoir la newsletter.
options : oui, non

Invocation de fonctions – Déclencher des actions

Function Calls sont les boutons d'action de votre agent. Ils déclenchent des actions directes lorsqu'une action immédiate est nécessaire.

Les fonctions proprement dites sont visibles dans l'onglet Script. Il s'agit de fonctions Javascript que vous pouvez étendre à votre guise.

Pour pouvoir utiliser ces fonctions, elles doivent être communiquées à l'agent dans le prompt. Cela se fait sur une nouvelle ligne avec @ suivi du nom de la fonction et d'une description. Contrairement aux variables, l'emplacement dans le prompt n'a pas d'importance.

En principe, l'agent décide lui-même, à partir du contexte de la conversation, quand il souhaite utiliser les fonctions. Mais vous pouvez intervenir dans le prompt et demander à l'agent d'annoncer son utilisation. Cela permet d'assurer des transitions très naturelles dans la conversation.

Exemple:

  • Dans l'onglet Script, vous trouverez la fonction suivante :

    function connect_agent​(){
     ...
    }

  • Dans le prompt, vous faites connaître cette fonction avec :

    @connect_agent Connecter l'appelant à un humain.

  • Et dans le texte, écrivez par exemple :

    Si vous ne connaissez pas la réponse à la question, dites que vous allez mettre l'appelant en relation avec un collaborateur qui pourra certainement l'aider et utilisez en même temps la fonction "connect_agent".

Avancé – Sortez de votre cage

Bienvenue au niveau supérieur ! 🎮

Vos premiers agents IA sont déjà opérationnels. Nous allons maintenant vous révéler les secrets qui vous permettront de faire connaître votre agent au monde extérieur. Ne vous inquiétez pas : même si cela s'appelle « Avancé », vous n'avez pas besoin d'un doctorat en informatique pour cela, même si cela ne peut pas faire de mal. 🙂 Considérez cela comme une boîte à outils bien remplie qui n'attend que de pouvoir créer des choses formidables.

💡 Pouvez-vous garder un secret ?

Ce que nous avons appelé jusqu'à présent « prompt » n'est en réalité pas un prompt statique. Il s'agit d'un modèle dynamique qui est recomposé à chaque tour.

Pour les informaticiens, cela semble immédiatement familier : pas un morceau de texte rigide, mais un système de rendu flexible – similaire à VueJS ou Angular, mais uniquement pour les agents IA.

Et c'est précisément là que les fonctions de modèle avancées entrent en jeu...  

Fonctionnalités avancées des modèles – les super-pouvoirs de votre prompt 🦸‍♂️

Le prompt modèle peut faire bien plus que de simples remplacements de valeurs. Il maîtrise une syntaxe de modèle complexe que vous pouvez imbriquer à volonté. Votre prompt devient ainsi un kit de construction flexible qui reproduit proprement même les logiques de conversation complexes.

Remplacements de valeurs avec {{expression}}

Le cas le plus simple : {{data.feldname}}

Mais attention : il ne s'agit pas seulement de noms de champs, des appels de fonctions sont également possibles. Vous pouvez ainsi intégrer directement des contenus dynamiques dans le modèle..

Blocs conditionnels avec IF

La directive IF vous permet de contrôler quels contenus apparaissent réellement dans le prompt. Soit au milieu du texte :

({{#if condition}} Texte facultatif {{/if}})

soit avec plusieurs alternatives, entourant de grands blocs :

{{#if condition}}
{{#elif alternative_condition}}
{{#else}}
{{/if}}

Avantage : afficher éléments alternatifs/optionnels dans le prompt

Boucles avec EACH

Pour les éléments répétitifs, utilisez EACH :

{{#each itemVar @ array-expression}}
{{/each}}

Idéal lorsque les éléments se répètent autant de fois que nécessaire, par exemple une liste de produits ou de contrats.

Grâce à ces fonctions de modèle avancées, vous apportez dynamisme à vos agents.

💡L'avez-vous déjà remarqué ? Dans les Logs, vous trouverez également un petit lien vers next prompt dans les réponses de l'agent. Vous pouvez ainsi vérifier facilement si le prompt générée était correcte.

Définir vos propres fonctions

Nous avons déjà parlé des fonctions, mais pas encore de la syntaxe complète. Dans l'onglet Script, vous définissez une fonction dans Javascript, par exemple comme suit :

function funktionsname(args){
}

L'objet args contient alors les paramètres que l'agent a transmis lors de l'appel.

IDans le prompt proprement dit, vous déclarez la fonction, par exemple comme suit :

@nom_de_la_fonction Description de l'objectif de la fonction
-argument1: Description du paramètre
options: valeur1,valeur2
optional: true
-argument2: Description du 2e paramètre

Avec options, vous indiquez les valeurs autorisées si vous ne souhaitez autoriser que certaines possibilités. Et avec optional, vous spécifiez que ce paramètre n'est pas obligatoire.

Et que retourne la fonction ?

La valeur renvoyée ne doit pas nécessairement respecter un format particulier. Il est possible de renvoyer n'importe quelle structure d'objet ou même une simple chaîne de caractères contenant une instruction sur la manière dont l'agent doit procéder.
L'important est que l'agent puisse en comprendre le sens. 

💡Conseils

  • Des noms de fonctions et de paramètres bien choisis, accompagnés d'une description appropriée, sont essentiels pour une utilisation fiable par l'agent.
  • Utilisez les fonctions avec parcimonie. Si l'agent a le choix entre de nombreuses fonctions, cela lui demande beaucoup de budget d'attention.

Textes indicatifs vs invocations de fonction — quoi, quand, pourquoi ? 🤔

Les textes indicatifs s'exécute silencieusement en arrière-plan et écrit les valeurs reconnues (par exemple, nom, code postal) dans l'objet data.

  • Avantage : économise le budget d'attention du LLM.
  • Inconvénient : la valeur ne peut pas être vérifiée avant que le bot ne réponde.

Invocation de fonction sont les acteurs actifs : le LLM appelle une fonction qui effectue des vérifications ou des validations pendant l'exécution.

  • Domaine d'application : partout où vous avez besoin de résultats immédiats — par exemple, validations ou requêtes CRM.

💡Règle pratique :

  • Textes indicatifs → pour les champs non critiques
  • Invocation de fonction → pour tout ce qui doit être validé ou traité immédiatement

L'environnement Javascript 💻

Avec Javascript, vous disposez d'un environnement LowCode qui vous permet de réaliser des fonctions avancées.

Objets globaux

Dans l'environnement Javascript, vous trouverez plusieurs objets globaux que vous pouvez utiliser à partir de n'importe quelle fonction.

data {} - l'objet central dont les champs sont directement transférés dans les données de contact pour un traitement ultérieur

temp {} - un objet temporaire dans lequel vous pouvez stocker des données sérielles entre les tours 

  • actions []  - pour déclencher des commandes de contrôle
  • tts_translation {} - une carte d'expressions Regex au format chaîne vers des remplacements phonétiques afin d'imposer la prononciation correcte de certains termes
  • LOG ()  - une fonction pour les sorties de journal que vous pouvez ensuite voir dans le journal des conversations

Déclencher des appels API via HTTP

Pour appels API vers des systèmes externes, des fonctions globales sont disponibles : 

GET​(url, options)
POST​(url, payload, options)
PUT​(url, payload, options)
DELETE​(url, options)

Le résultat est un objet de réponse avec les fonctions suivantes :
status(), text(), json()

La requête fonctionne de manière asynchrone. Vous pouvez donc lancer plusieurs requêtes en parallèle et ce n’est qu’au moment d’accéder à l’une des fonctions que le script attendra la fin de la requête.

Utilisation des hooks de script

Vous pouvez implémenter les hooks suivants en tant que fonction afin de pouvoir réagir à certains événements :

  • onLoad()  - au démarrage de l'agent
  • onUpdate()→ après chaque tour
  • onClose() → à la fin de la conversation (par exemple, tâches de clôture, opérations d'écriture)
  • onFieldUpdate(fieldname,value) - si défini, les espaces réservés aux variables ne sont pas simplement ajoutés à l'objet data, mais sont traités via cette fonction
  • onFunctionCall(name,arguments) → si l'agent appelle une fonction non définie... cela permet d'implémenter des fonctions dynamiques

Au secours, mon agent devient bête  - ou - à quoi sert un index 🤔

Les débuts avec votre agent ne se sont pas bien passés ? Et maintenant, il ne fait tout simplement plus ce qu'il doit faire ?

Vous avez déjà mis en œuvre tous nos conseils, mais malgré tout, c'est désespérant !

Vous êtes alors probablement arrivé au point où vous avez besoin de notre solution promise pour les agents vraiment importants.

Pourquoi les prompts statiques ont leurs limites

Tout comme les humains, les agents IA ont une capacité d'attention limitée. Mais un nouvel employé pourrait très bien travailler avec votre prompt, n'est-ce pas ? L'IA est-elle vraiment si stupide ? Pourquoi peut-elle alors rédiger des textes interminables, mais échoue dans une telle conversation ?

💡 Réponse simple : Votre employé a un index, mais l'IA actuelle n'en a pas !

Une personne peut se souvenir (ou pointer du doigt) où elle en est exactement dans le script de conversation, tandis que l'IA doit le redécouvrir à chaque réponse en fonction du déroulement de la conversation. Cela demande beaucoup d'attention et il ne reste alors plus grand-chose pour la réponse proprement dite.

Bienvenue dans l'ingénierie contextuelle !

Vous êtes à l'aube d'une nouvelle ère de l'ingénieur de prompt à l'ingénieur de contexte. L'idée est d'adapter le contexte (prompt) de manière dynamique afin que seules les parties pertinentes pour la réponse suivante soient disponibles. Et c'est là que les modèles de prompt entrent en jeu.

Tout ce qui peut être utile pour la réponse suivante dans la situation de conversation actuelle doit être inclus, tout le reste doit être exclu.

Agents d'information

Si vous travaillez sur un agent qui doit uniquement fournir des informations, il est judicieux de ne mettre à disposition que la partie réellement pertinente de la base de connaissances. Demandez donc d'abord à l'agent de lancer un invocation de fonction dans lequel la partie appropriée de la base de connaissances est récupérée.  

Pour les bases de connaissances de petite taille, vous pouvez simplement laisser l'utilisateur choisir dans une liste de thèmes. Pour les bases de connaissances très volumineuses, vous avez besoin d'un système RAG.

Vous affichez ensuite le document relatif au thème dans le prompt via le modèle. L'agent peut alors se concentrer pleinement sur la question proprement dite.

Agents transactionnels

Si votre agent doit passer par un processus complexe, vous devriez le diviser en plusieurs phases. Passez d'une phase à l'autre à l'aide d'appels de fonction.

💡Cela résout de nombreux problèmes d'un seul coup :
  • attention totale dans les différentes phases
  • très grande fidélité au processus - respecte scrupuleusement les instructions
  • le processus peut être contrôlé de manière déterministe - l'agent ne peut pas simplement sauter des phases
  • les différentes phases peuvent être optimisées et testées indépendamment, sans influence sur les autres phases
  • non seulement meilleures mais aussi réponses plus rapides grâce à un contexte plus petit
  • votre agent peut croître indéfiniment

Exemple de modèle de prompt

# Rôle
Vous êtes un robot de commande téléphonique chez GreatProducts.
 
# Déroulement général
Vous guidez le client tout au long du processus de commande :
- Accueil
- Saisie du panier
- Saisie des données client
- Saisie des données de paiement
- Au revoir
Concentrez-vous pleinement sur la tâche en cours.
 
# Tâche en cours
{{#if !temp.phase}}
Accueillez le client.
Informez le client que nous allons d'abord enregistrer les articles souhaités et activez simultanément la fonction “Nouveau_panier”.
@Nouveau_panier Créez un nouveau panier pour enregistrer la commande.
{{#elif temp.phase===10}}
Demandez au client les articles souhaités.
….
Une fois tous les articles enregistrés, indiquez que vous avez besoin des coordonnées du client et activez simultanément la fonction “Saisir_les_coordonnées”.
@Saisir_les_coordonnées Préparez la saisie des coordonnées du client.
{{#elif temp.phase===20}}

{{#elif temp.phase===30}}
….
{{#elif temp.phase===40}}
Prenez congé du client et mettez fin à la conversation.
{{/if}}
 
# FAQ
Q : Pourquoi ?  
R : Voilà pourquoi !
 
@hangup met fin à la conversation

Explication

Vous définissez dans chaque phase une fonction qui amène l'agent à la phase suivante. Dans cette fonction, vous définissez le champ temp.phase sur la valeur de la phase suivante.

Cela ne crée-t-il pas un écart étrange entre les phases ? Non, pas du tout.

L'agent prépare verbalement le client à la nouvelle phase. Ensuite, l'agent n'attend pas la réaction du client, mais réagit immédiatement au résultat de l'appel de fonction avec le prompt modifié, de sorte qu'il passe sans transition à la phase suivante, sans qu'il y ait de pause dans la conversation.

Les déclarations de fonction sont également affichées et masquées par le modèle, de sorte que l'agent ne voit que les fonctions pertinentes. Cela fait une grande différence

Comme vous modifiez dynamiquement le prompt pendant la conversation, veillez à ce que le contexte autour des phases soit suffisamment conservé pour que le déroulement de la conversation jusqu'à présent ait encore un sens avec le nouveau prompt. Dans l'exemple, seule la section littérale (# Tâche actuelle) est modifiée dynamiquement. La description générale du processus et les FAQ restent toutefois inchangées.