Claude Platform Docs
СообщенияРазмышления

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

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

На этой странице разбирается полный двухходовой цикл «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-5-5",
        max_tokens=16000,
        thinking={"type": "adaptive"},
        tools=[weather_tool],
        messages=[{"role": "user", "content": "What's the weather in Paris?"}],
    )
    print(response)
  2. Сохраните массив content для обратной отправки

    В запуске, где Claude решил поразмышлять, вы должны увидеть в содержимом ответа блоки thinking и tool_use (на более простых запросах адаптивный режим может пропустить блок размышлений). Заметка, которую Claude пишет перед вызовом инструмента, возвращается в виде блока text или, на моделях, которые пишут обновления о ходе работы, в виде ещё одного блока thinking. Сохраните этот массив 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": "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-5-5",
        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-5-5",
        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?