Le chatbot d'aide

← Le volet web · 14 diapositives · flèches ou clic pour avancer

Le chatbot d'aide - Volet AIDE, système d'entraide 2 de 4 - Du widget hébergé au chatbot maison branché sur votre catalogue par une API d'IA
Deux chemins, un choix assumé - Procédure A : le widget hébergé (Crisp, Tawk.to), une heure de travail, parfait pour démarrer. Procédure B : le chatbot maison, votre code, votre base, une API d'IA, le vrai livrable du volet. La procédure A est un échauffement, visez la B.
Procédure A : le widget hébergé - Créer un compte gratuit, copier le script d'intégration avant la fermeture du body, configurer en français aux couleurs de la boutique. Les réponses se donnent depuis le tableau de bord du fournisseur.
Les limites du widget - Les conversations vivent chez le fournisseur; le bot générique ne connaît ni votre catalogue, ni votre FAQ, ni le membre connecté; personnalisation limitée; le plan gratuit plafonne vite. Excellent échauffement, mauvaise destination.
Procédure B : l'architecture maison - Navigateur (fil de messages) vers chatbot.php (assemble contexte et historique) vers l'API d'IA vers JSON (réponse et produits suggérés) vers le rendu (texte et cartes produits). La clé de l'API reste côté serveur, l'historique vit dans la session PHP.
Le contexte donné au modèle - construireContexte() assemble l'instruction système depuis la base : le rôle de l'assistant, la FAQ (ArticleDAO::listerPublies), le catalogue avec prix (ProduitDAO::listerActifs), et la consigne d'escalade vers un humain. La fiche d'employé du bot.
L'appel API en PHP (curl) - corps de requête avec model claude-haiku-4-5 (le petit modèle rapide), max_tokens, system et messages; curl_init vers https://api.anthropic.com/v1/messages avec les en-têtes Content-Type, x-api-key (clé dans configuration.php hors web) et anthropic-version; json_decode de la réponse puis content[0][text].
Exiger du JSON structuré - Demander au modèle un format précis : { reponse, produitsSuggeres: [identifiants] }. Côté PHP : json_decode, puis relire chaque produit dans la base de données. Le bot suggère, la base confirme : les cartes affichent le vrai prix.
L'historique de conversation - Le fil vit dans $_SESSION[filChatbot], chaque tour ajoute un message user puis assistant; on renvoie tout le fil à chaque appel; limiter à une vingtaine de tours; table conversation en base pour le membre connecté.
L'escalade vers un humain - Déclencheurs : demande explicite, deux échecs, sujet sensible. Action : création d'un ticket avec le fil complet joint, le bot annonce le relais. Un bot qui ne sait pas passer la main fait fuir les clients. Pont avec le système de tickets.
La sécurité du chatbot - La clé d'API dans configuration.php hors du répertoire web, jamais dans le JavaScript ni dans Git; limiter le débit par session; tronquer les questions trop longues; échapper la sortie avec htmlspecialchars; tester la résistance à l'injection de requête.
Le modèle et les coûts - Un petit modèle rapide suffit (Haiku, environ 1 dollar le million de jetons d'entrée); garder le catalogue résumé; journaliser chaque appel dans journalChatbot (question, jetons, durée); ordre de grandeur : quelques dollars par mois.
Tester son bot : les questions pièges - Hors sujet (refus poli), prix inventé (la BD fait foi), injection (l'instruction tient bon), produit inexistant (non assumé), demande d'humain (escalade immédiate), autre langue (réponse cohérente).
La barre de qualité (démo) - Le bot répond depuis la FAQ et le catalogue réels; cartes produits cliquables au prix de la base; escalade démontrée en direct; clé introuvable dans le code livré; débit limité et journal consultable; les six questions pièges passent.