Chat Completions
/v1/chat/completions — OpenAI-совместимый эндпоинт чатов. Параметры model, messages, stream, temperature. Потоковая передача SSE. Пример запроса и ответа на curl, Python (openai) и Node.
OpenAI-совместимый эндпоинт чатов. Работает с любым OpenAI SDK — поменяйте только base_url на https://plusvibeapi.ru/v1.
Параметры тела
PlusVibe реализует совместимый контракт Chat Completions, а не побайтовый passthrough: проверяет доступ, разрешает публичный идентификатор модели, применяет ограничения и может нормализовать поддерживаемые поля запроса. Ответы и ошибки также нормализуются и не гарантируют upstream-специфичные поля или заголовки. Для большинства задач достаточно первых трёх — model, messages и stream.
| Параметр | Тип | Описание |
|---|---|---|
modelобяз. | string | Имя модели из каталога, например gpt-5.6-luna или claude-opus-4.8. |
messagesобяз. | array | Массив сообщений { role, content }. Роли: system, user, assistant. |
stream | boolean | true — потоковая передача ответа через SSE. |
max_tokens | integer | Максимум токенов в ответе. Рекомендуем ставить не меньше 64: при слишком маленьком значении (например ≤ 16) модель может упереться в лимит (finish_reason: length) ещё до первого видимого токена и вернуть пустой ответ. Если нужен короткий результат — просите об этом в промпте, а max_tokens держите с запасом. |
temperature | number | Случайность вывода, 0–2. По умолчанию 1. |
| Параметр | Тип | Описание |
|---|---|---|
top_p | numberзависит от модели | Nucleus sampling (0–1). Альтернатива temperature; менять оба одновременно не рекомендуется. |
top_k | numberClaude | Top-K sampling. Только Anthropic-модели. |
seed | integerGPT | Фиксирует результат для воспроизводимости. GPT-серия; у других игнорируется. |
stop | string | arrayзависит от модели | Стоп-последовательность: одна строка или список до 4 строк. |
frequency_penalty | numberGPT · Claude | Штраф за повтор токенов по частоте (-2 до 2). |
presence_penalty | numberGPT · Claude | Штраф за уже встреченные токены (-2 до 2). |
logprobs | booleanGPT | true — вернуть log-вероятности токенов. |
top_logprobs | integerGPT | Число топ-вариантов логпробов на токен (1–20). Требует logprobs: true. |
logit_bias | objectGPT | Токен-ID → смещение логита (-100 до 100). |
user | stringзависит от модели | Идентификатор конечного пользователя (передаётся апстриму для rate-limit трекинга). |
response_format | objectGPT · Claude | Принудительный вывод в JSON. Подробнее → |
tools / tool_choice | array / stringGPT · Claude | Вызов функций. Подробнее → |
Бейджи в столбце «Тип»: GPT — только GPT-серия, Claude — только Anthropic-модели, GPT · Claude — обе семьи, зависит от модели — проверьте в документации конкретной модели.
Поддержка параметров по вариантам маршрута
Одна и та же модель может быть обслужена разными маршрутами (вариантами :1, :2, …). Маршруты отличаются ценой, скоростью и набором поддерживаемых параметров.
| Параметр | Тип | Описание |
|---|---|---|
Вариант по умолчанию (:1) | базовый | Полный набор OpenAI-параметров: temperature, top_p, seed, stop, penalties, logprobs, tools, response_format, streaming с usage-чанком. |
Subscription-варианты (:2, :3…) | расширенный | Набор параметров совпадает с базовым, но маршрут использует другую инфраструктуру. Отдельные параметры могут не поддерживаться — укажем в примечании к варианту. |
OpenRouter-варианты (or-*) | or-* | Проксирует запрос через OpenRouter. Поддержка параметров зависит от конкретного провайдера на стороне OR. tool_choice: "required" и некоторые sampling-параметры могут не работать. |
:1 (по умолчанию) или проверьте поддержку в описании конкретного варианта на странице Модели.Пример запроса
curl https://plusvibeapi.ru/v1/chat/completions \
-H "Authorization: Bearer $PLUSVIBE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-5.6-luna",
"messages": [
{"role": "user", "content": "Привет! Кто ты?"}
]
}'Пример ответа
{
"id": "chatcmpl-...",
"object": "chat.completion",
"model": "gpt-5.6-luna",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Привет! Я ассистент, доступный через PlusVibe API."
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 12,
"completion_tokens": 14,
"total_tokens": 26
}
}Потоковая передача (SSE)
С "stream": true ответ приходит как поток Server-Sent Events: события data: … с дельтами, завершается data: [DONE].
curl https://plusvibeapi.ru/v1/chat/completions \
-H "Authorization: Bearer $PLUSVIBE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-5.6-luna",
"stream": true,
"messages": [{"role": "user", "content": "Считай до трёх"}]
}'Финальный чанк с usage
Последний чанк перед data: [DONE] содержит пустой choices: [] и поле usage со статистикой токенов. Используйте его для расчётов — не суммируйте дельты вручную.
data: {"id":"chatcmpl-...","choices":[],"usage":{"prompt_tokens":42,"completion_tokens":87,"total_tokens":129},"model":"gpt-5.6-luna","object":"chat.completion.chunk"}
data: [DONE]Стоимость запроса возвращается в заголовке x-pv-cost-rub ответа. Для истории запросов — см. GET /v1/generations.
Совместимость
Эндпоинт совместим с OpenAI SDK (Python, Node и др.), Codex CLI и Claude Code. Claude Code работает через /v1/messages с заголовком x-api-key — см. Messages и Responses.