POST Chat Completions

Основной эндпоинт для генерации текста и диалогов

POST Chat Completions

Основной эндпоинт для генерации текста и диалогов. Поддерживает текстовые диалоги, мультимодальные запросы (текст + изображения + аудио + видео + файлы), вызов функций и потоковую передачу.

Возможности

  • Агрегация провайдеров — автоматический выбор оптимального провайдера
  • Биллинг в рублях — точный учёт стоимости
  • Reasoning Tokens — поддержка моделей с рассуждениями
  • Streaming — потоковая передача через SSE
  • Tool Calling — вызов внешних функций
  • Мультимодальность — обработка текста, изображений, аудио, видео и файлов

Параметры запроса

Обязательные

ПараметрТипОписание
modelstringID модели из списка моделей

Контент

ПараметрТипОписание
messagesarrayМассив сообщений диалога (рекомендуется)
promptstringПростой текстовый промпт (альтернатива messages)

Параметры генерации

ПараметрТипПо умолчаниюОписание
max_tokensintegerБез лимитаМаксимум токенов в ответе
max_completion_tokensintegerБез лимитаАльтернатива max_tokens
temperaturefloat (0-2)1.0Температура (0=детерминированный, 2=креативный)
top_pfloat (0-1)1.0Nucleus sampling
top_kinteger—Top-K sampling
frequency_penaltyfloat (-2..2)0Штраф за повторение слов
presence_penaltyfloat (-2..2)0Штраф за повторение токенов
stopstring/array—Стоп-последовательности
seedinteger—Seed для воспроизводимости

Специальные возможности

ПараметрТипОписание
streambooleanВключить streaming (SSE)
reasoningobjectНастройки reasoning tokens
toolsarrayДоступные функции для вызова
tool_choicestring/objectВыбор инструмента: "none", "auto", "required"
response_formatobjectФормат ответа: text, json_object, json_schema, grammar
web_search_optionsobjectВстроенный веб-поиск
providerobjectКонфигурация роутинга по провайдерам
pluginsarrayПодключение плагинов
modalitiesarrayВыходные модальности: "text", "image", "audio"
audioobjectКонфигурация аудио-вывода (voice, format)
userstringИдентификатор конечного пользователя

Структура сообщений

Базовый формат

{
  "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

ПараметрТипОписание
effortstringУровень усилий: low, medium, high
max_tokensnumberЛимит reasoning-токенов