Questa pagina copre il ciclo di vita della chiamata di 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 questo automaticamente, vedi Tool Runner.
Più semplice con Tool Runner: La gestione manuale degli strumenti descritta in questa pagina è gestita automaticamente da Tool Runner. Usa questa pagina quando hai bisogno di un controllo personalizzato sull'esecuzione degli strumenti.
La risposta di Claude differisce a seconda che utilizzi uno strumento client o server.
La risposta avrà un stop_reason di tool_use e uno o più blocchi di contenuto tool_use che includono:
id: Un identificatore univoco per questo particolare blocco di utilizzo dello strumento. Questo verrà utilizzato per abbinare i risultati dello strumento in seguito.name: Il nome dello strumento utilizzato.input: Un oggetto contenente l'input passato allo strumento, conforme a input_schema dello strumento.Quando ricevi una risposta di utilizzo dello strumento per uno strumento client, dovresti:
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 utilizzo dello strumento per cui questo è un risultato.content: Il risultato dello strumento, come una 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 di documenti (ad esempio, "content": [{"type": "document", "source": {"type": "text", "media_type": "text/plain", "data": "15 degrees"}}]). Questi blocchi di contenuto possono utilizzare i tipi text, image o document.is_error (opzionale): Impostare su true se l'esecuzione dello strumento ha generato un errore.Requisiti di formattazione importanti:
Ad esempio, questo causerà un errore 400:
{
"role": "user",
"content": [
{ "type": "text", "text": "Here are the results:" }, // ❌ Testo prima di tool_result
{ "type": "tool_result", "tool_use_id": "toolu_01" /* ... */ }
]
}Questo è corretto:
{
"role": "user",
"content": [
{ "type": "tool_result", "tool_use_id": "toolu_01" /* ... */ },
{ "type": "text", "text": "What should I do next?" } // ✅ Testo dopo tool_result
]
}Se ricevi un errore come "tool_use ids were found without tool_result blocks immediately after", verifica che i risultati dello strumento siano formattati correttamente.
Dopo aver ricevuto il risultato dello strumento, Claude utilizzerà queste informazioni per continuare a generare una risposta al prompt dell'utente originale.
Claude esegue lo strumento internamente e incorpora i risultati direttamente nella sua risposta senza richiedere ulteriore interazione dell'utente.
Differenze da altre API
A differenza delle API che separano l'utilizzo dello strumento o utilizzano ruoli speciali come tool o function, l'API Claude 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'IA e tool_use.
Ci sono alcuni diversi tipi di errori che possono verificarsi quando si utilizzano strumenti con Claude:
Was this page helpful?