diff --git a/AgentReact/utils/tools.py b/AgentReact/utils/tools.py index 0069fd9..082b612 100644 --- a/AgentReact/utils/tools.py +++ b/AgentReact/utils/tools.py @@ -4,6 +4,7 @@ from tavily import TavilyClient from pathlib import Path from typing import List, Dict, Annotated import sys +import os from langgraph.types import interrupt from .StateElements.TodoElement import TodoElement @@ -194,9 +195,72 @@ def search_in_files(query:str, state: Annotated[dict, InjectedState])->str: return docs_content # Retourne la liste de documents trouvés +@tool +def write_week_report(numero_semaine:int, contenu:str)->str: + """ + Écrire un rapport sur une semaine du stage. Sauvegardera ce rapport dans un fichier en mémoire pour un usage futur. + + Args: + numero_semaine (int): Semaine du stage. Commence à 1 pour la première semaine + contenu (str): Ce qu'il faut écrire dans ce rapport + + Returns: + str: CHemin vers le fichier, ou une erreur en cas de problème + """ + try: + # Récupérer le chemin vers le point d'entrée + base_dir: Path = Path(sys.argv[0]).resolve().parent + reports_dir = base_dir / "rapports_resumes" # Chemin du dossier des rapports + reports_dir.mkdir(parents=True, exist_ok=True) # Créer le dossier + + file_name = f"rapport_semaine_{numero_semaine}.txt" + full_path = reports_dir / file_name + + with open(full_path, "w", encoding="utf-8") as f: # Écrire le contenu + f.write(contenu) + + return str(full_path) + + except Exception as e: + return f"Erreur lors de l'écriture: {str(e)}" + +@tool +def write_library_tools_details_on_internship(contenu:str)->str: + """ + Enregistrer les détails sur le stage. + Utilise cet outil pour enregistrer tous les outils, logiciels, programmes, entreprises, ect.. utilisés pendant le stage. + + Args: + contenu (str): Une liste de tous les éléments intéréssants, avec quelques détails sur chacun. + + Returns: + str: CHemin vers le fichier, ou une erreur en cas de problème + """ + try: + # Récupérer le chemin vers le point d'entrée + base_dir: Path = Path(sys.argv[0]).resolve().parent + reports_dir = base_dir / "rapports_resumes" # Chemin du dossier des rapports + reports_dir.mkdir(parents=True, exist_ok=True) # Créer le dossier + + file_name = f"rapport_outils.txt" + full_path = reports_dir / file_name + + with open(full_path, "w", encoding="utf-8") as f: # Écrire le contenu + f.write(contenu) + + return str(full_path) + + except Exception as e: + return f"Erreur lors de l'écriture: {str(e)}" def getTools()->List['Tools']: """ Récupérer la liste des tools """ - return [internet_search, write_file, editTodo, read_file, ask_human, search_in_files, addTodo, removeTodo] \ No newline at end of file + return [internet_search, write_file, editTodo, read_file, ask_human, search_in_files, addTodo, removeTodo] + +def getWeeklyReportTools()->List['Tools']: + """ + Récupérer la liste des tools, POUR LE LLM EN CHARGE DE FAIRE LES RAPPORTS DE CHAQUE SEMAINE + """ + return [write_week_report, write_library_tools_details_on_internship, internet_search] \ No newline at end of file