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

Гарантия строгого соответствия генерируемого JSON заданной схеме с использованием управляемого декодирования токенов.

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

Управляемое декодирование (Constrained Decoding)

Шлюз преобразует переданную JSON Schema в грамматику состояний. На каждом шаге генерации веса логитов корректируются так, чтобы модель физически не могла сгенерировать токен, нарушающий правила схемы.

Ключевые технические возможности

  • 100% валидный JSON: Ответ всегда парсится стандартными функциями json.loads() или JSON.parse() без исключений.
  • Соблюдение типов полей: Числа остаются числами, массивы массивами, а обязательные ключи всегда присутствуют в ответе.
  • Ускорение работы пайплайнов: Отсутствие необходимости в повторных запросах (retry) из-за битых скобок экономит до 30% бюджета.
  • Совместимость с Pydantic и Zod: Возможность прямой передачи схем валидации популярных библиотек бэкенда.

Пример интеграции в коде

Ниже представлен базовый пример отправки запроса с использованием стандартного клиента. Убедитесь, что ваш токен создан в разделе Ключи управления API:


import OpenAI from "openai";

// Инициализация стандартного SDK с базовым URL Api Router
const client = new OpenAI({
  baseURL: "https://api-router.velar.plus/v1",
  apiKey: process.env.API_ROUTER_KEY, // Ваш ключ от сервиса
});

async function run() {
  const response = await client.chat.completions.create({
    model: "anthropic/claude-sonnet", // Семейство модели без жесткой привязки к устаревающим номерам
    messages: [
      { role: "system", content: "Вы профессиональный инженер-архитектор." },
      { role: "user", content: "Как настроить надежную маршрутизацию запросов?" }
    ],
    temperature: 0.2,
  });

  console.log("Ответ модели:", response.choices[0].message.content);
}

run();
  

Связанные разделы документации

Для глубокого погружения в тему изучите следующие материалы: