🎯 LA question centrale
Le but de ce post est de se concentrer sur les challenges clients suivants :
- "Choisissez le
${produit}
qui vous ressemble" - "Quelle
${produit}
choisir ?" - "Comparez et trouvez le
${produit}
adapté à vos besoins."
Où ${produit}
peut très facilement être remplacé par:
- Forfait
- Offre mobile
- Tout autre produit ou service
Ce sujet avait déja été abordé, ainsi que son potentiel de chatBOT:
👉 Aujourd'hui, nous allons construire un prototype et jouer avec 🙌
🍿 Pour les impatients
💡 Un deuxième chatBOT ?
Par le passé, j'avais créé un chatBOT connecté à notre API de suivi des colis pour suivre le processus de livraison des colis, via une interface conversationnelle et pour qui j'avais créé un custom tool:
🦜🔗 Track Package Delivery w. Langchain Agent Custom Tools
adriens ・ Aug 24 '23
Cette fois-ci on va venir **enrichir la collection avec un chatBOT dans un autre domaine fonctionnel - le Telecom - et avec une autre technologie cette fois.
Ne disposant pas d'API publique, mais uniquement d'un site web - ce qui est très courant -, on va voir comment construire un prototype fonctionnel.
Ensuite, on regardera comment évaluer les performances des chatBOTs...
💭 Pitch
Voici la question centrale qui a suscité la création de ce contenu:
"Quelle serait l'utilité de disposer d'un chatBOT expert dans la connaissance des forfaits telecom d'une entreprise Telecom, et qui saurait efficacement conseiller les prospects sur les forfaits les plus adaptés à leurs usages ?
Et comment en mesurer les performances ?"
🤔 Le chatBOT : un gadget ?
Nous allons donc adresser très concrètement les points ci-dessous via une expérimentation de bout en bout, dans le but d'illustrer les gains et objectifs stratégiques suivants:
- ⚡ Améliorer l'expérience client grâce à des réponses rapides et précises.
- ⏳ Améliorer le service client via la gestion de demandes simultanées
- 🤗 Personnaliser des offres via la collecte des données sur les préférences des clients
- 🗓️ Disponible 24/7 pour une assistance en dehors des heures de bureau
- 🤗 Améliorer globalement l'Expérience client : efficacité, personnalisation etdisponibilité accrues
- 📊 Evaluer les performances
"Gartner Predicts Chatbots Will Become a Primary Customer Service Channel Within Five Years"
📜 Déroulé
On va dérouler les étapes suivantes:
- Construire un chatBOT très basique en mesure de connaître les forfaits de l'OPT-NC
- Déterminer un échantillon de questions étalon (issues de la vraie vie) que des prospects pourraient poser lors de l'achat de nouveau forfait
- Evaluer notre chatBOT vs. Cagou en mode "⚔️ Chatbot Arena"
- Conclure le classement en mode "Chatbot Arena Leaderboard"
🧰 A propos
Pour créer notre prototype, nous allons nous appuyer sur la stack suivante:
- Les APIs d'Open AI
- Llama Index comme framework pour interagir avec notre LLM
- Les embeddings d'Open AI
... et pousser le tout sur un Notebook dédié:
🏅 Classement final
Pour commencer par la fin, ci-dessous, le 🏅 Chatbot Arena Leaderboard résultant:
Rank | BOT |
Score/40 | Description | 🤖 Eval | 🧑 Eval |
---|---|---|---|---|---|
1 | Prototype | 36 | OpenAI Embedding/ WebPageReader | 17 | 19 |
2 | Cagou | 10 | CAGOU L'ASSISTANT OPT-NC |
5 | 5 |
ℹ️ Chaque concurrent doit répondre aux challenges suivants (dont la qualité de la réponse sera alors évaluée):
- 💰 Le forfait "le moins cher"
- 📶 Besoin d'un "forfait data"
- 🔒 Forfaits "bloqués"
- 🎒 "Je suis lycéen et..."
Pour memo : les notes de 1/5 données par les humains ont été accompagnées des commentaires spontanés suivants:
- "Je ne vois pas le rapport en fait"
- "Je ne vois pas le rapport avec le contexte"
🔭 Remarques et opportunités
Au cours des expérimentations sont remontées les idées suivantes qui pourraient permettre d'atteindre des niveaux de qualité de réponses bien supérieurs.
En voici quelques unes:
- Récupération et constitution d'un dataset issu de vraies demandes clients avec les réponses optimales
- Enrichissement du dataset précédent avec des données synthétiques
- Automatisaiton du benhcmark Arena
- Diminution des coûts via l'utilisation de modèles Open Source
- Tuning de réponses via l'implémentation de Few-shot prompt templates
- Préparation de datasets structurés pour diminuer les coûts de RUN du bot
-
Création d'un unique textbook
markdown
de très haute qualité dédié aux forfaits afin de l'utiliser comme source de données pour des BOTs.
🔬 Détails
A ce stade l'article est terminé, mais tous les détails ont été consignés, la suite leur est dédiée.
💰 Le forfait "le moins cher"
La question:
"Je ne téléphone presque pas : quel forfait mobile le moins cher me permet de recevoir des appels ? Donne moi le nom des forfaits répondant à mon besoin. Explique pas à pas."
Réponses de BOTs:
WebPageLoader & OpenAI |
Cagou OPT |
---|---|
Le forfait mobile le moins cher qui vous permet de recevoir des appels est le "Forfait Bloqué 1000" à 1 060 F TTC par mois. Ce forfait vous offre la possibilité de recevoir des appels à un prix avantageux. Pour répondre à votre besoin de ne pas téléphoner souvent, ce forfait est le plus adapté parmi les options disponibles. | Sur quel appareil souhaitez-vous suivre votre conso ? |
📶 Besoin d'un "forfait data"
La question:
"J'ai besoin d'un forfait data : quelles sont les options disponibles ? Explique pas à pas."
Réponses de BOTs:
WebPageLoader & OpenAI |
Cagou OPT |
---|---|
Pour obtenir un forfait data, vous avez plusieurs options en fonction de votre situation. Si vous êtes déjà client Mobilis, vous pouvez faire votre demande en ligne, envoyer un mail à l'adresse fournie avec les informations nécessaires, vous rendre dans une boutique partenaire Mobilis ou prendre rendez-vous avec un conseiller télécoms en ligne ou en appelant le 1000. Si vous n'êtes pas encore client Mobilis, vous pouvez prendre rendez-vous avec un conseiller télécoms en ligne ou en appelant le 1000, ou vous rendre dans une boutique partenaire Mobilis. Assurez-vous d'avoir une pièce d'identité, un justificatif de domicile de moins de 3 mois et un RIB si vous optez pour le prélèvement automatique. | Pour quel appareil souhaitez-vous consulter nos offres ? |
🔒 Forfaits "bloqués"
La question:
"Je n'ai pas les moyens de payer un forfait mobile chaque mois : donne moi le nom des forfaits répondant à mon besoin ? Explique."
Réponses de BOTs:
WebPageLoader & OpenAI |
Cagou OPT |
---|---|
Les forfaits qui pourraient répondre à votre besoin sont les forfaits bloqués. Ces forfaits nécessitent un paiement mensuel fixe et offrent des limites claires en termes de coûts. Vous pouvez choisir parmi les forfaits bloqués 1000, 2000, 3000, et 5000 F qui offrent des services à des prix différents tout en vous permettant de contrôler vos dépenses mensuelles de manière plus précise. | Sur quel appareil souhaitez-vous suivre votre conso ? |
📝 La "table des forfaits"
"Liste moi tous les forfaits dans un seul et même tableau."
Réponses de BOTs:
🎒 "Je suis lycéen et..."
Question:
"Je viens d'avoir 18 ans, je suis au lycée et j'ai juste besoin d'un forfait mobile pour que mes parents puissent m'appeler et aussi aller un peu sur Instagram : quel forfait me sont adaptés ? Explique."
WebPageLoader & OpenAI |
Cagou OPT |
---|---|
Le forfait qui vous conviendrait le mieux serait le Forfait Bloqué 1000. Il offre un bon équilibre entre les besoins de communication avec 1 060 F TTC par mois. Ce forfait vous permettra de recevoir des appels de vos parents et d'utiliser un peu d'Internet pour aller sur Instagram. | Sur quel appareil souhaitez-vous suivre votre conso ? |
Les "⚔️ Chatbot Arena"
Les ⚔️ Chatbot Arena (ex celle de https://chat.lmsys.org/) permettent de comparer des BOTs ou des LLMs sur divers challenges.
On pose une même question et en parallèle à deux chatbOTs et on évalue leur réponses respectives.
Deux protocoles sont usités :
- 100% automatisé : c'est une IA qui évalue la pertinence des réponse des autres chatBOTs
- Human in the loop : c'est un être humain qui évalue
... et nous allons faire les deux 🤩
📜 Méthode
Que l'on parle à un humain ou à une machine, le protocole (ie. scénario) sera le même afin de disposer de conditions expérimentales identiques pour les évaluateurs (humain ou machine):
- *Préparer un
PROMPT SYSTEM
*: "Je vais te donner une question et tu devras évaluer la qualité de la réponse sur une note allant de 1 à 5, 5 étant la meilleure note." - Enoncer le challenge client
- Donner la réponse de notre chatBot à base d'embeddings OpenAI (sans dire que c'est lui) et demander le score
- *Donner la réponse de CagouBOT *(sans dire que c'est lui) et demander le score
⚖️ Evaluation par l' IA
Nous allons utiliser un modèle Open Source et accessible gratuitement sur HuggingChat : Nous Hermes 2 Mixtral 8x7B DPO
, particulièrement bon pour suivre des directives.
Question | OpenAI score | Cagou score |
---|---|---|
💰 Le forfait "le moins cher" | 4/5 | 2/5 |
📶 Besoin d'un "forfait data" | 4/5 | 1/5 |
🔒 Forfaits "bloqués" | 5/5 | 1/5 |
🎒 "Je suis lycéen et..." | 4/5 | 1/5 |
⚖️ Evaluation humaine
Pour cette phase de test, j'ai interviewé deux collaborateurs, strictement déroulé le même protocole que pour l'IA et aie noté les notes, les réponses fournies pour évaluation sont fournies en aveugle : la personne humaine ne sait pas qui est l'auteur de la réponse qu'il va évaluer.
ℹ️ La synthèse des deux scores est effectué en donnant la note maximale.
Question | OpenAI score | Cagou score |
---|---|---|
💰 Le forfait "le moins cher" | 5/5 | 2/5 |
📶 Besoin d'un "forfait data" | 5/5 | 1/5 |
🔒 Forfaits "bloqués" | 5/5 | 1/5 |
🎒 "Je suis lycéen et..." | 4/5 | 1/5 |