Cas d’usage
Après toute une série de questions, je pose à ChatEngine la question suivante :
Répond à cette question : "l’utilisateur semble-t-il satisfait de la conversation" ?
Réponse du ChatBot :
Non, l’utilisateur ne semble pas entièrement satisfait de la conversation. Bien qu’il n’ait pas exprimé de mécontentement explicite, il a continué à poser des questions de suivi et a finalement demandé une reformulation de sa préoccupation principale, ce qui suggère qu’il cherchait des réponses plus précises ou des solutions adaptées à ses besoins. Cela indique qu’il n’a pas obtenu toutes les informations ou assurances qu’il recherchait.
J’ai l’ID de l’utilisateur grâce à l’Authentification. Pourrait-on imaginer de superviser ses conversations pour obtenir un profil et surtout : notifier un super-utilisateur des demandes non satisfaites ?
C"est faisable avec un ReAct Engine en parallèle.
La démarche
- Attribuer un ID utilisateur
- Analyser chaque conversation pour détecter :
- frustration implicite
- demandes répétées
- absence de résolution
- sentiment négatif
- signaux de confusion
- Construire un profil dynamique (préférences, style, niveau technique, patterns de satisfaction)
- Déclencher une alerte lorsqu’un seuil est dépassé :
- trop de reformulations
- trop de demandes non résolues
- sentiment négatif persistant
- absence de finalisation
On va faire tourner un ReAct Engine dédié à la supervision en parallèle de celui dédié à la résolution.
Architecture : un Supervisor Agent parallèle
Voici l’architecture :
A. Agent principal : ReActEngine
- Gère la conversation
- RAG
- MCP
- ToolRouter
- Finalizer
- Actions métier
B. Agent secondaire : SupervisorAgent (ReAct parallèle)
Rôle : analyser la métaconversation.
Il reçoit :
- l’historique condensé
- les signaux de satisfaction
- les erreurs
- les reformulations
- les tentatives échouées
- les temps de réponse
- les demandes répétées
Il produit :
- un score de satisfaction
- un score de résolution
- un score de frustration
- un résumé des points non résolus
- une recommandation d’action (ex : escalade, reformulation, intervention humaine)
C. Notification / Escalade
Si le SupervisorAgent détecte :
- frustration > 0.7
- 3 reformulations successives
- absence de réponse satisfaisante
- demande explicite d’escalade
Alors :
→ Notifier un super‑utilisateur
→ Créer un ticket
→ Déclencher un fallback humain
→ Envoyer un rapport synthétique
D. Stockage / Profil utilisateur
On peut stocker :
- préférences conversationnelles
- style (court, long, technique, vulgarisé)
- niveau d’expertise
- outils utilisés
- historique des escalades
- satisfaction moyenne
Mais pas de contenu sensible , de données personnelles non nécessaires , de données non liées à la finalité.
4) Un ReActEngine en parallèle du moteur principal
Deux ReAct Engines :
-
ReActEngine_Principal
→ répond à l’utilisateur -
ReActEngine_Supervisor
→ observe, analyse, détecte, escalade
Le Supervisor peut utiliser :
- un modèle spécialisé en sentiment analysis
- un modèle spécialisé en classification
- un modèle spécialisé en satisfaction prédictive
- un modèle spécialisé en détection d’intentions non résolues
5) Non‑obvious insight :
Le SupervisorAgent peut aussi corriger le ReActEngine principal.
Exemple :
- Le ReActEngine se perd
- Le Supervisor détecte une incohérence
- Il injecte un THOUGHT override
- Il force un retry
- Il propose une clarification
- Il déclenche un tool que l’agent principal n’a pas pensé à utiliser
C’est littéralement un agent méta‑cognitif.
Architecture complète — ReActEngine + SupervisorAgent + Profiling Layer
Voici l’architecture complète :
→ ReActEngine_Principal
→ SupervisorAgent (ReAct parallèle)
→ Profiling Layer
→ Notification / Escalade
→ Stores RGPD‑compliant
→ MCP / RAG / ToolRouter
flowchart LR
%% ============================
%% LAYERS
%% ============================
subgraph UserLayer[User Layer]
U[Utilisateur]
end
subgraph EngineLayer[ReActEngine Principal]
RE[ReActEngine.stream]
Parser[ReActStreamParser]
Agent[ReActAgent]
LLM[LLM]
TR[ToolRouter]
RAG[RAG Retriever]
MCP[MCP Connectors]
Finalizer[Finalizer]
end
subgraph SupervisorLayer[Supervisor Agent (ReAct parallèle)]
SA[SupervisorAgent]
Sentiment[Sentiment Classifier]
Satisfaction[Satisfaction Scoring]
Unresolved[Unresolved Intent Detector]
MetaLLM[Meta‑LLM]
end
subgraph ProfilingLayer[Profiling & Analytics Layer]
ProfileStore[(Profil Utilisateur)]
MetricsStore[(Metrics Conversationnelles)]
RiskStore[(Frustration / Risques)]
end
subgraph NotificationLayer[Escalade & Notification]
Notifier[Super‑User Notifier]
Ticketing[Ticket System]
end
%% ============================
%% FLOWS
%% ============================
%% --- User to Engine ---
U -->|prompt| RE
RE --> Parser
Parser --> Agent
Agent -->|ReAct step| LLM
LLM --> Agent
Agent --> Parser
Parser --> RE
%% --- Tools ---
Agent --> TR
TR --> RAG
TR --> MCP
TR --> Finalizer
Finalizer --> RE
%% --- Engine to User ---
RE -->|réponse| U
%% ============================
%% SUPERVISOR PARALLEL FLOW
%% ============================
%% Engine sends condensed history
RE -.->|historique condensé| SA
SA --> Sentiment
SA --> Satisfaction
SA --> Unresolved
SA --> MetaLLM
Sentiment --> SA
Satisfaction --> SA
Unresolved --> SA
MetaLLM --> SA
%% Supervisor outputs
SA -->|scores, flags| MetricsStore
SA -->|profil dynamique| ProfileStore
SA -->|risques| RiskStore
%% ============================
%% ESCALADE
%% ============================
SA -->|frustration > seuil| Notifier
SA -->|non‑résolution| Ticketing
Notifier -->|alerte| SuperUser[Super‑Utilisateur]
Ticketing -->|ticket| SuperUser
%% ============================
%% FEEDBACK LOOP
%% ============================
ProfileStore -.->|préférences| RE
MetricsStore -.->|optimisation| RE
RiskStore -.->|fallback| RE
Ce que représente ce diagramme
1) ReActEngine Principal
Le pipeline standard :
- Parser
- ReActAgent
- LLM
- ToolRouter
- RAG
- MCP
- Finalizer
- Stream vers l’utilisateur
C’est le moteur opérationnel.
2) SupervisorAgent (ReAct parallèle)
Il tourne en parallèle, reçoit un historique condensé, et analyse :
- sentiment
- frustration
- demandes non résolues
- incohérences
- répétitions
- erreurs du ReActEngine principal
Il utilise un Meta‑LLM pour raisonner sur la métaconversation.
3) Profiling Layer
Stocke uniquement :
- préférences conversationnelles
- patterns d’interaction
- scores de satisfaction
- signaux de frustration
Pas de données personnelles inutiles → RGPD‑compliant.
4) Notification / Escalade
Si le Supervisor détecte :
- frustration > seuil
- 3 reformulations
- absence de résolution
- demande explicite d’escalade
→ Notification d’un super‑utilisateur
→ Création d’un ticket
→ Intervention humaine possible
5) Boucle de rétroaction
Le profil et les métriques peuvent :
- ajuster le style du ReActEngine
- améliorer la précision
- déclencher des fallbacks
- personnaliser la conversation