Один ключ для всех AI-моделейСоздать аккаунтОплата в рублях, без VPN

ДокументацияСтруктурированные ответы

Структурированные ответы

Structured Outputs заставляет модель возвращать строго валидный JSON по вашей схеме. Это удобно для парсинга ответов в коде: извлечение данных, классификация, формы, интеграции.

Zenvy передаёт параметр response_format в upstream-провайдер без изменений — формат полностью совместим с OpenAI.

JSON mode

Простой режим: модель отвечает валидным JSON, структуру задаёте промптом.

~/zenvy · json
{
  "model": "gpt-4o",
  "messages": [
    { "role": "user", "content": "Извлеки имя и возраст: «Меня зовут Анна, мне 27 лет». Ответь JSON с полями name и age." }
  ],
  "response_format": { "type": "json_object" }
}

JSON Schema

Строгий режим: модель гарантированно следует JSON-схеме.

~/zenvy · json
{
  "model": "gpt-4o",
  "messages": [
    { "role": "user", "content": "Извлеки данные: «Меня зовут Анна, мне 27 лет»" }
  ],
  "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
      }
    }
  }
}

Пример с SDK

~/zenvy · JavaScript
import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.ZENVY_API_KEY,
  baseURL: "https://api.zenvy.su/v1"
});

const completion = await client.chat.completions.create({
  model: "gpt-4o",
  messages: [
    { role: "user", content: "Извлеки данные: «Меня зовут Анна, мне 27 лет»" }
  ],
  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
      }
    }
  }
});

const person = JSON.parse(completion.choices[0].message.content);
console.log(person.name, person.age);

Пример ответа

~/zenvy · json
{
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "{\"name\": \"Анна\", \"age\": 27}"
      },
      "finish_reason": "stop"
    }
  ]
}
Какие модели поддерживают

Structured Outputs работает у моделей OpenAI (GPT-4o и новее), Gemini и ряда других. Если модель не поддерживает строгий режим, используйте json_object + описание структуры в промпте.

Важно

Даже в strict-режиме проверяйте finish_reason: при обрыве по length JSON может быть неполным. Указывайте достаточный max_tokens.

Подробнее о формате запросов: Генерация текста.