Uso degli strumenti / Function calling
L'uso degli strumenti consente a Claude di chiamare funzioni che tu definisci — una ricerca, una calcolatrice, il tuo database, qualsiasi API — e di usarne i risultati. È il fondamento di ogni agent.
Il loop
- Includi una lista di definizioni di strumenti (nome, descrizione, input in JSON Schema).
- Se Claude decide di usarne uno, restituisce un blocco
tool_use(con gli argomenti) e si ferma. - Esegui tu lo strumento e rinvii l'output come
tool_result. - Claude continua, eventualmente chiamando altri strumenti, finché non risponde.
Definire uno strumento (Python)
tools = [{
"name": "get_weather",
"description": "Get current weather for a city.",
"input_schema": {
"type": "object",
"properties": {"city": {"type": "string"}},
"required": ["city"],
},
}]
msg = client.messages.create(
model="claude-sonnet-4-6", max_tokens=1024,
tools=tools,
messages=[{"role": "user", "content": "What's the weather in Rome?"}],
)
# If msg.stop_reason == "tool_use": run the tool, then send a tool_result back.
Suggerimenti
- Le descrizioni sono prompt. Una
descriptiondello strumento chiara e la documentazione dei parametri migliorano enormemente quando/come Claude lo chiama. - Valida gli input che ricevi prima di eseguirli — non fidarti mai ciecamente.
- Restituisci gli errori come risultati. Se uno strumento fallisce, invia un
tool_resultche descrive l'errore così Claude può recuperare. - Strumenti lato server. Anthropic offre anche strumenti integrati (ad esempio ricerca web, esecuzione di codice, computer use) — consulta la documentazione per il menu attuale.
:::warning Strumenti = azioni = rischio Uno strumento che compie azioni reali eredita un modello di sicurezza. Applica il privilegio minimo e mantieni un umano nel loop per le chiamate rischiose — vedi Mettere in sicurezza agent e strumenti. :::