Continuer la conversation

Permet de maintenir la conversation au lieu de la stopper après un message sans outils
This commit is contained in:
2026-02-12 09:57:06 +01:00
parent dbd2eb38da
commit 2da71f8c51
5 changed files with 13 additions and 4 deletions

View File

@@ -36,7 +36,10 @@ def getGraph()->CompiledStateGraph:
"no_tools":"context_shortener" # FIN de la préparation, on réduit le contexte avant de passer à la suite "no_tools":"context_shortener" # FIN de la préparation, on réduit le contexte avant de passer à la suite
}) })
workflow.add_edge("context_shortener", "user_prompt") # Et ici, je rejoins la partie principale qui rédigera le rapport workflow.add_edge("context_shortener", "user_prompt") # Et ici, je rejoins la partie principale qui rédigera le rapport
workflow.add_edge("user_prompt", "LLM_central") workflow.add_conditional_edges("user_prompt", lambda state: END if state['stop'] else "continue", {
END: END,
"continue": "LLM_central"
})
workflow.add_edge("weekly_report_tools", "preparation_docs") workflow.add_edge("weekly_report_tools", "preparation_docs")
workflow.add_conditional_edges("tool_node", should_shorten, { workflow.add_conditional_edges("tool_node", should_shorten, {
@@ -46,7 +49,7 @@ def getGraph()->CompiledStateGraph:
workflow.add_edge("context_shortener_2", "LLM_central") workflow.add_edge("context_shortener_2", "LLM_central")
workflow.add_conditional_edges("LLM_central", should_continue, { workflow.add_conditional_edges("LLM_central", should_continue, {
"tools":"tool_node", "tools":"tool_node",
"no_tools":END "no_tools":"user_prompt"
}) })
return workflow.compile(checkpointer=InMemorySaver()) # TODO: Rempalcer par une vrai BDD de prod return workflow.compile(checkpointer=InMemorySaver()) # TODO: Rempalcer par une vrai BDD de prod

View File

@@ -59,7 +59,7 @@ class InterruptPayload():
def __human_prompt_display(self): def __human_prompt_display(self):
print("=== L'AGENT DEMANDE DES CONSIGNES! ===\n") print("=== L'AGENT DEMANDE DES CONSIGNES! ===\n")
print("Veuillez saisir un prompt pour l'agent...\n") print("Veuillez saisir un prompt pour l'agent, ou 'exit' pour terminer ici...\n")
prompt = input("Prompt...") prompt = input("Prompt...")
self.__fields = {'prompt': prompt} self.__fields = {'prompt': prompt}

View File

@@ -61,10 +61,14 @@ def user_prompt(state: CustomState):
).get("prompt") ).get("prompt")
) # Récupérer un prompt ) # Récupérer un prompt
end = False # Permet de mettre fin à l'exécution du modèle
if user_message.content.lower().strip() == "exit":
end = True
messages.append(sys_message) # Rajout des nouveaux messages dans le système messages.append(sys_message) # Rajout des nouveaux messages dans le système
messages.append(user_message) messages.append(user_message)
return {'messages': messages}# Je passe unen liste, devrait écraser tous les messages précédent au lieu d'ajouter à la liste du State return {'stop': end, 'messages': messages}# Je passe unen liste, devrait écraser tous les messages précédent au lieu d'ajouter à la liste du State
def LLM_central(state: CustomState): def LLM_central(state: CustomState):

View File

@@ -10,6 +10,8 @@ class CustomState(MessagesState):
lastSummarizedMessage: int # Index du message où l'on s'était arrêté de résumer lastSummarizedMessage: int # Index du message où l'on s'était arrêté de résumer
stop: bool # Permet d'indiquer la fin de l'exécution de l'agent
# TODO: Ajouter la source des documents sélectionnés pour la fin du rapport ? # TODO: Ajouter la source des documents sélectionnés pour la fin du rapport ?

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

After

Width:  |  Height:  |  Size: 52 KiB