ReActEngine v1 : intégration dans le front end Intégration de ReActEngine v1 dans le front‑end Streamlit chatitego_v128

, par Bertrand Degoy

Cette article décrit comment ReActEngine v1 s’intègre dans le front‑end Streamlit chatitego_v128, et clarifie la séparation des responsabilités entre les deux couches. Il faut considérer que le moteur est stateless, tandis que le front‑end assure toute la persistance (index, historique, thème, paramètres).


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

PNG - 1.5 Mo
Intégration de ReActEngine v1 : diagramme des séquences
  1. Lecture du thème depuis l’URL ou les cookies.

  2. Chargement de l’index du thème depuis le disque.

  3. Instanciation de ReActEngine.

  4. Appel à start() avec :

    • thème,

    • langue,

    • jeton de sécurité,

    • index.

  5. Chargement de l’historique depuis les cookies.

  6. Affichage de l’historique dans l’interface.

  7. 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 :

  • StreamlitCookieStore pour la persistance,

  • HistoryStore pour 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() et set_history().

  • ReActEngine ne conserve rien entre deux appels.

  • Le front‑end gère entièrement le streaming et l’affichage.

Accès réservé : connectez vous pour en savoir plus.