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 attesi per lo strumento. |
Esempio di definizione semplice di strumento
get_weather
, si aspetta un oggetto di input con una stringa location
obbligatoria e una stringa unit
opzionale che deve essere “celsius” o “fahrenheit”.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 usare gli strumenti specificati e fornire il contesto necessario per il corretto funzionamento dello strumento:
Esempio di una buona descrizione di strumento
Esempio di descrizione povera di strumento
ticker
. La descrizione povera è troppo breve e lascia Claude con molte domande aperte sul comportamento e l’uso dello strumento.
tool_choice
così:
auto
permette a Claude di decidere se chiamare qualsiasi strumento fornito o no. 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
.tool_choice
invalideranno i blocchi di messaggi memorizzati nella cache. Le definizioni degli strumenti e i prompt di sistema rimangono nella cache, ma il contenuto dei messaggi deve essere rielaborato.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
di catena di pensiero prima dei blocchi di contenuto tool_use
, anche se esplicitamente richiesto di farlo.
tool_choice: {"type": "any"}
e tool_choice: {"type": "tool", "name": "..."}
non sono supportati e risulteranno in un errore. Solo tool_choice: {"type": "auto"}
(il predefinito) e tool_choice: {"type": "none"}
sono compatibili con il pensiero esteso.{"type": "auto"}
per tool_choice
(il predefinito) e aggiungere istruzioni esplicite in un messaggio user
. Per esempio: Com'è il tempo a Londra? Usa lo strumento get_weather nella tua risposta.
record_summary
con uno schema particolare. Vedi Uso degli strumenti con Claude per un esempio completo funzionante.
tool_choice
è impostato su auto
(questo è il valore predefinito, vedi Forzare l’uso degli strumenti), e Sonnet e Haiku possono essere spinti a farlo.
Per esempio, dato il prompt “Com’è il tempo a San Francisco adesso, e che ore sono lì?”, Claude potrebbe rispondere con:
disable_parallel_tool_use=true
quando il tipo tool_choice è auto
, che assicura che Claude usi al massimo uno strumentodisable_parallel_tool_use=true
quando il tipo tool_choice è any
o tool
, che assicura che Claude usi esattamente uno strumentoEsempio completo di uso parallelo degli strumenti
Script di test completo per strumenti paralleli
Prompt di sistema per l'uso parallelo degli strumenti
Prompt di messaggi utente
disable_parallel_tool_use
. Per aggirare questo, raccomandiamo di abilitare l’uso efficiente degli strumenti in termini di token, che aiuta a incoraggiare Claude a usare strumenti paralleli. Questa funzionalità beta riduce anche la latenza e risparmia in media il 14% nei token di output.Se preferisci non aderire alla beta dell’uso efficiente degli strumenti in termini di token, puoi anche introdurre uno “strumento batch” che può agire come meta-strumento per avvolgere invocazioni ad altri strumenti simultaneamente. Troviamo che se questo strumento è presente, il modello lo userà per chiamare simultaneamente più strumenti in parallelo per te.Vedi questo esempio nel nostro cookbook per come usare questa soluzione alternativa.stop_reason
di tool_use
e uno o più blocchi di contenuto tool_use
che includono:
id
: Un identificatore unico per questo particolare blocco di uso strumento. Questo sarà usato per abbinare i risultati dello strumento più tardi.name
: Il nome dello strumento che viene usato.input
: Un oggetto contenente l’input che viene passato allo strumento, conforme all’input_schema
dello strumento.Esempio di risposta API con un blocco di contenuto `tool_use`
name
, id
e input
dal blocco tool_use
.input
dello strumento.role
di user
, e un blocco content
contenente il tipo tool_result
e le seguenti informazioni:
tool_use_id
: L’id
della richiesta di uso strumento per cui questo è un risultato.content
: Il risultato dello strumento, come stringa (ad es. "content": "15 gradi"
), una lista di blocchi di contenuto annidati (ad es. "content": [{"type": "text", "text": "15 gradi"}]
), o una lista di blocchi documento (ad es. "content": ["type": "document", "source": {"type": "text", "media_type": "text/plain", "data": "15 gradi"}]
). Questi blocchi di contenuto possono usare i tipi text
, image
o document
.is_error
(opzionale): Imposta su true
se l’esecuzione dello strumento ha risultato in un errore.Esempio di risultato strumento riuscito
Esempio di risultato strumento con immagini
Esempio di risultato strumento vuoto
Esempio di risultato strumento con documenti
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 client e tool_result
, mentre i messaggi assistant
contengono contenuto generato dall’AI e tool_use
.max_tokens
max_tokens
, e la risposta troncata contiene un blocco di uso strumento incompleto, dovrai riprovare la richiesta con un valore max_tokens
più alto per ottenere l’uso completo dello strumento.
pause_turn
pause_turn
, indicando che l’API ha messo in pausa un turno di lunga durata.
Ecco come gestire il motivo di stop pause_turn
:
pause_turn
:
Errore di esecuzione strumento
content
insieme a "is_error": true
:Nome strumento non valido
description
più dettagliati nelle tue definizioni di strumento.Tuttavia, puoi anche continuare la conversazione in avanti con un tool_result
che indica l’errore, e Claude proverà a usare lo strumento di nuovo con le informazioni mancanti compilate:Tag <search_quality_reflection>
Errori strumenti server
is_error
per gli strumenti server.Per la ricerca web specificamente, i possibili codici di errore includono:too_many_requests
: Limite di velocità superatoinvalid_input
: Parametro query di ricerca non validomax_uses_exceeded
: Usi massimi dello strumento di ricerca web superatiquery_too_long
: Query supera la lunghezza massimaunavailable
: Si è verificato un errore internoChiamate di strumenti paralleli non funzionanti