Agent_V3 #3

Merged
Kevin merged 12 commits from Agent_V3 into master 2026-02-12 15:24:11 +01:00
11 changed files with 223 additions and 82 deletions
Showing only changes of commit f1d0c7e342 - Show all commits

View File

@@ -14,6 +14,39 @@ from .StateElements.TodoElement import TodoElement
from .VectorDatabase import VectorDatabase
from .InterruptPayload import InterruptPayload
@tool
def append_part_to_report(contenu:str)->str:
"""
Permet d'ajouter une nouvelle partie au rapport de stage
Args:
contenu (str): Partie à ajouter, écris ici ce que tu veux
Returns:
str: Retour, une confirmation, ou un message d'erreur
"""
try:
# Récupérer le chemin vers le point d'entrée
base_dir: Path = Path(sys.argv[0]).resolve().parent
full_path = reports_dir / "RAPPORT_STAGE.md"
query= interrupt(InterruptPayload({
content: contenu
}).toJSON())
response = InterruptPayload.fromJSON(query)
if response.isAccepted():
with open(full_path, "a", encoding="utf-8") as f: # Écrire le contenu
f.write(response.get("content"))
return "Requête acceptée et validée ! Tu peux considérer cette tâche comme complétée."
else:
return "ERREUR! L'utilisateur a refusé ta demande. Tu devrais lui demander pourquoi avoir refusé, et comment améliorer cette partie."
except Exception as e:
return f"Erreur lors de l'écriture: {str(e)}"
@tool
def internet_search(query: str)->dict:
"""
@@ -35,33 +68,6 @@ def internet_search(query: str)->dict:
else:
return {'error': "Utilisation de cet outil refusée par l'utilisateur"}
@tool
def write_file(file_path:str, content: str, append:bool=True) -> str:
"""
Ecrire et ajouter du texte dans un fichier.
Args:
file_path (str): Chemin d'accès relatif vers le fichier à écrire.
content (str): Contenu à écrire dans le fichier.
append (bool, optional): Faut-il AJOUTER(True) au fichier, ou REMPLACER son contenu(False) ? True par défaut.
Returns:
str: Le chemin d'accès relatif vers le fichier en cas de réussite, ou une erreur en cas d'echec
"""
try:
base_dir:str = Path(sys.argv[0]).resolve().parent.as_posix() # Récupérer le chemin vers le point d'entrée du programme
full_path:str = base_dir + (file_path if file_path.startswith('/') else f'/{file_path}') # Puis générer le chemin vers le fichier
mode = "a" if append else "w" # Mode d'écriture
with open(full_path, mode, encoding="utf-8") as f: # Puis j'écris
f.write(content)
return str(full_path)
except Exception as e:
return f"Erreur lors de l'écriture: {str(e)}"
@tool
def editTodo(index:int, todoState:int, state: Annotated[dict, InjectedState], tool_call_id: Annotated[str, InjectedToolCallId])->Command: # https://stackoverflow.com/a/79525434
"""
@@ -278,7 +284,7 @@ def getTools()->List['Tools']:
"""
Récupérer la liste des tools
"""
return [internet_search, write_file, editTodo, read_file, search_in_files, addTodo, removeTodo, get_skill]
return [internet_search, append_part_to_report, editTodo, read_file, search_in_files, addTodo, removeTodo, get_skill]
def getWeeklyReportTools()->List['Tools']:
"""