Структурированный вывод
Получайте JSON от модели через response_format — по JSON Schema или без схемы.
JSON по схеме
response_format с типом json_schema просит модель вернуть JSON, соответствующий вашей схеме. Роутер отправляет такой запрос только на маршруты с поддержкой структурированного вывода (возможность Структурированный вывод в каталоге); для модели без нее ответ — 400 «no route».
{
"model": "openai/gpt-4o-mini",
"messages": [{ "role": "user", "content": "Extract the city and the date: meet me in Kazan on 3 May." }],
"response_format": {
"type": "json_schema",
"json_schema": {
"name": "meeting",
"strict": true,
"schema": {
"type": "object",
"properties": { "city": { "type": "string" }, "date": { "type": "string" } },
"required": ["city", "date"],
"additionalProperties": false
}
}
}
}message.content в ответе — JSON-строка: разберите ее.
Любой валидный JSON
{"type": "json_object"} запрашивает валидный JSON без схемы. Роутер не проверяет, поддерживает ли это модель: укажите в промпте, что вам нужен JSON, и обрабатывайте ошибку разбора.
Советы
- Делайте схему компактной: она оплачивается как входные токены.
- Даже со
strictпроверяйте результат в коде; ответ, обрезанный поmax_tokens(finish_reason: "length"), — невалидный JSON.