Borrelle.
  • Accueil
  • Projets
  • Blog
  • Services
  • Contact
|

© 2026 Borrelle

Politique de confidentialité et condition d'utilisation
Tous les projets
déc. 2025Livré

WAIME — WhatsApp AI Me

LangChainLangGraphTwilioSupabaseWhatsAppNext.js
WAIME — WhatsApp AI Me

Problème

Les bots WhatsApp classiques ont un défaut fondamental : ils sont séquentiels et sans mémoire de contexte réel. L'expérience type est connue et agaçante — tu poses ton problème en détail dans un premier message, et le bot te répond avec un "Bonjour ! Comment puis-je vous aider ?" comme si tu n'avais rien dit.

Ces systèmes sont construits autour de scripts rigides : arbre de décision, mots-clés déclencheurs, réponses prédéfinies. Dès que l'utilisateur s'écarte du chemin prévu, le bot se perd. Il ne comprend pas le contexte, ne retient pas ce qui vient d'être dit, et impose à l'utilisateur de se plier à sa logique plutôt que l'inverse.

Pour quiconque veut proposer une assistance automatisée via WhatsApp — support client, assistant personnel, prise de rendez-vous — ce modèle est non seulement frustrant, mais contre-productif.

Solution proposée

WAIME (WhatsApp AI Me) est un agent conversationnel connecté à WhatsApp via Twilio, conçu pour répondre de façon naturelle, contextuelle et fluide dès le premier message.

Le cœur du système repose sur LangGraph, qui modélise la conversation comme un graphe d'état persistant. Chaque message entrant reprend exactement là où la conversation s'est arrêtée — le contexte n'est jamais perdu, quelle que soit la durée entre deux échanges. L'agent ne repart jamais de zéro.

L'inférence est assurée par un LLM configurable, compatible propriétaire ou open source auto-hébergé selon les exigences de confidentialité. Les données de conversation ne quittent pas l'infrastructure contrôlée si un modèle local est choisi.

La persistance de l'état de l'agent est gérée par Supabase (PostgreSQL) via le checkpointer natif LangGraph, qui sauvegarde l'état du graphe après chaque échange. Le modèle relationnel est également utilisé pour stocker l'historique des conversations, les profils utilisateurs et les éventuelles règles métier propres à chaque déploiement.

Étapes de réalisation

  1. Intégration Twilio WhatsApp — Configuration du webhook Twilio pour recevoir les messages entrants, mise en place de l'endpoint de réception dans Next.js, et gestion de l'envoi des réponses via l'API Twilio Messages.
  2. Architecture LangGraph — Modélisation de l'agent comme un graphe d'état : nœuds de lecture du message, d'enrichissement du contexte, de génération de réponse et de validation avant envoi. Chaque nœud est isolé et testable indépendamment.
  3. Persistance de l'état avec Supabase — Mise en place du checkpointer PostgreSQL de LangGraph, permettant de sauvegarder et reprendre l'état de chaque conversation par identifiant WhatsApp. Schéma Supabase pour l'historique, les métadonnées utilisateur et les logs d'exécution.
  4. Gestion du contexte conversationnel — Fenêtre de contexte glissante sur l'historique récent, passée au LLM à chaque inférence pour maintenir la cohérence de la conversation sur la durée.
  5. Connexion LLM — Interface LangChain compatible avec un modèle propriétaire (GPT, Claude) ou open source auto-hébergé, configurable via variable d'environnement sans modifier le code de l'agent.
  6. Gestion des cas limites — Traitement des timeouts Twilio (réponse obligatoire sous 15 secondes), des messages multimédias non supportés, et des erreurs d'inférence sans interrompre la conversation.

Difficultés surmontées

La contrainte la plus structurante a été le timeout de 15 secondes imposé par Twilio : si le webhook ne répond pas dans ce délai, le message est considéré en échec. Cela a imposé une architecture asynchrone — répondre immédiatement à Twilio avec un accusé de réception, traiter l'inférence LangGraph en arrière-plan, puis envoyer la réponse via un appel API Twilio séparé.

L'autre difficulté centrale était la gestion cohérente du contexte dans des conversations longues ou reprises après plusieurs jours. Le checkpointing LangGraph règle la persistance, mais calibrer la fenêtre de contexte transmise au LLM — assez large pour être pertinent, assez courte pour rester dans les limites de tokens — a nécessité plusieurs ajustements.

Résultat

WAIME démontre qu'un agent WhatsApp peut être aussi naturel qu'une vraie conversation, sans les compromis habituels des bots à scripts. L'architecture LangGraph + Supabase offre une base solide pour étendre l'agent : ajout de tools (recherche web, calendrier, base de connaissances), spécialisation par domaine métier, ou déploiement multi-numéros depuis une même infrastructure.

← Retour aux projets