Agenti AI con Hugging Face smolagents
Adel Nehme
VP of AI Curriculum, DataCamp

Strumenti Funzione (@tool decorator)
Strumenti Basati su Classe (Tool subclass)
from smolagents import Tool class ToolName(Tool): name = "tool_name"description = "Descrizione chiara per l'agente"inputs = { "parameter_name": {"type": "parameter_type", "description": "Scopo del parametro"} } output_type = "string"def __init__(self, custom_parameters): super().__init__() self.custom_attribute = custom_parametersdef forward(self, parameter_name): # L'agente chiama questo metodo return "output elaborato"
class RecipeSearchTool(Tool): name = "recipe_search" description = "Cerca documentazione culinaria per ricette, tecniche e informazioni sulla pianificazione dei pasti" inputs = { "query": {"type": "string", "description": "Query culinaria in linguaggio naturale"} } output_type = "string"def __init__(self, vectorstore, k=6): super().__init__() self.vectorstore = vectorstore self.k = kdef forward(self, query): docs = self.vectorstore.similarity_search(query, k=self.k) return "\n\n".join(doc.page_content for doc in docs) or "Niente trovato."
# Inizializza lo strumento di ricerca
recipe_search = RecipeSearchTool(vector_store)
agent = CodeAgent(
tools=[recipe_search],
model=model,
instructions="Cerca a fondo per fornire risposte complete alle ricette.
Se i risultati iniziali sembrano incompleti, prova termini di ricerca diversi.",
verbosity_level=1,
max_steps=8
)
Query: Come cucino il salmone con erbe usando tecniche professionali?
[Passo 1] Cerca "tecniche di cottura salmone erbe"...
[Passo 2] Cerca "preparazione professionale salmone"...
[Risposta Finale]
"Asciuga i filetti, condisci con erbe, e:
Agenti AI con Hugging Face smolagents