Claude Platform Docs
MensagensPensamento

Pensamento em fluxos de trabalho com ferramentas e múltiplos turnos

Percorra um ciclo completo de uso de ferramentas em dois turnos que preserva corretamente os blocos de pensamento e veja como o pensamento intercalado altera o fluxo.

Esta página percorre um ciclo completo de "tool use" (uso de ferramentas) em dois turnos com o pensamento ativado: Claude pensa, solicita uma chamada de ferramenta, recebe o resultado e conclui sua resposta, com os blocos de pensamento tratados corretamente em cada etapa. As regras completas estão na página Pensamento, em Pensamento com uso de ferramentas e Preservando blocos de pensamento; esta página mostra essas regras aplicadas em código executável.

As regras que este passo a passo aplica

Cada link leva à declaração completa na página Pensamento:

Os exemplos usam pensamento adaptativo; em modelos que suportam apenas pensamento estendido, substitua por thinking: {type: "enabled", budget_tokens: N}. As regras do ciclo são idênticas.

Percorra um ciclo de uso de ferramentas em dois turnos

O exemplo define uma ferramenta get_weather, permite que Claude pense e solicite uma chamada de ferramenta e, em seguida, retorna o resultado da ferramenta junto com o turno do assistente ecoado exatamente como recebido, incluindo o bloco de pensamento.

  1. Faça a primeira requisição com uma ferramenta disponível

    Envie uma requisição com o pensamento adaptativo ativado e a ferramenta definida. Além do parâmetro thinking, esta é uma requisição padrão de uso de ferramentas:

    
    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"],
        },
    }
    
    # Primeira requisição - Claude responde com pensamento e solicitação de ferramenta
    response = client.messages.create(
        model="claude-opus-5-5",
        max_tokens=16000,
        thinking={"type": "adaptive"},
        tools=[weather_tool],
        messages=[{"role": "user", "content": "What's the weather in Paris?"}],
    )
    print(response)
  2. Capture o array de conteúdo para ecoar de volta

    Você deverá ver blocos thinking e tool_use no conteúdo da resposta em uma execução na qual Claude optou por pensar (em requisições mais simples, o modo adaptativo pode pular o bloco de pensamento). Uma nota que Claude escreve antes da chamada de ferramenta volta como um bloco text ou, em modelos que escrevem atualizações de progresso, como outro bloco thinking. Mantenha este array de conteúdo intacto: a próxima etapa o envia de volta literalmente.

    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": "tool_use",
          "id": "toolu_01CswdEQBMshySk6Y9DFKrfq",
          "name": "get_weather",
          "input": {
            "location": "Paris"
          }
        }
      ]
    }
  3. Retorne o resultado da ferramenta, ecoando o turno do assistente literalmente

    Execute a ferramenta do seu lado e, em seguida, envie uma segunda requisição que acrescenta duas mensagens à conversa. A primeira é o conteúdo do assistente ecoado de volta exatamente como recebido, de modo que o bloco de pensamento permaneça inalterado ao lado do bloco tool_use. A segunda é uma mensagem do usuário contendo o tool_result.

    Cada exemplo é um script autocontido: ele repete a primeira requisição e, em seguida, envia imediatamente a continuação usando a resposta que acabou de receber.

    
    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-5-5",
        max_tokens=16000,
        thinking={"type": "adaptive"},
        tools=[weather_tool],
        messages=[{"role": "user", "content": "What's the weather in Paris?"}],
    )
    # Extrai o bloco tool_use para obter seu ID para o tool_result
    tool_use_block = next(block for block in response.content if block.type == "tool_use")
    
    # Chame sua API de clima real; aqui é onde sua chamada de API real ficaria
    # Vamos fingir que isto é o que recebemos de volta
    weather_data = {"temperature": 88}
    
    # Segunda requisição - Inclua o turno do assistente e o tool_result
    continuation = client.messages.create(
        model="claude-opus-5-5",
        max_tokens=16000,
        thinking={"type": "adaptive"},
        tools=[weather_tool],
        messages=[
            {"role": "user", "content": "What's the weather in Paris?"},
            # Repita o conteúdo do assistente exatamente como recebido. Quando um bloco
            # de pensamento estiver presente, ele deve acompanhar o bloco 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. Leia a resposta final

    Você deverá ver Claude concluir o turno com texto. Como o "interleaved thinking" (pensamento intercalado) é automático no modo adaptativo, a continuação também pode começar com um novo bloco de pensamento antes do texto final:

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

Como o pensamento intercalado altera o fluxo

O pensamento intercalado permite que Claude pense entre chamadas de ferramentas, raciocinando sobre cada resultado de ferramenta antes de agir com base nele. O conceito e a disponibilidade por modelo são abordados em Pensamento intercalado na página Pensamento; a intercalação altera onde os blocos de pensamento aparecem, não se as chamadas de ferramentas podem ser encadeadas. A comparação a seguir mostra o que o pensamento intercalado altera em um fluxo de trabalho com duas ferramentas:

Próximos passos

A visão geral: ative o pensamento, leia a saída do pensamento e revise as regras completas para uso de ferramentas, cache e streaming.

Direcione com que frequência e com que profundidade Claude pensa usando níveis de esforço e orientação baseada em prompt.

Orçamentos manuais de pensamento em modelos mais antigos: mecânica do budget_tokens e migração para o adaptativo.

Was this page helpful?