Aller au contenu principal

La Boucle de Conversation : Quand les Citoyens Enseignent a l'IA Ce Qui Compte

· 6 minutes de lecture
Jean-Noël Schilling
Locki one / french maintainer

Comment le streaming, les threads et deux petits boutons ont transforme un outil de questions-reponses en un systeme qui apprend

La Question Apres la Question

Le systeme RAG pouvait repondre aux questions. Il pouvait trouver des documents, recuperer des extraits, synthetiser une reponse. Mais chaque question etait une ile. Un citoyen posait une question sur le logement, obtenait une reponse, puis demandait "et pour l'ecole ?" — et l'IA repartait de zero, comme s'ils ne s'etaient jamais parle.

C'est le fosse entre un moteur de recherche et une conversation. Un moteur de recherche repond a des requetes. Une conversation construit la comprehension. Et si vous construisez un assistant civique six jours avant une election municipale, c'est la comprehension dont les citoyens ont besoin.

La Memoire en Trois Echanges

La solution semble simple : passer l'historique de conversation au LLM. Mais combien d'historique ? Trop peu, et les questions de suivi echouent. Trop, et la fenetre de contexte se remplit de vieilles reponses au lieu de nouveaux extraits de documents.

Nous nous sommes arretes a trois echanges — six messages. Les trois dernieres paires question-reponse accompagnent chaque nouvelle requete, injectees entre le prompt systeme et la question actuelle de l'utilisateur (avec son contexte RAG). La recherche ne porte toujours que sur la question en cours. Le LLM voit ce qui a ete discute, mais les documents sont toujours frais.

C'est une separation des responsabilites deliberee. ChromaDB trouve les extraits pertinents. L'historique de conversation fournit la continuite. Le LLM synthetise les deux. Chaque couche fait ce qu'elle fait le mieux.

Le Streaming : Respecter l'Attente

Avant le streaming, chaque question signifiait un ecran vide et un indicateur de chargement. "Recherche en cours..." Le citoyen attend. Cinq secondes. Dix. Est-ce casse ? Est-ce en train de reflechir ? Ai-je pose une mauvaise question ?

Le streaming change le contrat entre le systeme et l'utilisateur. Les premiers tokens arrivent en moins d'une seconde. Le citoyen lit pendant que l'IA ecrit. L'attente devient une conversation, pas un vide.

L'implementation a necessite de faire passer le streaming a travers quatre couches : l'interface Streamlit appelle l'agent, qui appelle la fonctionnalite, qui appelle le fournisseur. Chaque fournisseur — Ollama, OpenAI, Claude, Mistral — a son propre protocole de streaming. Le wrapper de failover essaie chacun en sequence ; si l'un echoue a la connexion, il passe au suivant. Une fois qu'un flux demarre, les tokens circulent directement.

Il y a quelque chose d'honnete dans le streaming. Le citoyen voit exactement ce que l'IA produit, token par token. Pas de post-traitement cache. Pas de revelation differee. La reponse est la reponse, qui se deroule en temps reel.

Deux Boutons et un Thread

Apres que la reponse a fini de s'afficher, deux boutons apparaissent : un pouce vers le haut et un pouce vers le bas.

C'est toute l'interface de retour d'experience. Pas d'echelle a cinq etoiles, pas de boites de commentaires, pas de "notez ceci sur sept dimensions d'utilite." Un citoyen qui vient de lire une reponse sur la politique locale du logement ne devrait pas avoir besoin d'un doctorat en conception d'enquetes pour dire si la reponse etait utile.

Mais derriere ces boutons, quelque chose d'important se passe. Chaque clic envoie un score a Opik — un 1.0 ou un 0.0 — etiquete comme user_rating sur la trace specifique de cette question. Et chaque trace d'une session appartient au meme thread.

Les threads Opik sont ce qui fait fonctionner le tout comme un systeme d'apprentissage. Un thread regroupe toutes les traces d'une meme conversation. Dans l'interface Opik, on peut voir l'echange complet : ce que le citoyen a demande, ce que l'IA a repondu, quelle reponse a recu un pouce vers le haut, laquelle un pouce vers le bas. Le thread est l'unite de conversation. La trace est l'unite de jugement.

Cela compte parce qu'un pouce vers le bas a la troisieme question, apres deux pouces vers le haut, vous dit quelque chose de specifique. Le systeme fonctionnait bien, puis il a echoue. Le contexte RAG etait probablement pertinent (les questions un et deux ont fonctionne), donc le probleme est vraisemblablement dans la synthese — le prompt, le modele, la facon dont la reponse a ete formulee. Sans le thread, ce signal se perd dans un ocean de traces individuelles.

La Boucle Qui Se Ferme

Voici la methodologie qui emerge :

Le citoyen pose une question. ChromaDB recupere les documents pertinents. Le LLM synthetise une reponse, en la diffusant token par token. Le citoyen lit, reflechit, et clique sur un bouton. Ce clic devient un score de feedback sur une trace, dans un thread, a l'interieur d'Opik.

Plus tard — quotidiennement, hebdomadairement, quand nous le choisissons — nous pouvons interroger Opik pour les traces avec de faibles notes utilisateur. Nous pouvons voir ce qui a ete demande, quel contexte a ete recupere, ce qui a ete synthetise. Nous pouvons regarder le thread pour comprendre le flux conversationnel. Et nous pouvons utiliser ces informations pour affiner les prompts, ajuster la recherche, ou identifier les lacunes dans le corpus documentaire.

C'est la boucle d'amelioration continue rendue concrete. Non pas par des metriques automatisees seules — bien que nous en ayons aussi, mesurant la confiance et la distance de recherche — mais par le signal irreplacable d'une personne qui a lu la reponse et a decide si elle etait suffisamment bonne.

Une metrique automatisee peut vous dire que la reponse etait bien formee. Seul un citoyen peut vous dire qu'elle etait utile.

Ce a Quoi Ressemble la Confiance

Il y a une tentation dans le developpement IA d'optimiser pour les metriques que l'on peut mesurer. Longueur de reponse. Latence. Scores de confiance. Nombre de tokens. Ce sont des mesures utiles. Elles ne sont pas suffisantes.

Le pouce vers le bas d'un citoyen qui a demande des informations sur la renovation scolaire et a obtenu une reponse sur l'entretien routier — ce signal porte plus d'information que mille evaluations automatisees. Il dit : le systeme a echoue la ou ca comptait, au moment ou ca comptait, pour une personne qui en avait besoin.

Construire un assistant civique n'est pas un probleme de machine learning. C'est un probleme de confiance. Les citoyens d'Audierne-Esquibien sont invites a faire confiance au fait qu'un systeme IA representera equitablement ce que leurs candidats promettent. Cette confiance se gagne une reponse a la fois, et peut se perdre en une seule mauvaise reponse.

La boucle de conversation — l'historique pour le contexte, le streaming pour la transparence, le feedback pour la responsabilite — c'est ainsi que nous essayons de meriter cette confiance. Non pas en etant parfaits, mais en etant honnetes sur ce que nous savons, reactifs a ce que nous faisons mal, et engages a nous ameliorer.

Les boutons sont petits. L'engagement derriere eux ne l'est pas.


En lien : The RAG Adventure Begins | The Gazetteer Guard | Grounding AI in Reality