1. Architecture générale
ReActEngine v1
-
Ne conserve aucun état interne.
-
Ne stocke ni index, ni historique, ni thème.
-
Ne gère pas la session Streamlit.
-
Ne persiste aucune donnée.
-
Reçoit à chaque appel :
-
le thème,
-
l’index,
-
la langue,
-
le niveau de détail,
-
le jeton de sécurité,
-
l’historique de conversation.
-
Il exécute ensuite la logique ReAct et renvoie un flux de blocs (Thought, Action, Observation, Answer).
Front‑end Streamlit (chatitego_v128)
-
Charge et persiste l’index du thème.
-
Charge et persiste l’historique de conversation.
-
Gère les cookies (thème, historique).
-
Gère les paramètres du thème.
-
Construit et maintient l’état de session (
st.session_state). -
Réinjecte l’état dans ReActEngine à chaque requête.
-
Gère l’affichage du streaming (placeholders, Markdown, HTML).
-
Extrait la réponse finale et la sauvegarde.
2. Cycle de vie d’une session
-
Lecture du thème depuis l’URL ou les cookies.
-
Chargement de l’index du thème depuis le disque.
-
Instanciation de
ReActEngine. -
Appel à
start()avec :-
thème,
-
langue,
-
jeton de sécurité,
-
index.
-
-
Chargement de l’historique depuis les cookies.
-
Affichage de l’historique dans l’interface.
-
Lors d’un nouveau prompt :
-
ajout du message utilisateur à l’historique,
-
passage de l’historique à
set_history(), -
appel à
stream(prompt)pour obtenir les blocs ReAct, -
affichage progressif des blocs,
-
extraction de la réponse finale,
-
sauvegarde de l’historique.
-
3. Rôle exact de start() dans ReActEngine v1
La méthode start() est appelée à chaque session Streamlit. Elle reçoit :
-
le thème,
-
le niveau de détail,
-
le jeton de sécurité,
-
la langue,
-
l’index.
Comme le moteur est stateless, start() ne fait qu’initialiser un contexte de travail pour l’appel courant. Aucun état n’est conservé entre deux sessions ou deux requêtes.
4. Gestion de l’historique
Le front‑end utilise :
-
StreamlitCookieStorepour la persistance, -
HistoryStorepour la lecture/écriture.
Avant chaque appel à stream(), le front‑end reconstruit l’historique :
my_react_engine.set_history(msg_copy)
Le moteur ne stocke rien : il ne fait que consommer l’historique fourni.
5. Gestion de l’index
L’index est chargé une seule fois par session :
index = thm.load_data()
st.session_state.index = index
Puis il est passé à ReActEngine via start().
Le moteur ne conserve pas l’index entre deux appels. C’est le front‑end qui le garde en mémoire et le réinjecte.
6. Streaming et affichage
Le front‑end gère :
-
la création des placeholders,
-
l’affichage des blocs Thought / Action / Observation,
-
l’affichage de la réponse finale en Markdown,
-
la reconstruction du texte final,
-
la sauvegarde dans l’historique.
ReActEngine ne gère que la génération des blocs.
7. Résumé
-
ReActEngine v1 est stateless.
-
Toute la persistance est assurée par le front‑end Streamlit.
-
Le front‑end charge l’index, les paramètres, le thème et l’historique.
-
Le front‑end réinjecte l’état dans ReActEngine via
start()etset_history(). -
ReActEngine ne conserve rien entre deux appels.
-
Le front‑end gère entièrement le streaming et l’affichage.