Разделы документации
Генерация текста
Эндпоинт chat/completions: роли, параметры и то, что игнорируется молча
Генерация текста работает через один эндпоинт — POST /v1/chat/completions. Формат запроса и ответа совпадает с OpenAI Chat Completions, поэтому подходят официальные библиотеки openai для Python и Node.js: достаточно поменять базовый адрес и ключ.
| Параметр | Значение |
|---|---|
| Базовый адрес | https://api.librachat.kz/v1 |
| Эндпоинт | POST /v1/chat/completions |
| Заголовок | Authorization: Bearer sk-libra-… |
| Модели | libra-fast, libra-pro |
| Ответ | Content-Type: application/json; charset=utf-8 |
Поле messages и роли
messages — список сообщений диалога по порядку. У каждого сообщения есть роль и текст.
- system — инструкция модели: как отвечать, в каком тоне, в каком формате. Обычно первым сообщением.
- user — то, что пишет пользователь.
- assistant — предыдущие ответы модели. Передавайте их, если хотите, чтобы модель помнила контекст диалога: сервис не хранит историю, весь контекст вы отправляете сами в каждом запросе.
Контекст модели — 1 млн токенов, в него входят и ваши сообщения, и ответ.
Какие параметры учитываются
| Параметр | Что делает | По умолчанию |
|---|---|---|
| model | Модель: libra-fast или libra-pro | обязателен |
| messages | Список сообщений диалога | обязателен |
| temperature | Разброс ответов: ниже — стабильнее, выше — свободнее | 0.3 |
| max_tokens | Предел длины ответа, от 1 до 32000 | — |
| stream | Отдавать ответ по частям (server-sent events) | false |
Какие параметры молча игнорируются
Эти поля можно прислать — запрос не упадёт с ошибкой, но и эффекта не будет. Ошибки в ответе тоже не будет, поэтому легко решить, что параметр «сработал»:
- tools, tool_choice — вызова функций и инструментов нет
- top_p, n, stop, seed
- response_format — JSON-режима нет
- presence_penalty, frequency_penalty
- logprobs
- user
Картинки в messages отбрасываются
Практическое следствие: не стройте сценарии вида «пользователь прислал скриншот — модель его разбирает». Ответ будет выглядеть правдоподобно, но он придуман по тексту вокруг.
Пример запроса
Пример ответа
Ответ приходит с Content-Type: application/json; charset=utf-8. Если вы дёргаете API из PowerShell и вместо русского текста видите крякозябры — дело не в API, а в кодировке консоли: читайте тело ответа как UTF-8 (например, через Invoke-RestMethod с явной перекодировкой или выставив [Console]::OutputEncoding в UTF-8).
Стриминг
С stream: true ответ идёт server-sent events, поток закрывается строкой data: [DONE]. Сервис сам проставляет stream_options {"include_usage": true} — передавать его не нужно.
Лимиты, баланс и ошибки
- 120 запросов в минуту и 1 000 000 токенов в минуту на ключ; max_tokens — до 32 000.
- Баланс предоплаченный, в токенах, общий на все ключи аккаунта. Перед запросом проверяется: если баланс ≤ 0 — 402. Списание происходит после ответа, по факту.
- Цены за 1 млн токенов: libra-fast — вход 337,50 ₽ / кеш 54 ₽ / выход 675 ₽; libra-pro — вход 450 ₽ / кеш 72 ₽ / выход 900 ₽.
| Код | Название | Когда |
|---|---|---|
| 401 | no_api_key | Заголовок Authorization не передан |
| 401 | invalid_api_key | Ключ неверный или отозван |
| 402 | insufficient_balance | Баланс аккаунта ≤ 0 |
| 429 | rate_limited | Превышены запросы или токены в минуту |
| 502 | upstream_error | Ошибка при генерации ответа |
Тексты ошибок русские. Ключи создаются в кабинете: «Настройки → API».