Разделы документации
Параметры запроса
Все поля тела запроса: что учитывается, что игнорируется молча, и как устроены роли сообщений
Страница описывает тело запроса POST /v1/chat/completions. Базовый адрес — https://api.librachat.kz/v1, авторизация заголовком Authorization: Bearer sk-libra-… Формат тела совместим с OpenAI Chat Completions: вы можете отправлять привычную структуру, сервис возьмёт из неё то, что поддерживает.
Поддерживаемые параметры
Эти пять полей влияют на результат. Всё остальное на ответ не действует.
| Поле | Тип | По умолчанию | Что делает |
|---|---|---|---|
| model | строка | обязательное | Идентификатор модели: libra-fast или libra-pro. Список доступных значений отдаёт GET /v1/models. Контекст обеих моделей — 1 млн токенов. |
| messages | массив объектов | обязательное | История диалога. Каждый элемент — объект с полями role и content. Порядок элементов = порядок реплик, модель читает их сверху вниз. |
| temperature | число | 0.3 | Разброс ответов. Меньше — суше и стабильнее, больше — свободнее и разнообразнее. Если поле не передано, применяется 0.3. |
| max_tokens | целое | без ограничения сверху, кроме лимита ключа | Максимум токенов в ответе модели. Допустимый диапазон 1..32000. Значение вне диапазона отклоняется. |
| stream | логическое | false | При true ответ приходит потоком server-sent events вместо одного JSON. |
Роли сообщений
Поле role у каждого элемента messages принимает три значения.
| Роль | Кто это | Как использовать |
|---|---|---|
| system | Инструкция от вас как от разработчика | Задаёт правила поведения: тон, язык, формат ответа, запреты. Обычно идёт первым сообщением. Можно не передавать вовсе. |
| user | Реплика пользователя | Вопрос или задача. В диалоге таких сообщений много — по одному на каждый ход пользователя. |
| assistant | Прошлый ответ модели | Возвращайте предыдущие ответы обратно в messages, чтобы модель помнила контекст беседы. Сервис историю не хранит, память диалога держите на своей стороне. |
Поле content — строка с текстом. Если вы передадите content массивом частей и внутри окажется блок image_url, картинка будет молча отброшена: распознавание изображений в API пока не работает, текстовые части при этом обработаются нормально.
Игнорируемые параметры
Поля ниже можно отправлять — запрос пройдёт, ошибки не будет, ответ вернётся как обычно. Просто на результат они не повлияют. Это удобно, если вы переносите готовый код с другой платформы: чистить тело запроса не обязательно, но и рассчитывать на эти поля нельзя.
| Поле | Что обычно делает | Поведение у нас |
|---|---|---|
| tools | Описание функций для вызова моделью | Игнорируется, вызовов инструментов в ответе не будет |
| tool_choice | Принудительный выбор инструмента | Игнорируется |
| top_p | Отсечение по вероятности вместо температуры | Игнорируется, разбросом управляет только temperature |
| n | Несколько вариантов ответа | Игнорируется, в choices всегда один элемент |
| stop | Стоп-последовательности | Игнорируется, генерацию ограничивает max_tokens |
| seed | Повторяемость результата | Игнорируется, воспроизводимость не гарантируется |
| response_format | Принудительный JSON-ответ | Игнорируется, формат просите в system-сообщении |
| presence_penalty | Штраф за повторение тем | Игнорируется |
| frequency_penalty | Штраф за повторение слов | Игнорируется |
| logprobs | Вероятности токенов | Игнорируется, в ответе их нет |
| user | Метка конечного пользователя | Игнорируется, расход считается на аккаунт |
Что вернётся
При stream: false — один JSON с Content-Type: application/json; charset=utf-8. В choices ровно один элемент, в usage — количество входных и выходных токенов, по которому списывается баланс.
При stream: true — поток server-sent events. Фрагменты идут строками data: с кусочками текста, поток закрывается строкой data: [DONE]. В самом последнем фрагменте перед ним массив choices пустой, зато присутствует usage — берите итоговый расход именно оттуда.
Ограничения на ключ: 120 запросов в минуту, 1 000 000 токенов в минуту, max_tokens до 32 000. При превышении вернётся 429 rate_limited, при нехватке предоплаченных токенов — 402 insufficient_balance. Тексты ошибок русские.