Ответ модели в формате OpenAI
POST/v1/chat/completions
Совместим с OpenAI Chat Completions: штатный пакет openai работает, если указать base_url="https://llm.vcpay.ru/v1". Модель выбирается полем model — именем из каталога.
С "stream": true ответ приходит событиями SSE по мере генерации, последним событием — data: [DONE].
Здесь перечислены поля, работу которых мы проверяем. Остальные поля формата OpenAI модель может принять, но их поведение зависит от модели и не входит в наш контракт.
Тело запроса
application/jsonmodel
string
*Имя модели из каталога, например
claude-sonnet-5.Пример:
claude-sonnet-5messages[]
array of objects
*Диалог по порядку, от первой реплики к последней.
role
string
*Кто говорит.
system — инструкция модели.Возможные значения
content
string
*Текст реплики.
max_tokens
integer
Потолок токенов ответа. Размышления модели входят в него.
Диапазон:
>= 1stream
boolean
Отдавать ответ событиями SSE по мере генерации.
По умолчанию:
falseОтвет
200OK
Ответ модели. При
"stream": true — поток событий text/event-stream, каждое событие — фрагмент ответа.id
string
*Идентификатор ответа.
object
string
*Всегда
chat.completion.created
integer
*Момент ответа, Unix-время в секундах.
model
string
*Модель, которая ответила. Может прийти полным именем вендора, например
anthropic/claude-haiku-4.5.choices[]
array of objects
*Варианты ответа. Без особых настроек — один.
index
integer
*Номер варианта.
message
object
*Реплика модели.
role
string
*Всегда
assistant.content
string
*Текст ответа.
finish_reason
string
*Почему ответ закончился.
stop — модель договорила, length — упёрлись в max_tokens.usage
object
*Токены запроса. По ним считается расход.
prompt_tokens
integer
*Токенов на входе.
completion_tokens
integer
*Токенов на выходе, включая размышления модели. У моделей с размышлениями их заметно больше, чем видно по тексту ответа.
total_tokens
integer
*Сумма входа и выхода.