Структурированный вывод
JSON-режим, JSON Schema и проверка результата
Для ответа в JSON используйте response_format в Chat Completions
Поддержка строгой схемы зависит от модели
JSON Schema
curl https://api.getapi.ru/v1/chat/completions \
-H "Authorization: Bearer $GETAPI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4.1-mini",
"messages": [{"role": "user", "content": "Извлеки имя и возраст: Анна, 30 лет"}],
"max_tokens": 256,
"response_format": {
"type": "json_schema",
"json_schema": {
"name": "person",
"strict": true,
"schema": {
"type": "object",
"properties": {
"name": {"type": "string"},
"age": {"type": "integer"}
},
"required": ["name", "age"],
"additionalProperties": false
}
}
}
}'Содержимое choices[0].message.content в этом примере
{"name":"Анна","age":30}Параметры схемы
| Поле | Тип | Описание |
|---|---|---|
type | string | json_schema |
json_schema.name | string | Имя схемы |
json_schema.strict | boolean | Строгий режим для совместимой модели |
json_schema.schema | object | JSON Schema результата |
Используйте только поддерживаемые моделью конструкции схемы
Наличие поля strict в запросе не доказывает, что выбранная модель применяет этот режим
JSON-режим
Если достаточно корректного JSON без фиксированной схемы, используйте
{"response_format":{"type":"json_object"}}В инструкции явно попросите JSON Этот режим не задаёт обязательные поля, типы и ограничения предметной области
Обработка результата
- Проверьте HTTP-статус и наличие ошибки
- Обработайте отказ модели, пустой текст и завершение по лимиту
- Разберите строку
contentкак JSON - Проверьте объект по своей схеме
- Примените бизнес-правила, например допустимый диапазон возраста
Порядок ключей и пробелы не являются частью контракта Не извлекайте JSON по фиксированным позициям строки
Совместимость
Поддержка json_schema, доступных конструкций и строгого режима зависит от модели и маршрута
Если параметр не поддерживается или игнорируется, используйте инструмент со схемой аргументов и проверяйте результат в приложении
Даже при совместимой модели обрабатывайте неполный ответ У моделей с рассуждениями бюджет вывода должен учитывать и рассуждения, и итоговый объект