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:

1

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?”
2

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 di tool_use, segnalando l’intenzione di Claude.
3

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 contenuto tool_result.
4

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:

ParametroDescrizione
nameIl nome dello strumento. Deve corrispondere alla regex ^[a-zA-Z0-9_-]{1,64}$.
descriptionUna descrizione dettagliata in testo semplice di cosa fa lo strumento, quando dovrebbe essere usato e come si comporta.
input_schemaUn 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:

In questo ambiente hai accesso a una serie di strumenti che puoi utilizzare per rispondere alla domanda dell'utente.
{{ ISTRUZIONI DI FORMATTAZIONE }}
I parametri stringa e scalari devono essere specificati così come sono, mentre liste e oggetti devono utilizzare il formato JSON. Nota che gli spazi per i valori stringa non vengono rimossi. L'output non deve essere XML valido e viene analizzato con espressioni regolari.
Ecco le funzioni disponibili in formato JSONSchema:
{{ DEFINIZIONI DEGLI STRUMENTI IN JSON SCHEMA }}
{{ PROMPT DI SISTEMA UTENTE }}
{{ CONFIGURAZIONE DEGLI STRUMENTI }}

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ì:

tool_choice = {"type": "tool", "name": "get_weather"}

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:

JSON
{
  "role": "assistant",
  "content": [
    {
      "type": "text",
      "text": "<thinking>Per rispondere a questa domanda, dovrò: 1. Usare lo strumento get_weather per ottenere il meteo attuale a San Francisco. 2. Usare lo strumento get_time per ottenere l'ora attuale nel fuso orario America/Los_Angeles, che copre San Francisco, CA.</thinking>"
    },
    {
      "type": "tool_use",
      "id": "toolu_01A09q90qw90lq917835lq9",
      "name": "get_weather",
      "input": {"location": "San Francisco, CA"}
    }
  ]
}

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 o tool, 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:

  1. Estrarre il name, id, e input dal blocco tool_use.
  2. Eseguire lo strumento effettivo nel tuo codebase corrispondente a quel nome strumento, passando l’input dello strumento.
  3. [opzionale] Continuare la conversazione inviando un nuovo messaggio con il role di user, e un blocco content contenente il tipo tool_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 tipi text o image.
    • is_error (opzionale): Impostato su true 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):

ModelloTool choiceConteggio token prompt di sistema per l’utilizzo strumenti
Claude 3.5 Sonnet (Ott)auto
any, tool
346 token
313 token
Claude 3 Opusauto
any, tool
530 token
281 token
Claude 3 Sonnetauto
any, tool
159 token
235 token
Claude 3 Haikuauto
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:

Was this page helpful?