## Usinage ## def auto_toolkit( module: ModuleType, *, include: List[str] = None, exclude: List[str] = None, verbose: bool = False, **kwargs ) -> List[FunctionTool]: """ Génère une liste de FunctionTool LlamaIndex à partir des fonctions publiques d’un module. Applique automatiquement les décorateurs d’entrée/sortie pour compatibilité agentique. Test : test_auto_toolkit.py Paramètres ---------- module : ModuleType Module Python à inspecter (ex. statistics, math, ou module maison) include : list of str, optional Liste blanche : noms de fonctions à inclure (si spécifié) exclude : list of str, optional Liste noire : noms de fonctions à ignorer verbose : bool Si True, affiche les outils ajoutés **kwargs : dict Métadonnées supplémentaires à passer à `as_llama_tool` (ex. tags, metadata, etc.) Returns ------- List[FunctionTool] Liste d’outils LlamaIndex prêts à être enregistrés dans un agent """ tools = [] total = 0 success = 0 for name, fn in inspect.getmembers(module, inspect.isfunction): if name.startswith("_"): continue if include and name not in include: continue if exclude and name in exclude: continue total += 1 try: # Application des décorateurs d’entrée et de sortie decorated_fn = react_tool_output(react_tool_input(fn)) decorated_fn = react_tool_output(name)(decorated_fn ) # Création du FunctionTool avec métadonnées tool = as_llama_tool( name=name, **kwargs )(decorated_fn) tools.append(tool) success += 1 if verbose: trace(f"Outil ajouté : {get_tool_name(tool)}", logger) except Exception as e: trace(f"Erreur lors de l'ajout de l'outil '{name}': {e}", logger) trace(f"{success} outils ajoutés avec succès sur {total} fonctions inspectées.", logger) return tools