О том, как «zero data retention» (нулевое хранение данных), или ZDR, применяется к этой функции, см. API и хранение данных.
Эта страница проводит вас через полный двухходовой цикл использования инструментов с включённым мышлением: Claude думает, запрашивает вызов инструмента, получает результат и завершает свой ответ, при этом блоки мышления корректно обрабатываются на каждом шаге. Полные правила находятся на странице Мышление, в разделах Мышление с использованием инструментов и Сохранение блоков мышления; эта страница показывает применение этих правил в исполняемом коде.
Каждая ссылка ведёт к полной формулировке на странице «Мышление»:
auto или none в ручном режиме: варианты tool_choice, принудительно вызывающие использование инструментов, возвращают ошибку при ручном расширенном мышлении (thinking: {type: "enabled"}); адаптивное мышление поддерживает принудительное использование инструментов.redacted_thinking вызывает ошибку 400.В примерах используется адаптивное мышление; на моделях, поддерживающих только расширенное мышление, подставьте thinking: {type: "enabled", budget_tokens: N}. Правила цикла идентичны.
Пример определяет инструмент get_weather, позволяет Claude подумать и запросить вызов инструмента, затем возвращает результат инструмента вместе с ходом ассистента, переданным точно в том виде, в каком он был получен, включая блок мышления.
Сделайте первый запрос с доступным инструментом
Отправьте запрос с включённым адаптивным мышлением и определённым инструментом. За исключением параметра 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)Сохраните массив content для обратной передачи
Вы должны увидеть блоки thinking, text и tool_use в содержимом ответа при запуске, в котором Claude решил подумать (при более простых запросах адаптивный режим может пропустить блок мышления). Сохраните этот массив content нетронутым: на следующем шаге он отправляется обратно дословно.
Чтобы увидеть текст мышления, как в этом выводе, добавьте display: "summarized" в запрос. На моделях, где отображение по умолчанию опущено, включая claude-opus-4-8, поле thinking в противном случае возвращается как пустая строка, и заполнено только поле signature. В любом случае возвращайте массив content обратно без изменений; см. Управление отображением мышления.
{
"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"
}
}
]
}Верните результат инструмента, передав ход ассистента дословно
Выполните инструмент на своей стороне, затем отправьте второй запрос, который добавляет два сообщения к диалогу. Первое — это содержимое ассистента, возвращённое точно в том виде, в каком оно было получено, чтобы блок мышления остался неизменным рядом с блоком 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?"}],
)
# Извлекаем блок использования инструментов, чтобы получить его ID для результата инструмента
tool_use_block = next(block for block in response.content if block.type == "tool_use")
# Вызовите ваш реальный API погоды — здесь должен быть ваш реальный вызов API
# Предположим, что мы получили вот такой ответ
weather_data = {"temperature": 88}
# Второй запрос — включаем ход ассистента и результат инструмента
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?"},
# Возвращаем содержимое ассистента в точности как получено. Если присутствует
# блок мышления, он должен сопровождать блок 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)Прочитайте финальный ответ
Вы должны увидеть, как Claude завершает ход текстом. Поскольку чередующееся мышление в адаптивном режиме работает автоматически, продолжение также может начинаться с нового блока мышления перед финальным текстом:
{
"content": [
{
"type": "text",
"text": "Currently in Paris, the temperature is 88°F (31°C)"
}
]
}Чередующееся мышление позволяет Claude думать между вызовами инструментов, рассуждая о каждом результате инструмента перед тем, как действовать на его основе. Концепция и доступность по моделям описаны в разделе Чередующееся мышление на странице «Мышление»; чередование меняет то, где появляются блоки мышления, а не возможность цепочки вызовов инструментов. Следующее сравнение показывает, что меняет чередующееся мышление в рабочем процессе с двумя инструментами:
Обзор: включите мышление, читайте вывод мышления и ознакомьтесь с полными правилами для использования инструментов, кэширования и потоковой передачи.
Управляйте тем, как часто и насколько глубоко Claude думает, с помощью уровней усилий и указаний в подсказках.
Ручные бюджеты мышления на старых моделях: механика budget_tokens и миграция на адаптивный режим.
Was this page helpful?