Loading...
  • Costruisci
  • Amministrazione
  • Modelli e prezzi
  • Client SDK
  • Riferimento API
Search...
⌘K
Log in
Gestisci le chiamate agli strumenti
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...

Solutions

  • AI agents
  • Code modernization
  • Coding
  • Customer support
  • Education
  • Financial services
  • Government
  • Life sciences

Partners

  • Amazon Bedrock
  • Google Cloud's Vertex AI

Learn

  • Blog
  • Courses
  • Use cases
  • Connectors
  • Customer stories
  • Engineering at Anthropic
  • Events
  • Powered by Claude
  • Service partners
  • Startups program

Company

  • Anthropic
  • Careers
  • Economic Futures
  • Research
  • News
  • Responsible Scaling Policy
  • Security and compliance
  • Transparency

Learn

  • Blog
  • Courses
  • Use cases
  • Connectors
  • Customer stories
  • Engineering at Anthropic
  • Events
  • Powered by Claude
  • Service partners
  • Startups program

Help and security

  • Availability
  • Status
  • Support
  • Discord

Terms and policies

  • Privacy policy
  • Responsible disclosure policy
  • Terms of service: Commercial
  • Terms of service: Consumer
  • Usage policy
Costruisci/Strumenti

Gestire le chiamate di strumenti

Analizzare i blocchi tool_use, formattare le risposte tool_result e gestire gli errori con is_error.

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.

Gestire i risultati dagli strumenti client

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:

  1. Estrarre name, id e input dal blocco tool_use.
  2. Eseguire lo strumento effettivo nel tuo codebase corrispondente a quel nome di strumento, passando l'input dello strumento.
  3. 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 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:

  • I blocchi di risultato dello strumento devono seguire immediatamente i loro corrispondenti blocchi di utilizzo dello strumento nella cronologia dei messaggi. Non puoi includere alcun messaggio tra il messaggio di utilizzo dello strumento dell'assistente e il messaggio di risultato dello strumento dell'utente.
  • Nel messaggio dell'utente contenente i risultati dello strumento, i blocchi tool_result devono venire PRIMA nell'array di contenuto. Qualsiasi testo deve venire DOPO tutti i risultati dello strumento.

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.

Gestire i risultati dagli strumenti server

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.

Gestire gli errori con is_error

Ci sono alcuni diversi tipi di errori che possono verificarsi quando si utilizzano strumenti con Claude:

Passaggi successivi

  • Per eseguire più strumenti in un turno, vedi Parallel tool use.
  • Per l'astrazione SDK che automatizza questo ciclo, vedi Tool Runner.
  • Per il flusso di lavoro completo di tool-use, vedi Define tools.

Was this page helpful?

  • Gestire i risultati dagli strumenti client
  • Gestire i risultati dagli strumenti server
  • Gestire gli errori con is_error
  • Passaggi successivi