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.

    Was this page helpful?

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

    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, ), un elenco di blocchi di contenuto annidati (ad esempio, ), o un elenco di blocchi di documenti (ad esempio, ). Questi blocchi di contenuto possono utilizzare i tipi , o .

    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" /* ... */ }
      ]
    }

    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.
    "content": "15 degrees"
    "content": [{"type": "text", "text": "15 degrees"}]
    "content": [{"type": "document", "source": {"type": "text", "media_type": "text/plain", "data": "15 degrees"}}]
    text
    image
    document
  1. is_error (opzionale): Impostare su true se l'esecuzione dello strumento ha generato un errore.
  2. 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.