Claude Platform Docs
MessagesPensiero

Il pensiero nei flussi di lavoro con strumenti e multi-turno

Segui passo dopo passo un ciclo completo di uso degli strumenti in due turni che preserva correttamente i blocchi di pensiero, e osserva come il pensiero interleaved modifica il flusso.

Questa pagina illustra passo dopo passo un ciclo completo di "tool use" (uso degli strumenti) in due turni con il pensiero abilitato: Claude pensa, richiede una chiamata a uno strumento, riceve il risultato e completa la sua risposta, con i blocchi di pensiero gestiti correttamente in ogni fase. Le regole complete si trovano nella pagina Pensiero, in Pensiero con uso degli strumenti e Preservare i blocchi di pensiero; questa pagina mostra tali regole applicate in codice eseguibile.

Le regole applicate in questa guida

Ogni link porta all'enunciazione completa nella pagina Pensiero:

Gli esempi usano il pensiero adattivo; sui modelli che supportano solo il pensiero esteso, sostituisci con thinking: {type: "enabled", budget_tokens: N}. Le regole del ciclo sono identiche.

Segui un ciclo di uso degli strumenti in due turni

L'esempio definisce uno strumento get_weather, lascia che Claude pensi e richieda una chiamata allo strumento, quindi restituisce il risultato dello strumento insieme al turno dell'assistente ripetuto esattamente come ricevuto, blocco di pensiero incluso.

  1. Effettua la prima richiesta con uno strumento disponibile

    Invia una richiesta con il pensiero adattivo abilitato e lo strumento definito. A parte il parametro thinking, si tratta di una richiesta standard di uso degli strumenti:

    
    client = anthropic.Anthropic()
    
    weather_tool = {
        "name": "get_weather",
        "description": "Get current weather for a location",
        "input_schema": {
            "type": "object",
            "properties": {"location": {"type": "string", "description": "City name"}},
            "required": ["location"],
        },
    }
    
    # Prima richiesta - Claude risponde con il pensiero e una richiesta di strumento
    response = client.messages.create(
        model="claude-opus-4-8",
        max_tokens=16000,
        thinking={"type": "adaptive"},
        tools=[weather_tool],
        messages=[{"role": "user", "content": "What's the weather in Paris?"}],
    )
    print(response)
  2. Cattura l'array content da restituire

    Dovresti vedere blocchi thinking, text e tool_use nel contenuto della risposta in un'esecuzione in cui Claude ha scelto di pensare (per richieste più semplici, la modalità adattiva potrebbe saltare il blocco di pensiero). Mantieni intatto questo array content: il passaggio successivo lo rimanda indietro alla lettera.

    Output
    {
      "content": [
        {
          "type": "thinking",
          "thinking": "The user wants to know the current weather in Paris. I have access to a function `get_weather`...",
          "signature": "BDaL4VrbR2Oj0hO4XpJxT28J5T...."
        },
        {
          "type": "text",
          "text": "I can help you get the current weather information for Paris. Let me check that for you"
        },
        {
          "type": "tool_use",
          "id": "toolu_01CswdEQBMshySk6Y9DFKrfq",
          "name": "get_weather",
          "input": {
            "location": "Paris"
          }
        }
      ]
    }
  3. Restituisci il risultato dello strumento, ripetendo il turno dell'assistente alla lettera

    Esegui lo strumento dal tuo lato, quindi invia una seconda richiesta che aggiunge due messaggi alla conversazione. Il primo è il contenuto dell'assistente restituito esattamente come ricevuto, in modo che il blocco di pensiero rimanga invariato accanto al blocco tool_use. Il secondo è un messaggio utente che contiene il tool_result.

    Ogni esempio è uno script autonomo: ripete la prima richiesta, quindi invia immediatamente il seguito usando la risposta appena ricevuta.

    
    client = anthropic.Anthropic()
    weather_tool = {
        "name": "get_weather",
        "description": "Get current weather for a location",
        "input_schema": {
            "type": "object",
            "properties": {"location": {"type": "string", "description": "City name"}},
            "required": ["location"],
        },
    }
    response = client.messages.create(
        model="claude-opus-4-8",
        max_tokens=16000,
        thinking={"type": "adaptive"},
        tools=[weather_tool],
        messages=[{"role": "user", "content": "What's the weather in Paris?"}],
    )
    # Estrai il blocco tool_use per ottenere il suo ID per il tool_result
    tool_use_block = next(block for block in response.content if block.type == "tool_use")
    
    # Chiama la tua vera API meteo, qui andrebbe la tua chiamata API effettiva
    # Facciamo finta che questo sia ciò che riceviamo
    weather_data = {"temperature": 88}
    
    # Seconda richiesta - Includi il turno dell'assistente e il tool_result
    continuation = client.messages.create(
        model="claude-opus-4-8",
        max_tokens=16000,
        thinking={"type": "adaptive"},
        tools=[weather_tool],
        messages=[
            {"role": "user", "content": "What's the weather in Paris?"},
            # Ripeti il contenuto dell'assistente esattamente come ricevuto. Quando un blocco
            # thinking è presente, deve accompagnare il blocco tool_use.
            {"role": "assistant", "content": response.content},
            {
                "role": "user",
                "content": [
                    {
                        "type": "tool_result",
                        "tool_use_id": tool_use_block.id,
                        "content": f"Current temperature: {weather_data['temperature']}°F",
                    }
                ],
            },
        ],
    )
    print(continuation)
  4. Leggi la risposta finale

    Dovresti vedere Claude completare il turno con del testo. Poiché il pensiero interleaved è automatico in modalità adattiva, la continuazione può anche aprirsi con un nuovo blocco di pensiero prima del testo finale:

    Output
    {
      "content": [
        {
          "type": "text",
          "text": "Currently in Paris, the temperature is 88°F (31°C)"
        }
      ]
    }

Come il pensiero interleaved modifica il flusso

Il "interleaved thinking" (pensiero interleaved) consente a Claude di pensare tra una chiamata a uno strumento e l'altra, ragionando su ciascun risultato prima di agire di conseguenza. Il concetto e la disponibilità per modello sono trattati in Pensiero interleaved nella pagina Pensiero; l'interleaving modifica dove compaiono i blocchi di pensiero, non se le chiamate agli strumenti possano concatenarsi. Il confronto seguente mostra cosa cambia con il pensiero interleaved in un flusso di lavoro con due strumenti:

Prossimi passi

La panoramica: attiva il pensiero, leggi l'output del pensiero e consulta le regole complete per uso degli strumenti, cache e streaming.

Orienta quanto spesso e quanto a fondo Claude pensa con i livelli di effort e le indicazioni basate sui prompt.

Budget di pensiero manuali sui modelli meno recenti: funzionamento di budget_tokens e migrazione al pensiero adattivo.

Was this page helpful?