1 points par GN⁺ 2026-03-25 | Aucun commentaire pour le moment. | Partager sur WhatsApp
  • Développement d’un réceptionniste IA “Axle” capable de répondre à de vrais appels afin de résoudre les pertes de revenus causées par les appels manqués dans un garage haut de gamme
  • L’IA est construite sur une base Retrieval-Augmented Generation (RAG) afin de fournir des réponses exactes à partir des véritables informations de service et de tarification collectées sur le site web
  • Intégration de Vapi, Deepgram, ElevenLabs, FastAPI, MongoDB Atlas, etc. pour mettre en place la connexion téléphonique, la reconnaissance/synthèse vocale et l’enregistrement de l’historique des conversations
  • La qualité vocale a été ajustée avec un ton naturel et des phrases courtes afin d’offrir aux clients des réponses à la fois conviviales et professionnelles
  • Extension prévue vers un système de réservation, des notifications SMS et un tableau de bord de rappel ; pour un agent vocal spécialisé métier, l’essentiel réside dans la base de connaissances et la conception de l’escalade

Processus de création d’un réceptionniste IA

  • Création d’un réceptionniste IA sur mesure “Axle” pour résoudre le problème d’un frère qui gère un garage automobile haut de gamme et subit des pertes de plusieurs milliers de dollars par mois à cause des appels sans réponse
  • Conçu non pas comme un simple chatbot, mais comme un agent vocal capable de prendre de vrais appels et de répondre aux demandes des clients à partir d’informations réelles comme les prix, les horaires d’ouverture et les politiques
  • Le projet se compose de trois étapes : construction de la base de connaissances (pipeline RAG)connexion téléphonique et intégration serveurajustement de la qualité vocale et du ton conversationnel

Étape 1 : construire le cerveau (pipeline RAG)

  • Utilisation de l’approche Retrieval-Augmented Generation (RAG) pour que l’IA réponde à partir de données réelles
    • Un simple LLM présente un risque d’hallucination, comme annoncer un prix erroné ; les réponses sont donc limitées aux seules informations réelles
  • Scraping des données du site web pour collecter plus de 21 documents, incluant types de services, prix, durée, horaires, modes de paiement, garantie et politique de prêt de véhicule
  • Stockage de la base de connaissances dans MongoDB Atlas et création d’embeddings vectoriels en 1024 dimensions avec le modèle Voyage AI (voyage-3-large)
    • Recherche sémantique via l’index Atlas Vector Search
  • Lorsqu’une question client arrive, la requête est convertie avec le même modèle d’embedding afin de récupérer les 3 documents les plus proches sémantiquement
  • Utilisation du modèle Anthropic Claude (claude-sonnet-4-6) pour générer une réponse à partir des documents récupérés
    • Le prompt système inclut les règles suivantes : « ne pas utiliser d’informations hors base de connaissances, rester concis et conversationnel, proposer un rappel en cas d’incertitude »
  • Résultat : dans le terminal, des questions comme « Quel est le prix d’une vidange ? » reçoivent une réponse exacte avec le tarif réel et les détails du service

Étape 2 : connecter un vrai numéro de téléphone

  • Utilisation de la plateforme Vapi pour relier le cerveau de l’IA à un véritable système téléphonique
    • Achat d’un numéro, reconnaissance vocale via Deepgram, synthèse vocale via ElevenLabs et fonctionnalité d’appel de fonctions en temps réel
  • Mise en place d’un serveur webhook FastAPI
    • Vapi transmet les questions des clients à l’endpoint /webhook via des requêtes tool-calls
    • Le serveur les envoie au pipeline RAG, récupère la réponse de Claude, puis la renvoie à Vapi
    • Il faut minimiser la latence pour conserver un rythme de conversation naturel
  • Utilisation de Ngrok pour exposer le serveur local via une URL HTTPS externe et permettre des tests en temps réel pendant le développement
  • Configuration de l’assistant Vapi

    • Connexion du message d’accueil et de deux outils (answerQuestion, saveCallback) au webhook
    • Réponse aux questions ou, en cas d’incertitude, récupération du nom et du numéro de téléphone pour enregistrer un rappel
    • La mémoire conversationnelle permet de conserver le contexte des échanges précédents
    • Gestion possible de questions enchaînées comme « Quels sont vos horaires ? » → « Et combien coûte un changement de pneus ? »
  • Enregistrement des journaux d’appel dans MongoDB

    • Enregistrement du numéro appelant, de la question, de la réponse, du passage éventuel à un conseiller humain et de l’horodatage
    • Les demandes de rappel sont stockées dans une collection callbacks distincte pour permettre un suivi
    • Cela permet d’analyser les motifs de demandes clients et le volume d’appels

Étape 3 : ajuster la qualité vocale

  • En tenant compte de la différence entre réponse textuelle et réponse vocale, il faut optimiser le rendu pour la voix
    • Une phrase naturelle à l’écrit peut sembler peu naturelle à l’oral
  • Choix de la voix ElevenLabs

    • Après avoir testé environ 20 voix, la voix “Christopher” s’est révélée la plus naturelle et la plus adaptée à l’ambiance du garage
    • Les voix trop robotiques ou excessivement enjouées ne convenaient pas
  • Modification du prompt système

    • Phrases courtes, suppression du Markdown, retrait des formules inutiles comme « Excellente question ! »
    • Les prix sont prononcés en toutes lettres en langage naturel (« forty-five dollars »)
    • Réponses limitées à 2 à 4 phrases
    • L’objectif est de produire une voix humaine, chaleureuse et professionnelle
  • Test du flux d’escalade (rappel)

    • Si une question ne figure pas dans la base de connaissances, l’IA indique qu’elle ne sait pas, demande le nom et le numéro, puis enregistre le tout dans MongoDB
    • Le propriétaire du garage peut ensuite recontacter directement le client
  • Écriture de tests d’intégration

    • Vérification du pipeline RAG, du traitement webhook et du flux complet
    • Inclusion de la gestion des cas limites, comme les requêtes invalides, l’absence de résultat de recherche ou l’absence de numéro de rappel

Composition de la stack technique

  • Vapi (intégration Deepgram & ElevenLabs) — numéro de téléphone, reconnaissance vocale, synthèse vocale, appels de fonctions
  • Ngrok — tunnel HTTPS pour le développement local
  • FastAPI + Uvicorn — serveur webhook
  • MongoDB Atlas — base de connaissances, recherche vectorielle, journaux d’appel, file de rappels
  • Voyage AI (voyage-3-large) — embeddings de texte sémantiques
  • Anthropic Claude (claude-sonnet-4-6) — génération de réponses fondées sur la base de connaissances
  • Python — avec pymongo, voyageai, anthropic, fastapi
  • Copilot CLI — outil d’automatisation du build

Étapes suivantes

  • À ce stade, l’IA sait déjà répondre aux questions et collecter les demandes de rappel
  • Les objectifs suivants sont la synchronisation calendrier pour les réservations en temps réel, les notifications SMS, un tableau de bord de gestion des rappels, le renforcement de la sécurité et le déploiement sur Railway
  • Une fois finalisé, le système pourra fonctionner 24 h/24 et éviter les pertes de revenus dues aux appels manqués
  • La partie la plus difficile n’a pas été le code, mais la mise au point d’un ton de voix adapté au garage
  • Enseignement clé : ne pas utiliser un LLM brut tel quel pour un agent vocal spécialisé métier
    • Il doit impérativement s’appuyer sur une véritable base de connaissances et sur un flux de gestion de l’incertitude (escalade)
    • Ce n’est pas une exception, mais une fonction centrale

Aucun commentaire pour le moment.

Aucun commentaire pour le moment.