Agent_V3 #3
@@ -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:
|
||||
"""
|
||||
@@ -34,33 +67,6 @@ def internet_search(query: str)->dict:
|
||||
return TavilyClient().search(resp.get("query"), model='auto')
|
||||
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']:
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user