Skill.md tool
This commit is contained in:
@@ -145,6 +145,43 @@ def read_file(file_path: str) -> str:
|
||||
except Exception as e:
|
||||
return f"Erreur lors de la lecture : {str(e)}"
|
||||
|
||||
@tool
|
||||
def get_skill(skill_name:str=None)->str:
|
||||
"""
|
||||
Obtenir un skill, la description de comment faire quelque chose.
|
||||
|
||||
Args:
|
||||
skill_name (str, optional): Nom du skill recherché. Si ce n'est pas donné, listera les skills disponibles.
|
||||
|
||||
Returns:
|
||||
str: Sans nom de skill, la liste de ceux disponibles. Si un nom de skill est donné, l'ensemble de ce skill.
|
||||
"""
|
||||
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 + "/skills.md" # Puis générer le chemin vers le fichier
|
||||
|
||||
with open(full_path, "r", encoding="utf-8") as f:
|
||||
content = f.read()
|
||||
|
||||
if skill_name is None:
|
||||
# Liste des skills
|
||||
names = []
|
||||
for part in content.split("---")[1:]: # Pas besoin de la première partie
|
||||
names.append(part.splitlines()[1].split(' ')[1]) # Récupérer le nom du skill à la seconde ligne
|
||||
return str(names)
|
||||
|
||||
else:
|
||||
# Récupérer un skill
|
||||
for part in content.split("---")[1:]:
|
||||
if skill_name.lower() in part.lower(): # Dégueulasse pour l'opti mais c'est rapide à implémenter
|
||||
# Si c'est ce skill qui est recherché
|
||||
return f"{content.split("---")[0]}\n\n{part}"
|
||||
|
||||
return "Ce skill n'existe pas ! Regarde la liste des skills en rappelant cet outil sans arguments !"
|
||||
|
||||
except Exception as e:
|
||||
return f"Erreur lors de la lecture : {str(e)}"
|
||||
|
||||
@tool
|
||||
def ask_human(request:str)->str:
|
||||
"""
|
||||
@@ -257,7 +294,7 @@ 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]
|
||||
return [internet_search, write_file, editTodo, read_file, ask_human, search_in_files, addTodo, removeTodo, get_skill]
|
||||
|
||||
def getWeeklyReportTools()->List['Tools']:
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user