Utilizzo degli strumenti (chiamate di funzione)
Claude è in grado di interagire con strumenti e funzioni esterne lato client, permettendoti di equipaggiare Claude con i tuoi strumenti personalizzati per eseguire una più ampia varietà di compiti.
Impara tutto ciò che devi sapere per padroneggiare l’uso degli strumenti con Claude attraverso il nostro nuovo corso completo sull’uso degli strumenti! Continua a condividere le tue idee e suggerimenti utilizzando questo modulo.
Ecco un esempio di come fornire strumenti a Claude utilizzando l’API Messages:
Come funziona l’utilizzo degli strumenti
Integra strumenti esterni con Claude in questi passaggi:
Fornisci a Claude gli strumenti e un prompt utente
- Definisci gli strumenti con nomi, descrizioni e schemi di input nella tua richiesta API.
- Includi un prompt utente che potrebbe richiedere questi strumenti, es. “Che tempo fa a San Francisco?”
Claude decide di utilizzare uno strumento
- Claude valuta se gli strumenti possono aiutare con la query dell’utente.
- Se sì, Claude costruisce una richiesta di utilizzo strumento correttamente formattata.
- La risposta API ha uno
stop_reason
ditool_use
, segnalando l’intenzione di Claude.
Estrai l'input dello strumento, esegui il codice e restituisci i risultati
- Dal tuo lato, estrai il nome dello strumento e l’input dalla richiesta di Claude.
- Esegui il codice effettivo dello strumento lato client.
- Continua la conversazione con un nuovo messaggio
user
contenente un blocco di contenutotool_result
.
Claude usa il risultato dello strumento per formulare una risposta
- Claude analizza i risultati dello strumento per elaborare la sua risposta finale al prompt originale dell’utente.
Nota: I passaggi 3 e 4 sono opzionali. Per alcuni flussi di lavoro, la richiesta di utilizzo strumento di Claude (passaggio 2) potrebbe essere tutto ciò di cui hai bisogno, senza inviare risultati a Claude.
Gli strumenti sono forniti dall’utente
È importante notare che Claude non ha accesso a strumenti integrati lato server. Tutti gli strumenti devono essere esplicitamente forniti da te, l’utente, in ogni richiesta API. Questo ti dà pieno controllo e flessibilità sugli strumenti che Claude può utilizzare.
La funzionalità di utilizzo del computer (beta) è un’eccezione - introduce strumenti che sono forniti da Anthropic ma implementati da te, l’utente.
Come implementare l’utilizzo degli strumenti
Scegliere un modello
In generale, usa Claude 3.5 Sonnet o Claude 3 Opus per strumenti complessi e query ambigue; gestiscono meglio strumenti multipli e cercano chiarimenti quando necessario.
Usa Claude 3.5 Haiku o Claude 3 Haiku per strumenti semplici, ma nota che potrebbero dedurre parametri mancanti.
Specificare gli strumenti
Gli strumenti sono specificati nel parametro di primo livello tools
della richiesta API. Ogni definizione di strumento include:
Parametro | Descrizione |
---|---|
name | Il nome dello strumento. Deve corrispondere alla regex ^[a-zA-Z0-9_-]{1,64}$ . |
description | Una descrizione dettagliata in testo semplice di cosa fa lo strumento, quando dovrebbe essere usato e come si comporta. |
input_schema | Un oggetto JSON Schema che definisce i parametri previsti per lo strumento. |
Prompt di sistema per l’utilizzo degli strumenti
Quando chiami l’API Anthropic con il parametro tools
, costruiamo un prompt di sistema speciale dalle definizioni degli strumenti, dalla configurazione degli strumenti e da qualsiasi prompt di sistema specificato dall’utente. Il prompt costruito è progettato per istruire il modello a utilizzare gli strumenti specificati e fornire il contesto necessario per il corretto funzionamento dello strumento:
Migliori pratiche per le definizioni degli strumenti
Per ottenere le migliori prestazioni da Claude quando si utilizzano gli strumenti, segui queste linee guida:
- Fornisci descrizioni estremamente dettagliate. Questo è di gran lunga il fattore più importante per le prestazioni degli strumenti. Le tue descrizioni dovrebbero spiegare ogni dettaglio sullo strumento, incluso:
- Cosa fa lo strumento
- Quando dovrebbe essere usato (e quando non dovrebbe)
- Cosa significa ogni parametro e come influenza il comportamento dello strumento
- Eventuali importanti avvertenze o limitazioni, come quali informazioni lo strumento non restituisce se il nome dello strumento non è chiaro. Più contesto puoi dare a Claude sui tuoi strumenti, meglio sarà nel decidere quando e come utilizzarli. Punta ad almeno 3-4 frasi per descrizione dello strumento, di più se lo strumento è complesso.
- Dai priorità alle descrizioni rispetto agli esempi. Mentre puoi includere esempi di come utilizzare uno strumento nella sua descrizione o nel prompt di accompagnamento, questo è meno importante che avere una spiegazione chiara e completa dello scopo e dei parametri dello strumento. Aggiungi esempi solo dopo aver completamente sviluppato la descrizione.
La buona descrizione spiega chiaramente cosa fa lo strumento, quando usarlo, quali dati restituisce e cosa significa il parametro ticker
. La descrizione scadente è troppo breve e lascia a Claude molte domande aperte sul comportamento e l’utilizzo dello strumento.
Controllare l’output di Claude
Forzare l’utilizzo degli strumenti
In alcuni casi, potresti voler che Claude utilizzi uno strumento specifico per rispondere alla domanda dell’utente, anche se Claude pensa di poter fornire una risposta senza utilizzare uno strumento. Puoi farlo specificando lo strumento nel campo tool_choice
così:
Quando si lavora con il parametro tool_choice, abbiamo tre possibili opzioni:
auto
permette a Claude di decidere se chiamare o meno gli strumenti forniti. Questo è il valore predefinito.any
dice a Claude che deve usare uno degli strumenti forniti, ma non forza uno strumento particolare.tool
ci permette di forzare Claude a usare sempre uno strumento particolare.
Questo diagramma illustra come funziona ogni opzione:
Nota che quando hai tool_choice
come any
o tool
, precompileremo il messaggio dell’assistente per forzare l’uso di uno strumento. Questo significa che i modelli non emetteranno un blocco di contenuto text
chain-of-thought prima dei blocchi di contenuto tool_use
, anche se esplicitamente richiesto di farlo.
I nostri test hanno dimostrato che questo non dovrebbe ridurre le prestazioni. Se desideri mantenere il chain-of-thought (in particolare con Opus) mentre richiedi comunque che il modello utilizzi uno strumento specifico, puoi usare {"type": "auto"}
per tool_choice
(il default) e aggiungere istruzioni esplicite in un messaggio user
. Per esempio: Che tempo fa a Londra? Usa lo strumento get_weather nella tua risposta.
Output JSON
Gli strumenti non devono necessariamente essere funzioni lato client — puoi usare gli strumenti ogni volta che vuoi che il modello restituisca output JSON che segue uno schema fornito. Per esempio, potresti usare uno strumento record_summary
con uno schema particolare. Vedi esempi di utilizzo degli strumenti per un esempio completo funzionante.
Catena di pensiero
Quando usa gli strumenti, Claude spesso mostrerà la sua “catena di pensiero”, cioè il ragionamento passo dopo passo che usa per scomporre il problema e decidere quali strumenti usare. Il modello Claude 3 Opus lo farà se tool_choice
è impostato su auto
(questo è il valore predefinito, vedi Forzare l’utilizzo degli strumenti), e Sonnet e Haiku possono essere sollecitati a farlo.
Per esempio, dato il prompt “Che tempo fa a San Francisco adesso, e che ora è lì?”, Claude potrebbe rispondere con:
Questa catena di pensiero fornisce informazioni sul processo di ragionamento di Claude e può aiutare a debuggare comportamenti inaspettati.
Con il modello Claude 3 Sonnet, la catena di pensiero è meno comune per impostazione predefinita, ma puoi sollecitare Claude a mostrare il suo ragionamento aggiungendo qualcosa come "Prima di rispondere, spiega il tuo ragionamento passo dopo passo nei tag."
al messaggio utente o al prompt di sistema.
È importante notare che mentre i tag <thinking>
sono una convenzione comune che Claude usa per denotare la sua catena di pensiero, il formato esatto (come il nome di questo tag XML) potrebbe cambiare nel tempo. Il tuo codice dovrebbe trattare la catena di pensiero come qualsiasi altro testo generato dall’assistente, e non fare affidamento sulla presenza o sulla formattazione specifica dei tag <thinking>
.
Disabilitare l’uso parallelo degli strumenti
Per impostazione predefinita, Claude può utilizzare più strumenti per rispondere a una query utente. Puoi disabilitare questo comportamento impostando disable_parallel_tool_use=true
nel campo tool_choice
.
- Quando il tipo di
tool_choice
èauto
, questo assicura che Claude usi al massimo uno strumento - Quando il tipo di
tool_choice
èany
otool
, questo assicura che Claude usi esattamente uno strumento
Gestire i blocchi di contenuto tool_use e tool_result
Quando Claude decide di utilizzare uno degli strumenti che hai fornito, restituirà una risposta con uno stop_reason
di tool_use
e uno o più blocchi di contenuto tool_use
nella risposta API che includono:
id
: Un identificatore unico per questo particolare blocco di utilizzo strumento. Questo verrà utilizzato per abbinare i risultati dello strumento più tardi.name
: Il nome dello strumento che viene utilizzato.input
: Un oggetto contenente l’input che viene passato allo strumento, conforme all’input_schema
dello strumento.
Quando ricevi una risposta di utilizzo strumento, dovresti:
- Estrarre il
name
,id
, einput
dal bloccotool_use
. - Eseguire lo strumento effettivo nel tuo codebase corrispondente a quel nome strumento, passando l’
input
dello strumento. - [opzionale] Continuare la conversazione inviando un nuovo messaggio con il
role
diuser
, e un bloccocontent
contenente il tipotool_result
e le seguenti informazioni:tool_use_id
: L’id
della richiesta di utilizzo strumento per cui questo è un risultato.content
: Il risultato dello strumento, come stringa (es."content": "15 gradi"
) o lista di blocchi di contenuto annidati (es."content": [{"type": "text", "text": "15 gradi"}]
). Questi blocchi di contenuto possono utilizzare i tipitext
oimage
.is_error
(opzionale): Impostato sutrue
se l’esecuzione dello strumento ha prodotto un errore.
Dopo aver ricevuto il risultato dello strumento, Claude userà quell’informazione per continuare a generare una risposta al prompt originale dell’utente.
Differenze da altre API
A differenza delle API che separano l’uso degli strumenti o usano ruoli speciali come tool
o function
, l’API di Anthropic integra gli strumenti direttamente nella struttura dei messaggi user
e assistant
.
I messaggi contengono array di blocchi text
, image
, tool_use
, e tool_result
. I messaggi user
includono contenuto lato client e tool_result
, mentre i messaggi assistant
contengono contenuto generato dall’IA e tool_use
.
Risoluzione dei problemi
Ci sono diversi tipi di errori che possono verificarsi quando si usano gli strumenti con Claude:
Esempi di utilizzo degli strumenti
Ecco alcuni esempi di codice che dimostrano vari pattern e tecniche di utilizzo 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.
Prezzi
Le richieste di utilizzo strumenti hanno lo stesso prezzo di qualsiasi altra richiesta API Claude, basato sul numero totale di token di input inviati al modello (inclusi nel parametro tools
) e il numero di token di output generati.”
I token aggiuntivi dall’utilizzo degli strumenti provengono da:
- Il parametro
tools
nelle richieste API (nomi degli strumenti, descrizioni e schemi) - Blocchi di contenuto
tool_use
nelle richieste e risposte API - Blocchi di contenuto
tool_result
nelle richieste API
Quando usi tools
, includiamo anche automaticamente un prompt di sistema speciale per il modello che abilita l’utilizzo degli strumenti. Il numero di token di utilizzo strumenti richiesti per ogni modello sono elencati di seguito (esclusi i token aggiuntivi elencati sopra):
Modello | Tool choice | Conteggio token prompt di sistema per l’utilizzo strumenti |
---|---|---|
Claude 3.5 Sonnet (Ott) | auto any , tool | 346 token 313 token |
Claude 3 Opus | auto any , tool | 530 token 281 token |
Claude 3 Sonnet | auto any , tool | 159 token 235 token |
Claude 3 Haiku | auto any , tool | 264 token 340 token |
Claude 3.5 Sonnet (Giu) | auto any , tool | 294 token 261 token |
Questi conteggi di token vengono aggiunti ai tuoi normali token di input e output per calcolare il costo totale di una richiesta. Fai riferimento alla nostra tabella di panoramica dei modelli per i prezzi attuali per modello.
Quando invii un prompt di utilizzo strumento, proprio come qualsiasi altra richiesta API, la risposta emetterà sia i conteggi dei token di input che di output come parte delle metriche di usage
riportate.
Prossimi passi
Esplora il nostro repository di esempi di codice di utilizzo strumenti pronti per l’implementazione nei nostri cookbooks:
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 lato client per migliorare il supporto.
Estrattore JSON
Vedi come Claude e l’utilizzo degli strumenti possono estrarre dati strutturati da testo non strutturato.
Was this page helpful?