Noeud de préparation des documents

Pas encore totalement fonctionnel, mais déjà de bons résultats là dessus
This commit is contained in:
2026-02-08 14:41:22 +01:00
parent 52bf2d5a82
commit fc7f692ba3
8 changed files with 43 additions and 9 deletions

View File

@@ -3,8 +3,10 @@ from langgraph.graph import MessagesState
from langgraph.prebuilt import ToolNode
from langchain.chat_models import init_chat_model
from langgraph.graph import START, END
from langchain.messages import HumanMessage, AIMessage, SystemMessage
from .tools import getTools
from .tools import getTools, getWeeklyReportTools
from .state import CustomState
# LLM principal
llm = ChatMistralAI( # LLM sans outils
@@ -14,6 +16,22 @@ llm = ChatMistralAI( # LLM sans outils
)
# NODES
def preparation_docs(state: CustomState):
"""Noeud en charge de préparer les résumés pour chaque semaine des rapports, et la liste des outils et méthodes utilisées"""
model = llm.bind_tools(getWeeklyReportTools()) # LLM en charge de générer des rapports hebdomadaires sur le stage
print(len(state['messages']))
messages = [m for m in state['messages']] # Tous les messages du stage
if 'documentsGenerationStarted' not in state.keys():
# Si ce noeud en est à son premier lancement, je lui donne la consigne de départ
messages.append(HumanMessage("Ton but est de lire les fichiers présents dans la base de données en utilisant l'outil 'search_in_files',\
afin de générer des rapports sur chaque semaine du stage qui y est décrit. Pour enregistrer chaque semaine du stage, utilise l'outil 'write_week_report'.\
Une fois terminé, fais une liste de tous les outils, logiciels, méthodes, entreprises, techniques, ect.. utilisés,\
et fais en une liste avec quelques descriptions que tu devras enregistrer avec l'outil 'write_library_tools_details_on_internship'."))
messages.append(model.invoke(messages)) # Invocation LLM
return {'messages': messages, 'documentsGenerationStarted':True} # Je passe une liste de messages, ce qui ne devrait pas ajouter un message mais redéfinir toute la liste
def call_to_LLM(state: MessagesState):
"""Noeud qui s'occupe de gérer les appels au LLM"""
# Initialisation du LLM
@@ -53,6 +71,7 @@ def task_ended(state: MessagesState):
return END
return "continue"
weekly_report_tools = ToolNode(tools=getWeeklyReportTools())
tool_node = ToolNode(tools=getTools())