Ecco un esempio di come fornire strumenti a Claude utilizzando l’API Messages:
Come funziona l’uso degli strumenti
Claude supporta due tipi di strumenti:-
Strumenti client: Strumenti che vengono eseguiti sui tuoi sistemi, che includono:
- Strumenti personalizzati definiti dall’utente che crei e implementi
- Strumenti definiti da Anthropic come uso del computer e editor di testo che richiedono implementazione client
- Strumenti server: Strumenti che vengono eseguiti sui server di Anthropic, come gli strumenti ricerca web e recupero web. Questi strumenti devono essere specificati nella richiesta API ma non richiedono implementazione da parte tua.
Gli strumenti definiti da Anthropic utilizzano tipi versionati (ad esempio,
web_search_20250305, text_editor_20250124) per garantire compatibilità tra le versioni del modello.Strumenti client
Integra gli strumenti client con Claude in questi passaggi:1
Fornisci a Claude strumenti e un prompt utente
- Definisci gli strumenti client con nomi, descrizioni e schemi di input nella tua richiesta API.
- Includi un prompt utente che potrebbe richiedere questi strumenti, ad esempio, “Com’è il tempo a San Francisco?”
2
Claude decide di utilizzare uno strumento
- Claude valuta se qualche strumento può aiutare con la query dell’utente.
- Se sì, Claude costruisce una richiesta di uso strumento formattata correttamente.
- Per gli strumenti client, la risposta API ha un
stop_reasonditool_use, segnalando l’intenzione di Claude.
3
Esegui lo strumento e restituisci i risultati
- Estrai il nome dello strumento e l’input dalla richiesta di Claude
- Esegui il codice dello strumento sul tuo sistema
- Restituisci i risultati in un nuovo messaggio
usercontenente un blocco di contenutotool_result
4
Claude utilizza il risultato dello strumento per formulare una risposta
- Claude analizza i risultati dello strumento per creare la sua risposta finale al prompt originale dell’utente.
Strumenti server
Gli strumenti server seguono un flusso di lavoro diverso:1
Fornisci a Claude strumenti e un prompt utente
- Gli strumenti server, come ricerca web e recupero web, hanno i loro parametri.
- Includi un prompt utente che potrebbe richiedere questi strumenti, ad esempio, “Cerca le ultime notizie sull’IA” o “Analizza il contenuto a questo URL.”
2
Claude esegue lo strumento server
- Claude valuta se uno strumento server può aiutare con la query dell’utente.
- Se sì, Claude esegue lo strumento, e i risultati vengono automaticamente incorporati nella risposta di Claude.
3
Claude utilizza il risultato dello strumento server per formulare una risposta
- Claude analizza i risultati dello strumento server per creare la sua risposta finale al prompt originale dell’utente.
- Non è necessaria alcuna interazione aggiuntiva dell’utente per l’esecuzione dello strumento server.
Esempi di uso degli strumenti
Ecco alcuni esempi di codice che dimostrano vari modelli e tecniche di uso degli strumenti. Per brevità, gli strumenti sono strumenti semplici, e le descrizioni degli strumenti sono più brevi di quanto sarebbe ideale per garantire le migliori prestazioni.Esempio di strumento singolo
Esempio di strumento singolo
JSON
get_weather con l’input fornito, e restituire il risultato in un nuovo messaggio user:JSON
Uso parallelo degli strumenti
Uso parallelo degli strumenti
Claude può chiamare più strumenti in parallelo all’interno di una singola risposta, il che è utile per compiti che richiedono più operazioni indipendenti. Quando si utilizzano strumenti paralleli, tutti i blocchi Per esempi completi, script di test e migliori pratiche per implementare chiamate di strumenti paralleli, consulta la sezione uso parallelo degli strumenti nella nostra guida all’implementazione.
tool_use sono inclusi in un singolo messaggio assistente, e tutti i blocchi tool_result corrispondenti devono essere forniti nel messaggio utente successivo.Importante: I risultati degli strumenti devono essere formattati correttamente per evitare errori API e garantire che Claude continui a utilizzare strumenti paralleli. Consulta la nostra guida all’implementazione per i requisiti di formattazione dettagliati e esempi di codice completi.
Esempio di strumenti multipli
Esempio di strumenti multipli
Puoi fornire a Claude più strumenti tra cui scegliere in una singola richiesta. Ecco un esempio con entrambi gli strumenti In questo caso, Claude può:
get_weather e get_time, insieme a una query utente che chiede entrambi.- Utilizzare gli strumenti sequenzialmente (uno alla volta) — chiamando prima
get_weather, poiget_timedopo aver ricevuto il risultato meteorologico - Utilizzare chiamate di strumenti paralleli — producendo più blocchi
tool_usein una singola risposta quando le operazioni sono indipendenti
user, con ogni risultato nel proprio blocco tool_result.Informazioni mancanti
Informazioni mancanti
Se il prompt dell’utente non include abbastanza informazioni per riempire tutti i parametri richiesti per uno strumento, Claude Opus è molto più propenso a riconoscere che un parametro manca e a chiederlo. Claude Sonnet può chiedere, specialmente quando viene sollecitato a pensare prima di produrre una richiesta di strumento. Ma può anche fare del suo meglio per inferire un valore ragionevole.Ad esempio, utilizzando lo strumento Questo comportamento non è garantito, specialmente per prompt più ambigui e per modelli meno intelligenti. Se Claude Opus non ha abbastanza contesto per riempire i parametri richiesti, è molto più probabile che risponda con una domanda di chiarimento invece di effettuare una chiamata di strumento.
get_weather sopra, se chiedi a Claude “Com’è il tempo?” senza specificare una posizione, Claude, in particolare Claude Sonnet, può fare una supposizione sui parametri degli strumenti:JSON
Strumenti sequenziali
Strumenti sequenziali
Alcuni compiti possono richiedere di chiamare più strumenti in sequenza, utilizzando l’output di uno strumento come input per un altro. In tal caso, Claude chiamerà uno strumento alla volta. Se sollecitato a chiamare tutti gli strumenti contemporaneamente, Claude è probabile che indovini i parametri per gli strumenti più a valle se dipendono dai risultati degli strumenti per gli strumenti più a monte.Ecco un esempio di utilizzo di uno strumento In questo caso, Claude chiamerebbe prima lo strumento
Questo esempio dimostra come Claude può concatenare insieme più chiamate di strumenti per rispondere a una domanda che richiede la raccolta di dati da diverse fonti. I passaggi chiave sono:
get_location per ottenere la posizione dell’utente, poi passare quella posizione allo strumento get_weather:get_location per ottenere la posizione dell’utente. Dopo che restituisci la posizione in un tool_result, Claude chiamerebbe poi get_weather con quella posizione per ottenere la risposta finale.La conversazione completa potrebbe apparire così:| Ruolo | Contenuto |
|---|---|
| Utente | Com’è il tempo dove mi trovo? |
| Assistente | Troverò prima la tua posizione attuale, poi controllerò il tempo lì. [Uso strumento per get_location] |
| Utente | [Risultato strumento per get_location con id corrispondente e risultato di San Francisco, CA] |
| Assistente | [Uso strumento per get_weather con il seguente input]{ “location”: “San Francisco, CA”, “unit”: “fahrenheit” } |
| Utente | [Risultato strumento per get_weather con id corrispondente e risultato di “59°F (15°C), prevalentemente nuvoloso”] |
| Assistente | Basandomi sulla tua posizione attuale a San Francisco, CA, il tempo in questo momento è 59°F (15°C) e prevalentemente nuvoloso. È una giornata piuttosto fresca e coperta in città. Potresti voler portare una giacca leggera se stai uscendo. |
- Claude prima si rende conto che ha bisogno della posizione dell’utente per rispondere alla domanda meteorologica, quindi chiama lo strumento
get_location. - L’utente (cioè il codice client) esegue la funzione
get_locationeffettiva e restituisce il risultato “San Francisco, CA” in un bloccotool_result. - Con la posizione ora conosciuta, Claude procede a chiamare lo strumento
get_weather, passando “San Francisco, CA” come parametrolocation(così come un parametrounitindovinato, poichéunitnon è un parametro richiesto). - L’utente esegue nuovamente la funzione
get_weathereffettiva con gli argomenti forniti e restituisce i dati meteorologici in un altro bloccotool_result. - Infine, Claude incorpora i dati meteorologici in una risposta in linguaggio naturale alla domanda originale.
Uso degli strumenti con catena di pensiero
Uso degli strumenti con catena di pensiero
Per impostazione predefinita, Claude Opus è sollecitato a pensare prima di rispondere a una query di uso strumento per determinare al meglio se uno strumento è necessario, quale strumento utilizzare e i parametri appropriati. Claude Sonnet e Claude Haiku sono sollecitati a cercare di utilizzare gli strumenti il più possibile e sono più propensi a chiamare uno strumento non necessario o inferire parametri mancanti. Per sollecitare Sonnet o Haiku a valutare meglio la query dell’utente prima di effettuare chiamate di strumenti, può essere utilizzato il seguente prompt:Prompt catena di pensiero
Rispondi alla richiesta dell'utente utilizzando strumenti pertinenti (se sono disponibili). Prima di chiamare uno strumento, fai un'analisi. Primo, pensa a quale degli strumenti forniti è lo strumento pertinente per rispondere alla richiesta dell'utente. Secondo, esamina ciascuno dei parametri richiesti dello strumento pertinente e determina se l'utente ha fornito direttamente o dato abbastanza informazioni per inferire un valore. Quando decidi se il parametro può essere inferito, considera attentamente tutto il contesto per vedere se supporta un valore specifico. Se tutti i parametri richiesti sono presenti o possono essere ragionevolmente inferiti, procedi con la chiamata dello strumento. MA, se uno dei valori per un parametro richiesto manca, NON invocare la funzione (nemmeno con riempitivi per i parametri mancanti) e invece, chiedi all'utente di fornire i parametri mancanti. NON chiedere più informazioni sui parametri opzionali se non vengono forniti. Modalità JSON
Modalità JSON
Puoi utilizzare gli strumenti per far produrre a Claude un output JSON che segue uno schema, anche se non hai intenzione di eseguire quell’output attraverso uno strumento o funzione.Quando utilizzi gli strumenti in questo modo:
- Di solito vuoi fornire un singolo strumento
- Dovresti impostare
tool_choice(vedi Forzare l’uso degli strumenti) per istruire il modello a utilizzare esplicitamente quello strumento - Ricorda che il modello passerà l’
inputallo strumento, quindi il nome dello strumento e la descrizione dovrebbero essere dalla prospettiva del modello.
record_summary per descrivere un’immagine seguendo un formato particolare.Prezzi
Tool use requests are priced based on:- The total number of input tokens sent to the model (including in the
toolsparameter) - The number of output tokens generated
- For server-side tools, additional usage-based pricing (e.g., web search charges per search performed)
- The
toolsparameter in API requests (tool names, descriptions, and schemas) tool_usecontent blocks in API requests and responsestool_resultcontent blocks in API requests
tools, we also automatically include a special system prompt for the model which enables tool use. The number of tool use tokens required for each model are listed below (excluding the additional tokens listed above). Note that the table assumes at least 1 tool is provided. If no tools are provided, then a tool choice of none uses 0 additional system prompt tokens.
| Model | Tool choice | Tool use system prompt token count |
|---|---|---|
| Claude Opus 4.1 | auto, noneany, tool | 346 tokens 313 tokens |
| Claude Opus 4 | auto, noneany, tool | 346 tokens 313 tokens |
| Claude Sonnet 4.5 | auto, noneany, tool | 346 tokens 313 tokens |
| Claude Sonnet 4 | auto, noneany, tool | 346 tokens 313 tokens |
| Claude Sonnet 3.7 (deprecated) | auto, noneany, tool | 346 tokens 313 tokens |
| Claude Haiku 4.5 | auto, noneany, tool | 346 tokens 313 tokens |
| Claude Haiku 3.5 | auto, noneany, tool | 264 tokens 340 tokens |
| Claude Opus 3 (deprecated) | auto, noneany, tool | 530 tokens 281 tokens |
| Claude Sonnet 3 | auto, noneany, tool | 159 tokens 235 tokens |
| Claude Haiku 3 | auto, noneany, tool | 264 tokens 340 tokens |
usage riportate.
Prossimi Passi
Esplora il nostro repository di esempi di codice di uso strumento pronti per l’implementazione nei nostri cookbook:Strumento Calcolatrice
Impara come integrare un semplice strumento calcolatrice con Claude per calcoli numerici precisi.
Agente Servizio Clienti
Costruisci un bot di servizio clienti reattivo che sfrutta strumenti client per
migliorare il supporto.
Estrattore JSON
Vedi come Claude e l’uso degli strumenti possono estrarre dati strutturati da testo non strutturato.