Bot multi‑étapes / prompt
Dans ce tutoriel, nous construisons un assistant plus complexe basé sur plusieurs stages.
Vous apprendrez :
- la différence entre les bots mono‑étape et multi‑étapes/prompt
- les transitions de stage
- comment accéder aux données extraites par l’IA via la variable
params
Pourquoi utiliser des bots multi‑étapes ?
En théorie, il est possible de créer des flux d’appel complexes avec une seule stage, c’est‑à‑dire un seul prompt. Cependant, les LLM hallucinent parfois et prennent des chemins inattendus. Ils peuvent faire des affirmations ou poser des questions qui ne sont pas vraies, par ex. proposer des créneaux de rendez‑vous qui n’existent pas. Pour éviter cela, nous pouvons utiliser plusieurs stages, où chaque stage représente son propre dialogue dans une session d’appel. Chaque stage a son propre prompt qui est inséré pendant la conversation afin d’indiquer précisément au LLM quoi faire ensuite.
Un exemple basé sur la prise de rendez‑vous :
L’assistant demande d’abord à l’utilisateur/appelant s’il souhaite prendre un rendez‑vous ou annuler une réservation. Si l’utilisateur veut prendre un rendez‑vous, l’assistant demande le type de rendez‑vous et le jour souhaité dans la première stage, tandis que la seconde stage collecte toutes les informations sur la personne qui réserve, par ex. nom, email, numéro de téléphone.
En cas d’annulation, le bot demande d’abord le nom de l’appelant pour l’identifier, puis récupère les réservations existantes, les liste et demande quelle réservation exacte il souhaite annuler.
Ces deux flux peuvent être exprimés avec des règles si‑alors dans un seul prompt, mais ces règles peuvent devenir très complexes et imbriquées, ce qui peut faire dévier le LLM de la trajectoire. C’est précisément le problème que les bots multi‑étapes/prompt évitent.
Bot mono‑étape vs. bot multi‑étapes/prompt
Pour illustrer la différence entre les bots mono‑étape et multi‑étapes/prompt, nous créons d’abord un bot mono‑étape qui collecte deux informations, puis nous divisons le flux en deux stages.
D’abord, nous définissons/utilisons la stage Welcome avec le prompt suivant :
You are an AI phone assistant that collects some user/customer data.
You respond in French.
You respond briefly and in a very friendly, conversational style.
Answer any question that is outside the purpose of collecting the customer's name and date of birth with: I don't know.
Do not invent any answers.
Greet the user and ask for their name and date of birth including the year.Ensuite, dans l’onglet Actions/Tools, nous définissons une fonction collectData avec les paramètres suivants :
name comme String et dob comme Date. Les paramètres de fonction doivent ensuite être configurés comme suit :

Dans l’onglet Functions, nous pouvons maintenant étendre la fonction JavaScript vide collectData(params)
avec le texte que l’assistant doit dire lorsque cette fonction est appelée.
Dans notre exemple, l’assistant répond simplement par "Merci !" et le nom fourni par l’utilisateur/appelant
après que le nom a été capturé.
function collectData(params) {
return { text: "Merci ! " + params.name };
}Le paramètre params contient toutes les informations précédemment collectées auprès de l’appelant/utilisateur sous forme de structure de données JSON.
{
"name": "Max",
"dob": "14.09.1989"
}Tester l’assistant mono‑étape
Comme le montre la conversation, l’assistant salue l’appelant et demande son nom et sa date de naissance. Une fois que l’utilisateur/appelant a fourni les informations requises, l’assistant répond par un remerciement et répète le nom donné.
Vous pouvez également voir l’appel à la fonction collectData() et les valeurs du paramètre params,
qui contiennent les données extraites par l’IA de la conversation.
Bonus
Dans l’exemple ci‑dessus, l’assistant dit simplement ce qui a été renvoyé dans text par la fonction collectData().
Comme montré, la conversation s’est déroulée en français. Si vous voulez que le LLM formule la réponse de manière autonome
dans la bonne langue, vous pouvez renvoyer un champ data à la place.
function collectData(params) {
return { data: "Thank the user and mention their name." };
}
Bot multi‑étapes/prompt
Cette fois, nous séparons le bot ci‑dessus pour que la stage Welcome ne demande que le nom, et que la stage suivante ne demande que la date de naissance.
D’abord, nous définissons/utilisons la stage Welcome et configurons le prompt suivant :
You are an AI assistant that collects some user/customer data.
You respond in French.
You respond briefly and in a very friendly, conversational style.
Answer any question that is outside the purpose of collecting the customer's name and date of birth with: I don't know.
Do not invent any answers.
Greet the user and ask only for their name.Notez que nous avons raccourci l’instruction à la demande du nom uniquement, mais pas la date de naissance, car cette information est collectée dans la seconde stage après avoir recueilli le nom et être passé à la stage suivante.
Nous ajoutons ensuite une seconde stage et l’appelons Stage DOB, mais nous la laissons vide pour le moment.
Ensuite, dans l’onglet Actions/Tools, nous définissons une fonction collectName avec le paramètre name en tant que string
et fournissons une description appropriée.
Les outils doivent alors être configurés comme suit :

Notez que nous définissons également un key/path (chemin dans le state) où les informations collectées, c’est‑à‑dire le nom, doivent être stockées dans le state.
Et nous définissons une transition vers la stage Stage DOB créée précédemment car nous voulons ensuite collecter la date de naissance.
Pour cette stage, nous utilisons un prompt très court car le LLM ne doit demander que la date de naissance à ce stade.
Ask the caller for their date of birth.Enfin, nous définissons les actions/fonctions pour la stage DOB comme suit :

Puis nous implémentons la fonction collectDOB définie dans la section Actions/Tools. Dans notre exemple, nous répondons simplement par "Merci !" et raccrochons.
function collectDOB(params) {
return { text: "Merci !", action: "hangup" };
}Tester le bot multi‑étapes
Comme le montre la conversation, l’assistant salue l’appelant et demande son nom.
Après que l’appelant a fourni son nom, la fonction collectName est appelée et déclenche la transition vers Stage DOB.
Dans cette stage, le LLM demande la date de naissance comme défini dans le prompt.
Enfin, la fonction collectDOB est appelée avec les données fournies par l’appelant.
En mode débogage, vous pouvez voir dans quelle stage l’assistant se trouve actuellement, ainsi que l’état actuel, le dernier prompt et les données/variables extraites, etc.

Ordre d’exécution : prompt et appels de fonctions
Pendant l’exécution, les valeurs/données renvoyées par les appels de fonctions et le prompt de la stage suivante sont combinés par le LLM en une seule réponse suivie immédiatement de la question suivante :