Ciao a tutti, sono Emma di agent101.net!
Siamo ad aprile 2026, e se sei come me, probabilmente hai passato gli ultimi mesi a sentirti come se stessi costantemente recuperando nel mondo degli agenti AI. Ogni settimana esce un nuovo framework, un nuovo strumento, un nuovo articolo che sostiene di aver scoperto il segreto degli agenti autonomi. È entusiasmante, sì, ma anche… molto. Soprattutto quando stai appena iniziando, cercando di capire come far fare qualcosa di utile a una di queste cose.
Ricordo solo qualche mese fa, stavo fissando un schermo vuoto, cercando di costruire il mio primo agente “assistente personale”. Avevo letto tutte le spiegazioni di alto livello, compreso i concetti di pianificazione, memoria e utilizzo degli strumenti, ma quando si trattava di scrivere realmente il codice, mi sembrava di essere di nuovo alle scuole superiori a cercare di assemblare mobili IKEA senza istruzioni. Tanti pezzi, nessun percorso chiaro. Il mio primo tentativo ha coinvolto molto copy-paste da vari repository di GitHub, risultando in un mostro di Frankenstein di codice che funzionava a malapena e certamente non faceva nulla di intelligente.
Ecco perché oggi voglio parlare di qualcosa di incredibilmente pratico: insegnare al tuo agente AI a usare uno strumento con cui non è nato. Dimentica le grandi visioni di agenti che risolvono la fame nel mondo (per ora). Iniziamo con qualcosa di tangibile, qualcosa che renda immediatamente un agente più utile di una semplice chiacchierata. Daremo al nostro agente la capacità di interagire con il mondo reale – o almeno, un piccolo pezzo di esso – attraverso uno strumento semplice e costruito su misura. Non si tratta di costruire un sistema RAG complesso o un branco di agenti; si tratta del fondamentale “come fare” per estendere le capacità di un agente oltre il suo modello linguistico di base.
Perché questo argomento specifico? Perché nella mia esperienza, capire come equipaggiare un agente con strumenti è il più grande momento “aha!” per i principianti. Trasforma un agente da un chatbot glorificato in qualcosa che può davvero fare cose. È il primo passo verso una vera agency, ed è molto meno intimidatorio di quanto tu possa pensare.
Il “Perché” dietro Strumenti Personalizzati: Oltre al Semplice Parlare
Pensa a questo: un modello di linguaggio di grandi dimensioni (LLM) è brillante nel comprendere e generare testo. Può riassumere, fare brainstorming, scrivere poesia e persino codice. Ma non può, da solo, controllare il meteo, inviare un’email o interrogare un database live. Vive in un mondo di parole.
Gli strumenti sono il modo in cui colmiamo questo divario. Sono funzioni o API che esponiamo all’agente, permettendogli di eseguire azioni nel mondo esterno. Esempi comuni includono motori di ricerca, API di calendario, client email o persino semplici funzioni Python che eseguono calcoli.
Quando inizi con un framework di agente preconfezionato, spesso vengono forniti con alcuni strumenti pre-costruiti – magari una calcolatrice, una ricerca web. Ma il vero potere arriva quando puoi costruire uno strumento per la tua specifica necessità. Per me, quel momento è arrivato quando volevo che il mio agente mi dicesse se il mio caffè locale preferito era aperto in quel momento. Non c’era uno strumento pre-costruito per gli “orari dei caffè”. Dovevo crearne uno.
Questo tutorial si concentrerà su un esempio semplice, ma illustrativo: insegnare al nostro agente a controllare la data e l’ora attuali. Sì, un LLM sa cosa significa generalmente “oggi”, ma non conoscerà il secondo esatto. Questo strumento gli darà quella precisione, e il processo è applicabile a scenari molto più complessi.
Scegliere il Nostro Framework per Agenti (Manteniamolo Semplice!)
Per questo walkthrough, userò una libreria popolare e adatta ai principianti: LangChain. Ci sono altre fantastiche opzioni disponibili, come LlamaIndex o CrewAI, ma LangChain ha un modo molto chiaro di gestire gli strumenti che è perfetto per imparare le basi. Non preoccuparti se non l’hai mai toccato prima; procederemo passo dopo passo.
Prima di tutto, avrai bisogno di Python installato. Se non ce l’hai, ora è il momento! Vai su python.org. Poi, prepariamo il nostro ambiente:
pip install langchain langchain-openai python-dotenv
Avrai anche bisogno di una chiave API OpenAI. Perché OpenAI? Perché i loro modelli sono generalmente molto bravi a comprendere le istruzioni sull’uso degli strumenti senza troppe acrobazie di prompting. Imposta questo come variabile d’ambiente in un file .env nella tua directory di progetto:
OPENAI_API_KEY="your_openai_api_key_here"
E poi caricala nel tuo script:
import os
from dotenv import load_dotenv
load_dotenv()
os.environ["OPENAI_API_KEY"] = os.getenv("OPENAI_API_KEY")
Ok, setup completato. Ora inizia la parte divertente!
Passo 1: Definire la Funzionalità del Nostro Strumento Personalizzato
Il nostro strumento deve fare una cosa semplice: ottenere la data e l’ora attuali. In Python, questo è super facile.
from datetime import datetime
def get_current_datetime() -> str:
"""Restituisce la data e l'ora attuali in un formato leggibile dall'uomo."""
now = datetime.now()
return now.strftime("%Y-%m-%d %H:%M:%S")
print(get_current_datetime())
Esegui quel piccolo frammento e vedrai qualcosa come 2026-04-01 10:30:45. Perfetto! Questa è la logica principale che il nostro agente chiamerà.
L’importanza delle Docstring e degli Hint di Tipo
Noti la docstring ("""Restituisce la data attuale...""") e l’hint di tipo (-> str)? Questi non sono solo per una buona pratica di programmazione; sono cruciali per gli agenti AI. Il framework dell’agente (e per estensione, l’LLM) li utilizza per capire cosa fa lo strumento, quali argomenti accetta e cosa restituisce. Senza descrizioni chiare, l’agente non saprà quando o come usare il tuo strumento.
Passo 2: “Avvolgere” la Funzione come Strumento LangChain
LangChain ha un modo specifico per trasformare una normale funzione Python in uno strumento che può essere chiamato da un agente. Utilizziamo la classe Tool.
from langchain.tools import Tool
# ... (mantieni la tua funzione get_current_datetime sopra) ...
current_datetime_tool = Tool(
name="get_current_datetime",
func=get_current_datetime,
description="Utile quando hai bisogno di conoscere la data e l'ora attuali per rispondere a domande su 'ora', 'oggi', o 'che ora è'."
)
print(current_datetime_tool.name)
print(current_datetime_tool.description)
Analizziamo il costruttore Tool:
name: Questo è come l’agente si riferirà allo strumento. Dovrebbe essere una stringa concisa e descrittiva (ad esempio,"web_search","calculator").func: Questa è la vera funzione Python che viene eseguita quando lo strumento è chiamato.description: Questa è probabilmente la parte più importante. È una descrizione in linguaggio naturale che dice all’LLM quando e perché usare questo strumento. Sii specifico! Se il tuo strumento accetta argomenti, li descriverai qui. Ad esempio, se fosse uno strumento “ottieni meteo”, la descrizione potrebbe dire: “Utile per trovare le condizioni meteorologiche attuali per una determinata città. L’input deve essere il nome della città.”
I miei primi tentativi di strumenti personalizzati avevano descrizioni terribili. L’agente o non li usava mai, o li usava in momenti completamente inappropriati. Mi ci è voluto un po’ per realizzare che l’LLM non è psichico; sa solo ciò che gli dico in quella descrizione. Pensa a questo come scrivere istruzioni per un stagista molto intelligente ma letterale.
Passo 3: Assemblare l’Agente con il Nostro Nuovo Strumento
Ora che abbiamo il nostro strumento, dobbiamo darlo a un agente. Utilizzeremo qui un semplice agente conversazionale.
from langchain_openai import ChatOpenAI
from langchain.agents import AgentExecutor, create_react_agent
from langchain import hub
from langchain_core.prompts import PromptTemplate
# ... (mantieni la tua funzione get_current_datetime e la definizione current_datetime_tool sopra) ...
# 1. Scegli l'LLM
llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0) # Utilizzando gpt-3.5-turbo per convenienza economica
# 2. Definisci gli strumenti che l'agente può usare
tools = [current_datetime_tool]
# 3. Ottieni il modello di prompt per un agente ReAct
# LangChain hub è un ottimo posto per prompt pre-costruiti
prompt = hub.pull("hwchase17/react")
# Possiamo ispezionare il prompt se vogliamo vedere cosa c'è dentro
# print(prompt.template)
# 4. Crea l'agente
agent = create_react_agent(llm, tools, prompt)
# 5. Crea l'AgentExecutor
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
# 6. Esegui l'agente!
response = agent_executor.invoke({"input": "Qual è la data e l'ora attuali?"})
print("\nRisposta Finale dell'Agente:", response["output"])
response2 = agent_executor.invoke({"input": "Ciao, come stai?"})
print("\nRisposta Finale dell'Agente:", response2["output"])
response3 = agent_executor.invoke({"input": "Dimmi un fatto divertente sul numero 7."})
print("\nRisposta Finale dell'Agente:", response3["output"])
Analizziamo questo codice:
ChatOpenAI: Questo è il nostro LLM. Sto usandogpt-3.5-turboperché è veloce ed economico per sperimentazioni.temperature=0lo rende più deterministico, il che è utile quando vuoi che usi affidabilmente gli strumenti.tools = [current_datetime_tool]: Qui passiamo il nostro strumento personalizzato (e qualsiasi altro strumento vogliamo) all’agente.hub.pull("hwchase17/react"): Gli agenti di LangChain utilizzano tipicamente un specifico “template di prompt” che guida il LLM su come pensare e interagire con gli strumenti. Il prompt “ReAct” (Reasoning and Acting) è un modello molto comune ed efficace. Incoraggia il LLM a pensare passo dopo passo: Osservazione, Pensiero, Azione, Osservazione, ecc.create_react_agent: Questa funzione collega tutto – il nostro LLM, i nostri strumenti e il prompt ReAct – per creare un agente.AgentExecutor: Questo è il runtime che esegue effettivamente i “pensieri” e le “azioni” dell’agente. Il flagverbose=Trueè molto utile per il debug. Stampa il monologo interno dell’agente, mostrandoti quando decide di usare uno strumento, quali argomenti passa e cosa restituisce lo strumento.
Eseguire e Osservare il Tuo Agente
Quando esegui lo script, presta particolare attenzione all’output verbose=True. Per la query “Qual è la data e l’ora attuali?” dovresti vedere qualcosa del genere (semplificato):
> Ingresso nella nuova catena AgentExecutor...
Pensiero: L'utente sta chiedendo la data e l'ora attuali. Dovrei usare lo strumento `get_current_datetime` per trovare queste informazioni.
Azione: get_current_datetime
Osservazione: 2026-04-01 10:30:45
Pensiero: Ho ottenuto con successo la data e l'ora attuali. Posso ora fornire queste informazioni all'utente.
Risposta Finale: La data e l'ora attuali sono 2026-04-01 10:30:45.
> Catena completata.
Non è fantastico? Puoi vedere il processo di pensiero dell’agente! Ha *deciso* di usare il tuo strumento perché la sua descrizione corrispondeva all’intento dell’utente. Poi ha chiamato lo strumento, ha ottenuto il risultato e ha formulato una risposta.
Per le altre domande (“Ciao, come stai?” e “Raccontami un fatto divertente…”), l’agente *non dovrebbe* usare lo strumento, perché la sua descrizione non corrisponde all’intento. Questo mostra che l’agente sceglie intelligentemente quando agire.
Consigli per la Risoluzione dei Problemi (Perché Succederà)
Il mio percorso con gli agenti è stato un ciclo costante di “funziona!” seguito da “perché non funziona più?!”. Ecco i miei migliori consigli:
- Controlla la Descrizione del Tuo Strumento: Questo è il 90% della battaglia. È chiara? È specifica? Indica esplicitamente quando lo strumento è utile? Menziona il formato di input previsto (se presente)?
verbose=Trueè il Tuo Migliore Amico: Sul serio, non eseguire mai un agente senza di esso quando stai sviluppando. Rivela il monologo interno dell’agente e le sue decisioni. Se non sta usando il tuo strumento, il “Pensiero” ti dirà perché (o almeno, cosa sta pensando invece).- Prompt Più Semplici per il Debug: A volte il LLM si confonde con prompt complessi. Anche se
hub.pull("hwchase17/react")è ottimo, se sei davvero bloccato, prova un prompt super semplice che dice solo “Sei un assistente utile con accesso agli strumenti. Usali quando appropriato.” e vedi se questo lo sblocca. (Poi torna al ReAct!) - La Scelta del LLM è Importante: Anche se
gpt-3.5-turbodi solito va bene, alcuni modelli sono migliori nell’uso degli strumenti rispetto ad altri. Se hai problemi persistenti, considera di provaregpt-4ogpt-4-turboper un po’, anche solo per il debug, per vedere se il problema è nelle capacità di ragionamento del modello. - Formattazione dell’Input: Se il tuo strumento accetta argomenti, assicurati che l’agente li stia passando nel formato corretto. Il LLM farà del suo meglio per seguire la descrizione, ma a volte ha bisogno di un piccolo aiuto nel prompt o di una descrizione più esplicita degli argomenti attesi.
Conclusioni Pratiche e Prossimi Passi
Hai appena costruito il tuo primo strumento personalizzato per un agente AI! Fatti un applauso. Questa è una competenza fondamentale che sblocca un grande potenziale. Ecco cosa dovresti fare dopo:
- Sperimenta con lo Strumento Attuale:
- Prova a porre domande diverse all’agente: “Che ore sono a Tokyo?” (Non lo saprà, ma osserva il suo processo di pensiero). “Che giorno è oggi?” “Raccontami una barzelletta, e poi dimmi che ore sono.”
- Modifica la funzione
get_current_datetimeper restituire l’ora in un formato diverso (ad esempio, solo la data, o solo l’ora) e osserva come si adatta l’agente.
- Crea uno Strumento Leggermente Più Complesso:
- Un calcolatore semplice: Crea uno strumento che prende due numeri e un’operazione (somma, sottrazione, moltiplicazione, divisione) e restituisce il risultato. Ricorda di descrivere attentamente gli argomenti nella descrizione dello strumento.
- Un conteggio di parole: Uno strumento che prende una stringa di testo e restituisce il numero di parole.
- Uno strumento “lancia moneta”: Restituisce “Testa” o “Croce” in modo casuale.
Questo ti insegnerà a gestire strumenti che accettano argomenti, il che è un grande avanzamento.
- Esplora Altri Strumenti in LangChain: Dai un’occhiata alla documentazione di LangChain sugli strumenti. Vedrai come si integrano con API esistenti come Wikipedia, Google Search, o anche sistemi di file locali. I principi che hai appreso oggi si applicano a tutti loro.
- Pensa Alle Tue Esigenze: Qual è un compito ripetitivo che fai sul tuo computer? Puoi automatizzare una piccola parte di esso con uno strumento agente personalizzato? Magari controllare un sito web specifico, spostare un file, o inviare un messaggio preformattato.
Questo non è solo teoria; è l’applicazione pratica degli agenti AI. Una volta che ti sentirai a tuo agio a creare e integrare strumenti personalizzati, inizierai a vedere gli agenti non solo come partner di conversazione, ma come veri assistenti digitali capaci di interagire con il mondo per conto tuo. È qui che avviene la vera magia.
Continua a costruire, continua a sperimentare e ricorda: inizia in piccolo, itera, e tieni sempre verbose=True a portata di mano! Se costruisci qualcosa di interessante, condividilo nei commenti qui sotto o contattami su Twitter! Mi piacerebbe vedere cosa hai creato.
Buon lavoro,
Emma
agent101.net
🕒 Published: