Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ИИ чат API — нейросеть в приложении: суммаризация текста, чат-бот, LLM

Русский · English

examples license API

Готовые примеры работы с API ИИ-чата на шести языках: Python, TypeScript (Node.js), Go, Java, C#, PHP. Подключить нейросеть в приложение одним HTTP-запросом: суммаризация текста, генерация текста, чат-бот с памятью диалога. Один LLM API, единый ключ, учёт токенов в ответе.

Каждый пример запускается сразу — без регистрации, без ключа, без карты. В коде зашит публичный демо-ключ.

git clone https://github.com/atlorium-api/ai-chat-api-client
cd ai-chat-api-client/python && pip install -r requirements.txt && python main.py
Демо-ключ: ответ модели — заглушка (мок). Реальная ИИ-модель не вызывается, токены не тратятся.

Доступные модели (GET /api/AiChat/models):
  [ ] local     Приватная — вход до 6000 токенов, недоступна
  [*] basic     Базовая — вход до 4000 токенов, доступна
  [ ] advanced  Продвинутая — вход до 6000 токенов, недоступна
  [ ] best      Лучшая — вход до 8000 токенов, недоступна

Выбрана: basic (Базовая) — первая доступная в списке.
  Лимит входа: 4000 токенов

Проверка длины до отправки:
  Символов в запросе: 766 (жёсткий лимит API: 4000)
  Оценка токенов: ~192 (приблизительно: символы / 4)
  Влезает — отправляем.

── Выжимка ───────────────────────────────────────────────────────
Это ответ песочницы (mock): реальная ИИ-модель не вызывалась и токены не тратились. Ваше сообщение получено: «Сделай краткую выжимку текста ниже: 2–3 предложения, только суть, без вступлений и повторов.

Текст:
Клиент пишет, что п…». Активируйте аккаунт и используйте боевой ключ, чтобы получать реальные ответы модели.
──────────────────────────────────────────────────────────────────

Модель: basic
Токены: prompt 59 + completion 58 = 117
Сессия: dd8e248a7db5772ac46e7bca824e38cc

GET /api/AiChat/session/{id} → 404: в песочнице история сессии не сохраняется.
С боевым ключом сессия живёт час и доступна по этому же запросу — а sessionId
можно передать в следующий /send и продолжить диалог.

Напоминание: reply выше — заглушка песочницы, а не работа модели. Боевой ключ
вернёт настоящую выжимку тем же кодом.

Что именно показывает демо-ключ — и чего не показывает. У песочницы здесь две честные границы, и обе видно прямо в выводе выше.

  1. reply — это заглушка, а не работа модели. Мок так и пишет: «реальная ИИ-модель не вызывалась и токены не тратились». Самой суммаризации в песочнице увидеть нельзя — видно только механику: выбор модели, проверку длины, учёт токенов, сессию. Боевой ключ вернёт настоящую выжимку тем же кодом, без единой правки.
  2. В песочнице не сохраняются сессии. GET /api/AiChat/session/{id} отдаёт 404 сразу после того, как /send вернул этот самый sessionId — проверено. Пример это переживает штатно и объясняет, а не падает. С боевым ключом сессия живёт час и работает.

Всё остальное — реально: маршруты, коды ошибок, лимиты, формат ответа. Интеграцию можно написать и закрыть тестами до оплаты.


Зачем это нужно

Суммаризация тикетов и переписки, извлечение смысла из отзывов, автоответы поддержки, генерация описаний товаров, классификация обращений, чат-бот с памятью диалога. Всё это — один POST-запрос: без своего GPU, без стойки с моделями и без отдельного договора на доступ к моделям.

Примеры не просто печатают JSON, а применяют API: в каждом есть функция summarize(), которая делает две вещи, которых нет в наивном примере.

1. Не хардкодит модель. Сначала GET /api/AiChat/models, потом — первая модель с isAvailable: true. Состав доступных моделей задаётся конфигурацией сервера и меняется; пример, зашивший конкретный id, однажды тихо сломается. Если доступных моделей нет вообще — пример честно об этом говорит и выходит, а не шлёт запрос в пустоту.

2. Считает длину ДО отправки. POST /send — платный вызов. Отправить в него текст, который заведомо не влезет в лимит модели, значит потратить деньги и квоту на заведомо провальном запросе. Поэтому пример грубо оценивает число токенов (эвристика «символы / 4» — приблизительная, и в коде это написано прямо) и сравнивает с maxInputTokens выбранной модели, а заодно с жёстким лимитом API в 4000 символов на сообщение. Не влезает — говорим «сократите или разбейте на части» и не отправляем запрос.

Быстрый старт за 60 секунд

Посмотреть список моделей вообще без клонирования (этот вызов бесплатный):

curl -H "Authorization: Bearer ak_sandbox_demo_mockdata_v1" \
     "https://atlorium.com/api/AiChat/models"

Отправить сообщение (а вот это уже платный вызов — см. «Цены и лимиты»):

curl -X POST "https://atlorium.com/api/AiChat/send" \
     -H "Authorization: Bearer ak_sandbox_demo_mockdata_v1" \
     -H "Content-Type: application/json; charset=utf-8" \
     -d '{"message":"Что такое DNS?","sessionId":null,"model":"basic"}'
Язык Запуск Требуется
Python pip install -r requirements.txt && python main.py Python 3.10+
TypeScript / Node.js npm install && npm start Node.js 20+
Go go run . Go 1.22+
Java java Main.java JDK 11+ (без зависимостей)
C# dotnet run .NET 8+
PHP php main.php PHP 8.1+

Передать свой текст аргументом: python main.py "текст, который нужно сжать"

Аутентификация

Ключ передаётся в заголовке Authorization:

Authorization: Bearer ВАШ_КЛЮЧ
Ключ Что делает
ak_sandbox_demo_mockdata_v1 Демо-ключ. Публичный, один на всех. Регистрации не требует, денег не списывает, реальную модель не вызывает — reply возвращается заглушкой. Ответы детерминированы: один и тот же запрос всегда даёт тот же sessionId и тот же расход токенов, поэтому на них можно писать стабильные тесты.
Боевой ключ Настоящие ответы модели. Получить в личном кабинете: atlorium.com

Переход на боевой ключ не требует правок в коде — все примеры читают переменную окружения:

export ATLORIUM_API_KEY="ak_ваш_боевой_ключ"

Ответ песочницы на /send помечен заголовком X-Atlorium-Sandbox: true — перепутать заглушку с ответом модели невозможно.

Эндпоинты

Базовый адрес: https://atlorium.com

Метод Путь Назначение Тарифицируется
GET /api/AiChat/models Список моделей сервера с лимитами и доступностью Нет
POST /api/AiChat/send Отправить сообщение, получить ответ модели Да
GET /api/AiChat/session/{sessionId} Сведения о сессии: сколько сообщений, когда активна Нет
DELETE /api/AiChat/session/{sessionId} Удалить сессию и всю историю Нет

Ключ нужен всем четырём (без него 401), но квоту расходует только /send — именно он ходит в модель. Проверено живыми запросами: ответы /models и эндпоинтов сессии не помечены даже заголовком X-Atlorium-Sandbox.

Регистр в пути не важен: /api/aichat/send работает так же.

POST /api/AiChat/send

Тело запроса — JSON. Кодировка UTF-8 (Content-Type: application/json; charset=utf-8).

Поле Тип Описание
message string Обязательное. Текст сообщения, до 4000 символов. Длиннее — 400.
sessionId string / null Идентификатор существующей сессии, чтобы продолжить диалог. null — создать новую.
model string / null id модели из /models. null — модель по умолчанию.

GET / DELETE /api/AiChat/session/{sessionId}

Параметр Где Тип Описание
sessionId путь string 32 шестнадцатеричных символа — то, что вернул /send

Поля ответа

GET /api/AiChat/models → массив

Поле Тип Что содержит
id string Идентификатор для поля model в /send
name string Человекочитаемое название
description string Чем эта модель отличается от остальных
isAvailable bool Ключевое поле. Модель включена на сервере. Берите только такие — остальные отключены.
isLocal bool Модель работает на сервере Atlorium: переписка не уходит наружу
maxInputTokens int Лимит входа — с ним сравнивают длину текста до отправки
maxOutputTokens int Максимальная длина ответа
contextWindowTokens int Размер контекстного окна
maxTokens int Максимум токенов на диалог

POST /api/AiChat/send → объект

Поле Тип Что содержит
sessionId string Идентификатор сессии. Передайте его в следующий /send — модель увидит предыдущие сообщения
reply string Ответ модели. На демо-ключе — заглушка, см. предупреждение выше
model string Какая модель фактически отвечала
promptTokens int Токенов ушло на запрос
completionTokens int Токенов ушло на ответ
totalTokens int Сумма — по ней считается расход
createdAt date-time Время ответа, UTC

GET /api/AiChat/session/{sessionId} → объект

Поле Тип Что содержит
sessionId string Идентификатор сессии
messageCount int Сколько сообщений пользователя уже в сессии (максимум 50)
createdAt date-time Когда создана
lastActivityAt date-time Последняя активность. Через час простоя сессия удаляется

Обработка ошибок

Код Причина Что делать
400 Сообщение пустое, длиннее 4000 символов или в сессии уже 50 сообщений Сократить текст или начать новую сессию (sessionId: null)
401 Ключ отсутствует, просрочен или недействителен Проверьте заголовок Authorization
402 Недостаточно кредитов на балансе Пополнить на atlorium.com
404 Сессия не найдена или истекла Штатный случай: сессия живёт час. Начните новую с sessionId: null
429 Превышен rate-limit Подождать и повторить — но с потолком ожидания, см. ниже
500 Модель не ответила Повторить позже. За сбой на нашей стороне деньги не списываются: резерв кредита переводится в списание только после успешного ответа модели

Во всех шести примерах коды разложены в человекочитаемые причины — смотрите класс AtloriumError.

Про 429 и Retry-After. Исчерпав часовой лимит, сервер честно просит подождать 40+ минут. Клиент, который слепо спит столько, сколько попросили, зависает на всё это время. Поэтому в примерах есть потолок MAX_RETRY_DELAY = 120 секунд: дольше не ждём, а честно сообщаем «квота исчерпана» и выходим. Повтор — ровно один раз.

Цены и лимиты

Оплата pay-as-you-go, без подписки: платите за выполненные запросы к /send. /models и операции с сессиями не тарифицируются.

Актуальные цены: atlorium.com/pricing

Лимиты у этого сервиса самые жёсткие в Atlorium — за каждым вызовом стоит реальная работа модели и реальные токены:

Окно Лимит
В минуту 2 запроса
В час 10 запросов
В сутки 35 запросов

Лимит считается по IP и одинаков для демо-ключа и для зарегистрированного пользователя — песочница честно показывает те условия, которые вы получите в бою.

Один прогон примера = один платный вызов /send. Это сделано намеренно: пример не гоняет API в цикле. Учитывайте это, если запускаете его несколько раз подряд — 429 наступит быстро и это не поломка, а работающий лимит.

Частые вопросы

Какую модель выбрать? Ту, у которой isAvailable: true — и не зашивайте id в код. Состав моделей задаётся конфигурацией сервера: сегодня доступна одна, завтра другая. Именно поэтому примеры сначала читают /models, а не хардкодят модель.

Что такое модель «Приватная» (isLocal: true)? Модель, которая работает на сервере Atlorium: переписка остаётся внутри периметра. Это важно, когда в тексте персональные данные или коммерческая тайна.

Как сделать чат-бот с памятью? Возьмите sessionId из ответа /send и передайте его в следующий /send. Модель увидит предыдущие сообщения. В одной сессии — до 50 сообщений пользователя, сессия живёт час с последней активности, потом удаляется. Стереть раньше — DELETE /api/AiChat/session/{id}.

Как посчитать токены заранее? Точно — никак, токенизация зависит от модели. Практичная эвристика: символы / 4. Для английского она близка к правде, для русского обычно занижает. Её задача — не посчитать биллинг, а отсечь заведомо длинный текст до платного вызова. Именно так это и сделано в примерах.

Сколько текста можно отправить за раз? Жёсткий лимит API — 4000 символов на сообщение (400, если больше). Плюс лимит выбранной модели по токенам (maxInputTokens). Больший объём нужно резать на части и суммаризировать по кускам.

Чем это удобнее, чем поднимать ИИ-доступ отдельно? Тот же ключ, что и у остальных API Atlorium, единый счёт, оплата в рублях, никакой отдельной регистрации. Плюс сервер сам держит историю сессии — её не нужно тащить в каждом запросе.

Обязательна ли регистрация, чтобы попробовать? Нет. Демо-ключ публичный и работает без аккаунта — но reply он возвращает заглушкой, а не ответом модели.

Другие API Atlorium

Тем же ключом и из того же аккаунта:

Полный каталог — atlorium.com

Ссылки

Лицензия

MIT — берите код и используйте как хотите, в том числе в коммерческих проектах.

About

API ИИ-чата: единый эндпоинт к нескольким LLM-моделям, сессии, история. Примеры на Python, TypeScript, Go, Java, C#, PHP. AI chat API client.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages