Gestire le chiamate agli strumenti
Analizza i blocchi tool_use, formatta le risposte tool_result e gestisci gli errori con is_error.
Questa pagina copre il ciclo di vita delle chiamate agli strumenti: leggere i blocchi tool_use dalla risposta di Claude, formattare i blocchi tool_result nella tua risposta e segnalare gli errori. Per l'astrazione SDK che gestisce tutto questo automaticamente, consulta Tool Runner.
La risposta di Claude varia a seconda che utilizzi uno strumento client o server.
Gestione dei risultati degli strumenti client
La risposta avrà uno stop_reason pari a tool_use e uno o più blocchi di contenuto tool_use che includono:
id: Un identificatore univoco per questo specifico blocco di uso dello strumento. Verrà utilizzato in seguito per abbinare i risultati dello strumento.name: Il nome dello strumento utilizzato.input: Un oggetto contenente l'input passato allo strumento, conforme all'input_schemadello strumento.
Un blocco tool_use per un membro del set di strumenti computer use o browser use include anche un campo toolset_name ("computer" o "browser"). Il suo name è lo strumento membro che Claude sta chiamando, come screenshot o navigate, quindi instrada questi blocchi in base a entrambi i campi.
{
"id": "msg_01Aq9w938a90dw8q",
"model": "claude-opus-5-5",
"stop_reason": "tool_use",
"role": "assistant",
"content": [
{
"type": "text",
"text": "I'll check the current weather in San Francisco for you."
},
{
"type": "tool_use",
"id": "toolu_01A09q90qw90lq917835lq9",
"name": "get_weather",
"input": { "location": "San Francisco, CA", "unit": "celsius" }
}
]
}Quando ricevi una risposta di uso dello strumento per uno strumento client, dovresti:
- Estrarre
name,ideinputdal bloccotool_use. - Eseguire lo strumento effettivo nel tuo codice corrispondente a quel nome di strumento, passando l'
inputdello strumento. - Continuare la conversazione inviando un nuovo messaggio con
rolepari ausere un bloccocontentcontenente il tipotool_resulte le seguenti informazioni:tool_use_id: L'iddella richiesta di uso dello strumento a cui questo risultato si riferisce.content(opzionale): Il risultato dello strumento, come stringa (ad esempio,"content": "15 degrees"), un elenco di blocchi di contenuto annidati (ad esempio,"content": [{"type": "text", "text": "15 degrees"}]) o un elenco di blocchi documento (ad esempio,"content": [{"type": "document", "source": {"type": "text", "media_type": "text/plain", "data": "15 degrees"}}]). Questi blocchi di contenuto possono usare i tipitext,image,documentosearch_result.is_error(opzionale): Imposta atruese l'esecuzione dello strumento ha prodotto un errore.
Un tool_result che risponde a un blocco membro di computer use o browser use deve anche riportare lo stesso valore toolset_name del blocco tool_use; un risultato membro che lo omette viene rifiutato. Anche il suo content è più ristretto: un risultato membro può contenere solo blocchi text e image, e un risultato di browser use può aggiungere un blocco browser_state (i membri di gestione delle schede restituiscono solo quel blocco).
{
"role": "user",
"content": [
{
"type": "tool_result",
"tool_use_id": "toolu_01A09q90qw90lq917835lq9",
"content": "15 degrees"
}
]
}{
"role": "user",
"content": [
{
"type": "tool_result",
"tool_use_id": "toolu_01A09q90qw90lq917835lq9",
"content": [
{ "type": "text", "text": "15 degrees" },
{
"type": "image",
"source": {
"type": "base64",
"media_type": "image/jpeg",
"data": "/9j/4AAQSkZJRg..."
}
}
]
}
]
}{
"role": "user",
"content": [
{
"type": "tool_result",
"tool_use_id": "toolu_01A09q90qw90lq917835lq9"
}
]
}{
"role": "user",
"content": [
{
"type": "tool_result",
"tool_use_id": "toolu_01A09q90qw90lq917835lq9",
"content": [
{ "type": "text", "text": "The weather is" },
{
"type": "document",
"source": {
"type": "text",
"media_type": "text/plain",
"data": "15 degrees"
}
}
]
}
]
}Dopo aver ricevuto il risultato dello strumento, Claude utilizzerà tali informazioni per continuare a generare una risposta al prompt originale dell'utente.
Gestione dei risultati degli strumenti server
Claude esegue lo strumento internamente e incorpora i risultati direttamente nella sua risposta senza richiedere ulteriori interazioni da parte dell'utente.
Gestione degli errori con is_error
Esistono alcuni tipi diversi di errori che possono verificarsi quando si usano gli strumenti con Claude:
Se lo strumento stesso genera un errore durante l'esecuzione (ad esempio, un errore di rete durante il recupero dei dati meteo), puoi restituire il messaggio di errore nel content insieme a "is_error": true:
{
"role": "user",
"content": [
{
"type": "tool_result",
"tool_use_id": "toolu_01A09q90qw90lq917835lq9",
"content": "ConnectionError: the weather service API is not available (HTTP 500)",
"is_error": true
}
]
}Claude incorporerà quindi questo errore nella sua risposta all'utente. Ad esempio: "Mi dispiace, non sono riuscito a recuperare il meteo attuale perché l'API del servizio meteo non è disponibile. Riprova più tardi."
Se il tentativo di Claude di usare uno strumento non è valido (ad esempio, mancano parametri obbligatori), di solito significa che non c'erano informazioni sufficienti perché Claude usasse lo strumento correttamente. La soluzione migliore durante lo sviluppo è riprovare la richiesta con valori description più dettagliati nelle definizioni degli strumenti.
Tuttavia, puoi anche proseguire la conversazione con un tool_result che indica l'errore, e Claude proverà a usare nuovamente lo strumento con le informazioni mancanti compilate:
{
"role": "user",
"content": [
{
"type": "tool_result",
"tool_use_id": "toolu_01A09q90qw90lq917835lq9",
"content": "Error: Missing required 'location' parameter",
"is_error": true
}
]
}Se una richiesta di strumento non è valida o mancano parametri, Claude riproverà 2-3 volte con correzioni prima di scusarsi con l'utente.
Quando gli strumenti server incontrano errori (ad esempio, problemi di rete con Web Search), Claude gestirà questi errori in modo trasparente e tenterà di fornire una risposta alternativa o una spiegazione all'utente. A differenza degli strumenti client, non è necessario gestire i risultati is_error per gli strumenti server.
Per la ricerca web in particolare, i possibili codici di errore includono:
too_many_requests: Limite di velocità superatoinvalid_input: Parametro della query di ricerca non validomax_uses_exceeded: Numero massimo di utilizzi dello strumento di ricerca web superatoquery_too_long: La query supera la lunghezza massimaunavailable: Si è verificato un errore interno
Prossimi passi
Gestisci le risposte in cui Claude chiama più strumenti in un singolo turno.
Lascia che l'SDK gestisca per te il ciclo tool_use, la formattazione dei risultati e i tentativi ripetuti.
Scrivi schemi e descrizioni che guidino Claude verso lo strumento giusto.
Was this page helpful?