Разделы документации
Файлы и коллекцииготовится
Планируемый контракт: /v1/files, коллекции, поиск по документам из chat/completions и цены хранения
Зачем это нужно
Раздел решает две задачи. Первая — положить файл на сторону LibraChat один раз и дальше ссылаться на него по идентификатору, не пересылая содержимое в каждом запросе. Вторая — собрать из файлов коллекцию и искать по ней из чата: модель сама найдёт нужные куски ваших документов и ответит по ним.
Файл и коллекция — разные сущности. Файл лежит как есть, за него берётся плата за хранение и за скачивание. Коллекция — это проиндексированные файлы, подготовленные к поиску; индекс занимает больше места, поэтому ставка за хранение коллекции выше.
Базовый адрес тот же: https://api.librachat.kz/v1. Авторизация та же: заголовок Authorization: Bearer sk-libra-…
Файлы: загрузка, список, удаление
Загрузка планируется через multipart/form-data, как в конвенции OpenAI: поле file с содержимым и поле purpose с назначением файла.
Ожидаемый ответ:
| Метод и путь | Что делает | Заметки |
|---|---|---|
| POST /v1/files | Загрузить файл | multipart/form-data: file, purpose |
| GET /v1/files | Список файлов аккаунта | Планируются limit, after, purpose |
| GET /v1/files/{file_id} | Метаданные одного файла | Без содержимого |
| GET /v1/files/{file_id}/content | Скачать содержимое | Тарифицируется за ГиБ |
| DELETE /v1/files/{file_id} | Удалить файл | Останавливает плату за хранение |
Значения purpose планируются такие: assistants — файл для работы модели (вложение в запрос, источник для коллекции), batch — входной файл пакетной обработки, user_data — просто хранение.
Хранение считается по фактическому объёму в сутки. Удалили файл — начисление прекращается со следующего расчётного интервала.
Коллекции для поиска по своей базе документов
Коллекция собирается из уже загруженных файлов. Вы создаёте коллекцию, добавляете в неё file_id, ждёте индексации и дальше используете её в чате.
| Метод и путь | Что делает |
|---|---|
| POST /v1/collections | Создать коллекцию, опционально сразу с file_ids |
| GET /v1/collections | Список коллекций аккаунта |
| GET /v1/collections/{id} | Статус коллекции и счётчики файлов |
| POST /v1/collections/{id}/files | Добавить файл в коллекцию |
| DELETE /v1/collections/{id}/files/{file_id} | Убрать файл из коллекции |
| DELETE /v1/collections/{id} | Удалить коллекцию вместе с индексом |
Пока status равен indexing, поиск по коллекции возвращать результаты не обязан. Готовая коллекция переходит в completed, поле usage_bytes показывает объём индекса — именно он тарифицируется по ставке коллекций.
Поиск по коллекции внутри chat/completions
Поиск подключается как инструмент в обычный запрос к /v1/chat/completions. Модель сама решает, нужно ли лезть в документы.
Отдельный файл можно приложить к запросу без коллекции — как вложение. Это тарифицируется по ставке «вложенные файлы» за вызов, а не по ставке поиска.
Важно: текст, который поиск подложит в контекст, оплачивается как обычные входные токены модели. Плата за вызов инструмента идёт сверх этого. Контекст остаётся 1 млн токенов, max_tokens — до 32 000.
Ожидаемые ошибки — те же коды, что и в остальном API: 401 no_api_key, 401 invalid_api_key, 402 insufficient_balance, 429 rate_limited, 502 upstream_error. Дополнительно планируются 404 file_not_found и 404 collection_not_found, а также 409 collection_not_ready, если коллекция ещё индексируется.
Цены
| Позиция | Единица | Цена |
|---|---|---|
| Хранение файлов | ГиБ в сутки | 6,75 ₽ |
| Хранение коллекций | ГиБ в сутки | 27 ₽ |
| Скачивание | ГиБ | 54 ₽ |
| Поиск по коллекциям | 1000 вызовов | 675 ₽ |
| Вложенные файлы | 1000 вызовов | 2 700 ₽ |
Токены, которые модель прочитала из найденных фрагментов, считаются по обычным ставкам: libra-fast — 337,50 ₽ вход / 54 ₽ кеш / 675 ₽ выход за 1 млн; libra-pro — 450 ₽ / 72 ₽ / 900 ₽ за 1 млн. Пакетная обработка даёт −20% к ставкам, приоритетная — ×2. Пополнение баланса от 1 млн токенов, 450 ₽ за 1 млн.