diff --git a/AgentReact/agent.py b/AgentReact/agent.py index c6479e4..c0d5d56 100644 --- a/AgentReact/agent.py +++ b/AgentReact/agent.py @@ -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 }) 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_conditional_edges("tool_node", should_shorten, { @@ -46,7 +49,7 @@ def getGraph()->CompiledStateGraph: workflow.add_edge("context_shortener_2", "LLM_central") workflow.add_conditional_edges("LLM_central", should_continue, { "tools":"tool_node", - "no_tools":END + "no_tools":"user_prompt" }) return workflow.compile(checkpointer=InMemorySaver()) # TODO: Rempalcer par une vrai BDD de prod diff --git a/AgentReact/utils/InterruptPayload.py b/AgentReact/utils/InterruptPayload.py index 609acbd..41f1f71 100644 --- a/AgentReact/utils/InterruptPayload.py +++ b/AgentReact/utils/InterruptPayload.py @@ -59,7 +59,7 @@ class InterruptPayload(): def __human_prompt_display(self): 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...") self.__fields = {'prompt': prompt} diff --git a/AgentReact/utils/nodes.py b/AgentReact/utils/nodes.py index 3b71a08..34749e6 100644 --- a/AgentReact/utils/nodes.py +++ b/AgentReact/utils/nodes.py @@ -61,10 +61,14 @@ def user_prompt(state: CustomState): ).get("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(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): diff --git a/AgentReact/utils/state.py b/AgentReact/utils/state.py index f4667d5..d8be13e 100644 --- a/AgentReact/utils/state.py +++ b/AgentReact/utils/state.py @@ -10,6 +10,8 @@ class CustomState(MessagesState): 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 ? diff --git a/imgs/agent.png b/imgs/agent.png index 804d7f1..6d39fce 100644 Binary files a/imgs/agent.png and b/imgs/agent.png differ