Строгое использование инструментов
Обеспечьте соответствие входных данных инструментов Claude схеме JSON Schema с помощью сэмплирования с грамматическими ограничениями.
Установка strict: true в определении инструмента гарантирует, что входные данные инструментов Claude соответствуют вашей JSON Schema, ограничивая сэмплирование токенов модели только выходными данными, допустимыми по схеме (техника, называемая «grammar-constrained sampling» (сэмплирование с грамматическими ограничениями)). На этой странице рассказывается, почему строгий режим важен для агентов, как его включить и каковы типичные сценарии использования. Поддерживаемое подмножество JSON Schema описано в разделе Ограничения JSON Schema. Рекомендации по нестрогим схемам см. в разделе Определение инструментов.
«Strict tool use» (строгое использование инструментов) проверяет параметры инструментов, гарантируя, что Claude вызывает ваши функции с аргументами правильных типов. Используйте строгое использование инструментов, когда вам нужно:
- Проверять параметры инструментов
- Создавать агентные рабочие процессы
- Обеспечивать типобезопасные вызовы функций
- Работать со сложными инструментами с вложенными свойствами
Почему строгое использование инструментов важно для агентов
Создание надёжных агентных систем требует гарантированного соответствия схеме. Без строгого режима Claude может возвращать несовместимые типы ("2" вместо 2) или пропускать обязательные поля, что нарушает работу ваших функций и приводит к ошибкам во время выполнения.
Строгое использование инструментов гарантирует типобезопасные параметры:
- Функции каждый раз получают аргументы правильных типов
- Нет необходимости проверять и повторять вызовы инструментов
- Готовые к промышленной эксплуатации агенты, стабильно работающие в масштабе
Например, предположим, что системе бронирования требуется passengers: int. Без строгого режима Claude может передать passengers: "two" или passengers: "2". С strict: true ответ всегда содержит passengers: 2.
Быстрый старт
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-5",
max_tokens=1024,
messages=[{"role": "user", "content": "What's the weather like in San Francisco?"}],
tools=[
{
"name": "get_weather",
"description": "Get the current weather in a given location",
"strict": True, # Enable strict mode
"input_schema": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, e.g. San Francisco, CA",
},
"unit": {
"type": "string",
"enum": ["celsius", "fahrenheit"],
"description": "The unit of temperature, either 'celsius' or 'fahrenheit'",
},
},
"required": ["location"],
"additionalProperties": False,
},
}
],
)
print(response.content)Формат ответа: блоки использования инструментов с проверенными входными данными в response.content[x].input
{
"type": "tool_use",
"name": "get_weather",
"input": {
"location": "San Francisco, CA"
}
}Гарантии:
inputинструмента строго соответствуетinput_schemanameинструмента всегда допустимо (из предоставленных инструментов или серверных инструментов)
Как это работает
Определите схему вашего инструмента
Создайте JSON-схему для
input_schemaвашего инструмента. Схема использует стандартный формат JSON Schema с некоторыми ограничениями (см. Ограничения JSON Schema).Добавьте strict: true
Установите
"strict": trueкак свойство верхнего уровня в определении вашего инструмента, наряду сname,descriptionиinput_schema.Обрабатывайте вызовы инструментов
Когда Claude использует инструмент, поле
inputв блокеtool_useстрого соответствует вашейinput_schema, аnameвсегда допустимо.
Записи наборов инструментов computer use (использование компьютера) и browser use (использование браузера) (computer_toolset_20260801 и browser_toolset_20260801) не принимают strict: true; запрос, устанавливающий его для любой из этих записей, отклоняется.
Типичные сценарии использования
Убедитесь, что параметры инструментов точно соответствуют вашей схеме:
client = Anthropic()
response = client.messages.create(
model="claude-opus-5",
max_tokens=1024,
messages=[
{
"role": "user",
"content": "Search for flights to Tokyo departing June 1, 2026",
}
],
tools=[
{
"name": "search_flights",
"strict": True,
"input_schema": {
"type": "object",
"properties": {
"destination": {"type": "string"},
"departure_date": {"type": "string", "format": "date"},
"passengers": {
"type": "integer",
"enum": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
},
},
"required": ["destination", "departure_date"],
"additionalProperties": False,
},
}
],
)
print(response)Создавайте надёжные многошаговые агенты с гарантированными параметрами инструментов:
client = Anthropic()
response = client.messages.create(
model="claude-opus-5",
max_tokens=1024,
messages=[
{
"role": "user",
"content": "Help me plan a trip from New York to Paris for 2 people, departing June 1, 2026",
}
],
tools=[
{
"name": "search_flights",
"strict": True,
"input_schema": {
"type": "object",
"properties": {
"origin": {"type": "string"},
"destination": {"type": "string"},
"departure_date": {"type": "string", "format": "date"},
"travelers": {"type": "integer", "enum": [1, 2, 3, 4, 5, 6]},
},
"required": ["origin", "destination", "departure_date"],
"additionalProperties": False,
},
},
{
"name": "search_hotels",
"strict": True,
"input_schema": {
"type": "object",
"properties": {
"city": {"type": "string"},
"check_in": {"type": "string", "format": "date"},
"guests": {"type": "integer", "enum": [1, 2, 3, 4]},
},
"required": ["city", "check_in"],
"additionalProperties": False,
},
},
],
)
print(response)Хранение данных
Строгое использование инструментов компилирует определения input_schema инструментов в грамматики, используя тот же конвейер, что и структурированные выходные данные. Схемы инструментов временно кэшируются на срок до 24 часов с момента последнего использования. Подсказки и ответы не хранятся после возврата ответа API.
Строгое использование инструментов соответствует требованиям HIPAA, но защищённая медицинская информация (PHI) не должна включаться в определения схем инструментов. API кэширует скомпилированные схемы отдельно от содержимого сообщений, и на эти кэшированные схемы не распространяются те же меры защиты PHI, что и на подсказки и ответы. Не включайте PHI в имена свойств input_schema, значения enum, значения const или регулярные выражения pattern. PHI должна присутствовать только в содержимом сообщений (подсказках и ответах), где она защищена в соответствии с мерами безопасности HIPAA.
Сведения о соответствии требованиям ZDR и HIPAA для всех функций см. в разделе API и хранение данных.
Следующие шаги
Загружайте и читайте содержимое по конкретным URL-адресам, чтобы добавлять актуальный веб-контент в контекст Claude.
Кэшируйте определения инструментов между ходами, чтобы снизить стоимость и задержку.
Получайте проверенные JSON-ответы с помощью того же сэмплирования с грамматическими ограничениями.
Задавайте схемы инструментов, пишите эффективные описания и управляйте тем, когда Claude вызывает ваши инструменты.
Was this page helpful?