POST Chat Completions
Основной эндпоинт для генерации текста и диалогов
POST Chat Completions
Основной эндпоинт для генерации текста и диалогов. Поддерживает текстовые диалоги, мультимодальные запросы (текст + изображения + аудио + видео + файлы), вызов функций и потоковую передачу.
Возможности
- Агрегация провайдеров — автоматический выбор оптимального провайдера
- Биллинг в рублях — точный учёт стоимости
- Reasoning Tokens — поддержка моделей с рассуждениями
- Streaming — потоковая передача через SSE
- Tool Calling — вызов внешних функций
- Мультимодальность — обработка текста, изображений, аудио, видео и файлов
Параметры запроса
Обязательные
| Параметр | Тип | Описание |
|---|---|---|
model | string | ID модели из списка моделей |
Контент
| Параметр | Тип | Описание |
|---|---|---|
messages | array | Массив сообщений диалога (рекомендуется) |
prompt | string | Простой текстовый промпт (альтернатива messages) |
Параметры генерации
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
max_tokens | integer | Без лимита | Максимум токенов в ответе |
max_completion_tokens | integer | Без лимита | Альтернатива max_tokens |
temperature | float (0-2) | 1.0 | Температура (0=детерминированный, 2=креативный) |
top_p | float (0-1) | 1.0 | Nucleus sampling |
top_k | integer | — | Top-K sampling |
frequency_penalty | float (-2..2) | 0 | Штраф за повторение слов |
presence_penalty | float (-2..2) | 0 | Штраф за повторение токенов |
stop | string/array | — | Стоп-последовательности |
seed | integer | — | Seed для воспроизводимости |
Специальные возможности
| Параметр | Тип | Описание |
|---|---|---|
stream | boolean | Включить streaming (SSE) |
reasoning | object | Настройки reasoning tokens |
tools | array | Доступные функции для вызова |
tool_choice | string/object | Выбор инструмента: "none", "auto", "required" |
response_format | object | Формат ответа: text, json_object, json_schema, grammar |
web_search_options | object | Встроенный веб-поиск |
provider | object | Конфигурация роутинга по провайдерам |
plugins | array | Подключение плагинов |
modalities | array | Выходные модальности: "text", "image", "audio" |
audio | object | Конфигурация аудио-вывода (voice, format) |
user | string | Идентификатор конечного пользователя |
Структура сообщений
Базовый формат
{
"role": "user|assistant|system|developer|tool",
"content": "Текст сообщения"
}
Мультимодальные сообщения
{
"role": "user",
"content": [
{"type": "text", "text": "Что на этом изображении?"},
{"type": "image_url", "image_url": {"url": "https://example.com/image.jpg"}}
]
}
Другие типы контента
// Аудио вход
{"type": "input_audio", "input_audio": {"data": "base64...", "format": "mp3"}}
// Видео вход
{"type": "video_url", "video_url": {"url": "https://example.com/video.mp4"}}
// Файл
{"type": "file", "file": {"filename": "doc.pdf", "file_data": "data:application/pdf;base64,..."}}
Системные сообщения с кешированием
{
"role": "system",
"content": [
{
"type": "text",
"text": "Длинная системная инструкция...",
"cache_control": {"type": "ephemeral"}
}
]
}
Примеры
curl -X POST "https://api.usellm.ru/v1/chat/completions" \
-H "Authorization: Bearer <USELLM_API_KEY>" \
-H "Content-Type: application/json" \
-d '{
"model": "openai/gpt-6-astra",
"messages": [{"role": "user", "content": "Привет!"}]
}'
Ответ
Успешный ответ (200)
{
"id": "gen_581761234567890123",
"object": "chat.completion",
"created": 1677652288,
"model": "openai/gpt-6-astra",
"provider": "OpenAI",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Текст ответа"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 25,
"completion_tokens": 150,
"total_tokens": 175,
"cost_rub": 0.04131306,
"cost": 0.04131306,
"prompt_tokens_details": {
"cached_tokens": 0
},
"completion_tokens_details": {
"reasoning_tokens": 0
}
}
}
Streaming (SSE)
При stream: true ответ приходит в формате Server-Sent Events:
data: {"id":"gen_123","object":"chat.completion.chunk","created":1703001234,"model":"openai/gpt-6-astra","choices":[{"index":0,"delta":{"role":"assistant","content":"Привет"}}]}
data: {"id":"gen_123","object":"chat.completion.chunk","created":1703001234,"model":"openai/gpt-6-astra","choices":[{"index":0,"delta":{"content":" мир"}}]}
data: {"id":"gen_123","object":"chat.completion.chunk","created":1703001234,"model":"openai/gpt-6-astra","choices":[],"usage":{"prompt_tokens":10,"completion_tokens":20,"total_tokens":30,"cost_rub":0.015,"cost":0.015}}
data: [DONE]
Tool Calling
Определение функций
{
"tools": [{
"type": "function",
"function": {
"name": "get_weather",
"description": "Получить текущую погоду",
"parameters": {
"type": "object",
"properties": {
"city": {"type": "string"}
},
"required": ["city"]
}
}
}],
"tool_choice": "auto"
}
Ответ модели с вызовом функции
{
"tool_calls": [{
"id": "call_123",
"function": {"name": "get_weather", "arguments": "{\"city\": \"Москва\"}"}
}]
}
Response Format
JSON Schema (структурированный вывод)
{
"response_format": {
"type": "json_schema",
"json_schema": {
"name": "my_schema",
"schema": {
"type": "object",
"properties": {
"answer": {"type": "string"},
"confidence": {"type": "number"}
}
},
"strict": true
}
}
}
Поддерживаемые типы: text, json_object, json_schema, grammar (GBNF).
Reasoning Tokens
Для моделей с рассуждениями:
{
"model": "openai/gpt-6-astra",
"messages": [{"role": "user", "content": "Реши: 2x + 5 = 13"}],
"reasoning": {
"effort": "high",
"max_tokens": 1000
}
}
Параметры reasoning
| Параметр | Тип | Описание |
|---|---|---|
effort | string | Уровень усилий: low, medium, high |
max_tokens | number | Лимит reasoning-токенов |