Русский · English
Готовые примеры работы с 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 выше — заглушка песочницы, а не работа модели. Боевой ключ
вернёт настоящую выжимку тем же кодом.
Что именно показывает демо-ключ — и чего не показывает. У песочницы здесь две честные границы, и обе видно прямо в выводе выше.
reply— это заглушка, а не работа модели. Мок так и пишет: «реальная ИИ-модель не вызывалась и токены не тратились». Самой суммаризации в песочнице увидеть нельзя — видно только механику: выбор модели, проверку длины, учёт токенов, сессию. Боевой ключ вернёт настоящую выжимку тем же кодом, без единой правки.- В песочнице не сохраняются сессии.
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 символов на сообщение. Не влезает — говорим «сократите или разбейте на части» и не отправляем запрос.
Посмотреть список моделей вообще без клонирования (этот вызов бесплатный):
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 работает так же.
Тело запроса — JSON. Кодировка UTF-8 (Content-Type: application/json; charset=utf-8).
| Поле | Тип | Описание |
|---|---|---|
message |
string | Обязательное. Текст сообщения, до 4000 символов. Длиннее — 400. |
sessionId |
string / null | Идентификатор существующей сессии, чтобы продолжить диалог. null — создать новую. |
model |
string / null | id модели из /models. null — модель по умолчанию. |
| Параметр | Где | Тип | Описание |
|---|---|---|---|
sessionId |
путь | string | 32 шестнадцатеричных символа — то, что вернул /send |
| Поле | Тип | Что содержит |
|---|---|---|
id |
string | Идентификатор для поля model в /send |
name |
string | Человекочитаемое название |
description |
string | Чем эта модель отличается от остальных |
isAvailable |
bool | Ключевое поле. Модель включена на сервере. Берите только такие — остальные отключены. |
isLocal |
bool | Модель работает на сервере Atlorium: переписка не уходит наружу |
maxInputTokens |
int | Лимит входа — с ним сравнивают длину текста до отправки |
maxOutputTokens |
int | Максимальная длина ответа |
contextWindowTokens |
int | Размер контекстного окна |
maxTokens |
int | Максимум токенов на диалог |
| Поле | Тип | Что содержит |
|---|---|---|
sessionId |
string | Идентификатор сессии. Передайте его в следующий /send — модель увидит предыдущие сообщения |
reply |
string | Ответ модели. На демо-ключе — заглушка, см. предупреждение выше |
model |
string | Какая модель фактически отвечала |
promptTokens |
int | Токенов ушло на запрос |
completionTokens |
int | Токенов ушло на ответ |
totalTokens |
int | Сумма — по ней считается расход |
createdAt |
date-time | Время ответа, UTC |
| Поле | Тип | Что содержит |
|---|---|---|
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 он возвращает заглушкой, а не ответом модели.
Тем же ключом и из того же аккаунта:
- Распознавание текста с картинки — OCR по изображению или Base64
- Проверка почты — синтаксис, MX-записи, одноразовые адреса
- ЕГРЮЛ/ЕГРИП — проверка контрагента по ИНН/ОГРН: статус, адрес, капитал
- Валидация телефона — формат, тип номера, оператор диапазона
- Справочник БИК ЦБ РФ — реквизиты банка и контрольный ключ расчётного счёта
- Стандартизация адреса — разбор строки на компоненты и оценка качества
Полный каталог — atlorium.com
- Документация API (Swagger): atlorium.com/aichatAPI
- Описание сервиса: atlorium.com/aichatDescription
- Веб-интерфейс: atlorium.com/aichatGUI
- OpenAPI-спецификация: aichat_ru.json
- Поддержка: support@atlorium.com
MIT — берите код и используйте как хотите, в том числе в коммерческих проектах.