Установка strict: true в определении инструмента гарантирует, что входные данные инструментов Claude соответствуют вашей JSON Schema, ограничивая выборку токенов модели только валидными по схеме выходными данными (этот метод называется «grammar-constrained sampling» (грамматически ограниченная выборка)). На этой странице рассматривается, почему строгий режим важен для агентов, как его включить и каковы распространённые сценарии использования. Поддерживаемое подмножество JSON Schema описано в разделе Ограничения JSON Schema. Рекомендации по нестрогим схемам см. в разделе Определение инструментов.
Строгое использование инструментов валидирует параметры инструментов, гарантируя, что 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-4-8",
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 всегда валидно.
Строгое использование инструментов компилирует определения 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?