Claude è in grado di interagire con strumenti e funzioni esterni 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! Continua a condividere le tue idee e suggerimenti usando questo modulo.

Ecco un esempio di come fornire strumenti a Claude usando l’API Messages:


Come funziona l’uso degli strumenti

Integra strumenti esterni con Claude seguendo 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, ad esempio “Che tempo fa a San Francisco?”
2

Claude decide di usare uno strumento

  • Claude valuta se qualche strumento può aiutare con la query dell’utente.
  • In caso affermativo, Claude costruisce una richiesta di utilizzo dello 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 dello strumento di Claude (passaggio 2) potrebbe essere tutto ciò di cui hai bisogno, senza inviare risultati indietro 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’uso degli strumenti

Scegliere un modello

In generale, usa Claude 3.7 Sonnet, 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 inferire parametri mancanti.

Se usi Claude 3.7 Sonnet con l’uso degli strumenti e il pensiero esteso, consulta la nostra guida qui per maggiori informazioni.

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’uso 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 this environment you have access to a set of tools you can use to answer the user's question.
{{ FORMATTING INSTRUCTIONS }}
String and scalar parameters should be specified as is, while lists and objects should use JSON format. Note that spaces for string values are not stripped. The output is not expected to be valid XML and is parsed with regular expressions.
Here are the functions available in JSONSchema format:
{{ TOOL DEFINITIONS IN JSON SCHEMA }}
{{ USER SYSTEM PROMPT }}
{{ TOOL CONFIGURATION }}

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 avvertenze o limitazioni importanti, 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 usarli. 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 usare 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’uso degli strumenti

In alcuni casi, potresti voler che Claude usi uno strumento specifico per rispondere alla domanda dell’utente, anche se Claude pensa di poter fornire una risposta senza usare 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 quattro possibili opzioni:

  • auto permette a Claude di decidere se chiamare o meno gli strumenti forniti. Questo è il valore predefinito quando vengono forniti tools.
  • 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.
  • none impedisce a Claude di usare qualsiasi strumento. Questo è il valore predefinito quando non vengono forniti tools.

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 ancora che il modello usi uno strumento specifico, puoi usare {"type": "auto"} per tool_choice (il default) e aggiungere istruzioni esplicite in un messaggio user. Per esempio: What's the weather like in London? Use the get_weather tool in your response.

[Continua nella parte successiva…]