Claude Platform Docs
MessagesМышление

Мышление в рабочих процессах с инструментами и несколькими ходами

Пройдите полный двухходовой цикл использования инструментов, который корректно сохраняет блоки мышления, и посмотрите, как чередующееся мышление меняет поток.

На этой странице разбирается полный двухходовой цикл «tool use» (использование инструментов) с включённым мышлением: Claude думает, запрашивает вызов инструмента, получает результат и завершает свой ответ, при этом блоки мышления корректно обрабатываются на каждом шаге. Полные правила находятся на странице Мышление, в разделах Мышление с использованием инструментов и Сохранение блоков мышления; эта страница показывает применение этих правил в исполняемом коде.

Правила, применяемые в этом разборе

Каждая ссылка ведёт к полной формулировке на странице «Мышление»:

В примерах используется адаптивное мышление; на моделях, поддерживающих только расширенное мышление, подставьте thinking: {type: "enabled", budget_tokens: N}. Правила цикла идентичны.

Разбор двухходового цикла использования инструментов

В примере определяется инструмент get_weather, Claude получает возможность подумать и запросить вызов инструмента, а затем возвращается результат инструмента вместе с ходом ассистента, повторённым точно в том виде, в каком он был получен, включая блок мышления.

  1. Выполните первый запрос с доступным инструментом

    Отправьте запрос с включённым адаптивным мышлением и определённым инструментом. За исключением параметра thinking, это стандартный запрос на использование инструментов:

    
    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"],
        },
    }
    
    # Первый запрос — Claude отвечает мышлением и запросом инструмента
    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. Сохраните массив content для обратной отправки

    Вы должны увидеть блоки thinking, text и tool_use в содержимом ответа при запуске, в котором Claude решил подумать (на более простых запросах адаптивный режим может пропустить блок мышления). Сохраните этот массив content нетронутым: на следующем шаге он отправляется обратно дословно.

    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. Верните результат инструмента, дословно повторив ход ассистента

    Выполните инструмент на своей стороне, затем отправьте второй запрос, который добавляет к разговору два сообщения. Первое — это содержимое ассистента, повторённое точно в том виде, в каком оно получено, так что блок мышления остаётся неизменным рядом с блоком tool_use. Второе — пользовательское сообщение, содержащее tool_result.

    Каждый пример — это самодостаточный скрипт: он повторяет первый запрос, а затем сразу отправляет последующий, используя только что полученный ответ.

    
    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?"}],
    )
    # Извлекаем блок tool_use, чтобы получить его ID для tool_result
    tool_use_block = next(block for block in response.content if block.type == "tool_use")
    
    # Вызовите ваш реальный погодный API — здесь должен быть ваш фактический вызов API
    # Представим, что мы получили вот такой ответ
    weather_data = {"temperature": 88}
    
    # Второй запрос — включаем ход ассистента и 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?"},
            # Передаём содержимое ассистента точно в том виде, в каком получили. Если присутствует
            # блок thinking, он должен сопровождать блок 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. Прочитайте финальный ответ

    Вы должны увидеть, как Claude завершает ход текстом. Поскольку «interleaved thinking» (чередующееся мышление) в адаптивном режиме включается автоматически, продолжение также может начинаться с нового блока мышления перед финальным текстом:

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

Как чередующееся мышление меняет поток

Чередующееся мышление позволяет Claude думать между вызовами инструментов, рассуждая о каждом результате инструмента, прежде чем действовать на его основе. Концепция и доступность по моделям описаны в разделе Чередующееся мышление на странице «Мышление»; чередование меняет то, где появляются блоки мышления, а не то, могут ли вызовы инструментов выстраиваться в цепочку. Следующее сравнение показывает, что меняет чередующееся мышление в рабочем процессе с двумя инструментами:

Следующие шаги

Обзор: включите мышление, прочитайте вывод мышления и ознакомьтесь с полными правилами для использования инструментов, кэширования и потоковой передачи.

Управляйте тем, как часто и насколько глубоко думает Claude, с помощью уровней усилий и указаний в подсказках.

Ручные бюджеты мышления на старых моделях: механика budget_tokens и миграция на адаптивное мышление.

Was this page helpful?