Проблема свободного текста
Ты парсишь отзывы интернет-магазина и хочешь из каждого вытащить оценку и тег проблемы. Если просто попросить модель «верни JSON», она иногда добавит «Конечно, вот результат:» или обернёт ответ в ```. Парсить такое регулярками — боль и баги.
Решение: схема в запросе
Передай JSON Schema в output_config.format, и API гарантирует, что ответ ей соответствует.
{
"model": "claude-opus-4-8",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "Отзыв: доставка три дня, телефон царапнут"}
],
"output_config": {
"format": {
"type": "json_schema",
"schema": {
"type": "object",
"properties": {
"rating": {"type": "integer"},
"issue": {"type": "string"}
},
"required": ["rating", "issue"],
"additionalProperties": false
}
}
}
}
output_config.format. Старый output_format устарел — не используй его.В Python удобно через parse()
Метод client.messages.parse() сам валидирует ответ по схеме — никаких регулярок.
from anthropic import Anthropic
client = Anthropic()
schema = {
"type": "object",
"properties": {"rating": {"type": "integer"}, "issue": {"type": "string"}},
"required": ["rating", "issue"],
"additionalProperties": false,
}
resp = client.messages.parse(
model="claude-opus-4-8",
max_tokens=1024,
messages=[{"role": "user", "content": "Отзыв: всё супер, привезли за день"}],
output_config={"format": {"type": "json_schema", "schema": schema}},
)
stop_reason: "refusal" или "max_tokens", ответ может не соответствовать схеме — проверь это перед разбором.