Un système de chatbot basé sur l’IA est un logiciel qui reçoit le message d’un utilisateur et renvoie une réponse pertinente, généralement en faisant appel à un grand modèle de langage (LLM) et en intégrant cet appel dans une logique applicative incluant des contrôles de sécurité, la mise en forme et la gestion de la mémoire. Il comprend les composants chargés de recevoir les messages, de déterminer les informations à transmettre au modèle et de restituer la réponse à l’utilisateur.
Pour délimiter clairement le système, nous distinguons trois rôles. L’application cliente affiche la conversation et envoie les messages. Le backend gère le flux de la conversation et les données. Le fournisseur de modèle exécute le modèle et renvoie le texte généré lorsqu’il est sollicité.
La version la plus simple consiste en un service backend unique exposant une API POST /chat. Le client envoie {conversation_id, user_message}. Le service charge les échanges précédents de la conversation, appelle l’API du LLM avec ce contexte et transmet les jetons (tokens) au client en flux continu à mesure qu’ils sont générés. Illustrons cela par un flux de référence limité à une seule région :
Dans cette configuration de base, le service API constitue le point de décision. Il lit et écrit l’historique de la conversation dans un espace de stockage dédié afin qu’un rafraîchissement de page n’entraîne pas la perte du fil de la discussion, et il appelle l’API du LLM pour générer le message suivant de l’assistant. Des journaux et des métriques enregistrent les temps de traitement des requêtes ainsi que les erreurs, nous permettant ainsi d’identifier les moments où le système ralentit ou rencontre des défaillances.
Même avec un volume de trafic modeste, deux indicateurs apparaissent rapidement. Les utilisateurs perçoivent la latence, car le délai d’affichage du premier texte détermine si l’application semble réactive, tandis que la durée totale de génération détermine s’ils abandonnent la lecture de réponses longues. Le coût devient également apparent, car chaque appel au modèle consomme des jetons (tokens) ; par conséquent, chaque échange supplémentaire et chaque extrait de données récupéré en plus augmentent la dépense par conversation.
Un budget de latence correspond au temps disponible entre le moment où l’utilisateur valide l’envoi et celui où il visualise une réponse exploitable. Dans le cas d’un chatbot fonctionnant en flux continu (streaming), ce délai se décompose en deux éléments : le temps d’obtention du premier jeton et la durée totale de génération de la réponse ; le flux de base intègre ces deux mesures. Le choix d’un modèle plus lent augmente ces deux valeurs, tandis que l’ajout de contexte accroît souvent la durée totale, même si le délai d’obtention du premier jeton reste inchangé. Illustrons maintenant concrètement cette tension entre latence et coût :