PlusVibe AIPlusVibeAI

Структурированный вывод (Structured Outputs)

Параметр response_format заставляет модель вернуть корректный JSON. Поддерживается двумя режимами.

Режим json_object

Модель гарантирует, что вывод является валидным JSON. Структуру вы определяете в системном промпте.

curl https://plusvibeapi.ru/v1/chat/completions \
  -H "Authorization: Bearer $PLUSVIBE_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-5.5",
    "response_format": { "type": "json_object" },
    "messages": [
      {"role": "system", "content": "Ответь JSON с полями: name (string), score (number)."},
      {"role": "user", "content": "Оцени ответ: очень хорошо"}
    ]
  }'

Режим json_schema

Строгое соответствие JSON Schema — модель заполняет именно указанные поля. Поддерживается моделями GPT-5.x и совместимыми.

curl https://plusvibeapi.ru/v1/chat/completions \
  -H "Authorization: Bearer $PLUSVIBE_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-5.5",
    "response_format": {
      "type": "json_schema",
      "json_schema": {
        "name": "review",
        "strict": true,
        "schema": {
          "type": "object",
          "properties": {
            "name": { "type": "string" },
            "score": { "type": "number", "minimum": 1, "maximum": 10 },
            "summary": { "type": "string" }
          },
          "required": ["name", "score", "summary"],
          "additionalProperties": false
        }
      }
    },
    "messages": [
      {"role": "user", "content": "Оцени продукт: быстро доставили, упаковка аккуратная"}
    ]
  }'
Если модель не поддерживает json_schema, шлюз автоматически передаёт запрос как есть. Для надёжного парсинга используйте GPT-5.x — они поддерживают strict-режим.

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

{
  "id": "chatcmpl-...",
  "choices": [{
    "message": {
      "role": "assistant",
      "content": "{\"name\":\"товар X\",\"score\":9,\"summary\":\"Быстро и удобно\"}"
    },
    "finish_reason": "stop"
  }],
  "usage": { "prompt_tokens": 42, "completion_tokens": 18, "total_tokens": 60 }
}