Claude Platform Docs
MessagesPensamento

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-4-8",
        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, text 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). 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": "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. 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-4-8",
        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-4-8",
        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?