Установка strict: true в определении инструмента использует выборку с ограничениями грамматики, чтобы гарантировать, что входные данные инструментов Claude соответствуют вашей JSON Schema. На этой странице рассматривается, почему строгий режим важен для агентов, как его включить и типичные варианты использования. Для поддерживаемого подмножества 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-7",
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 и сохранение данных.
Was this page helpful?