Перейти к содержимому
Антон ГончаровРазработчик ИИ-систем

Сервис на Go · лимиты · журнал

Шлюз к нейросетям

Прежде чем бот отвечает клиентам, вызов модели должен проходить через шлюз: иначе один бот за ночь съедает бюджет всех остальных, а повтор кнопки «отправить» дважды списывает токены. Здесь три бота «Зерна» ходят в один вход. Видно, сколько осталось, какой вызов ушёл на запасную модель и какой хеш вопроса записан в журнал.

Сценарий: Обжарочная «Зерно» — вымышленная: боты поддержки, заявок и магазина.

Скриншот демо: Шлюз к нейросетям

Открыть демо

Ответ модели — локальная заглушка. Лимиты, бюджет и журнал пишет сервис на Go в PostgreSQL.

Приложение работает в браузере: на сервер ничего не отправляется.

Что показывает демо

  • Вход POST /v1/chat/completions — тот же формат, что у OpenAI, со своим ключом на бота

  • Потолок запросов в минуту и бюджет токенов на сутки, остаток виден полосой

  • Ключ идемпотентности: повтор того же запроса возвращает записанный ответ и не списывает бюджет

  • Запасная модель, если основная недоступна: в журнале видно, какая ответила

  • Журнал: хеш вопроса, число токенов, оценка стоимости, задержка и идентификатор трассы

Как попробовать

  1. Спросите поддержку

    Кнопка «Спросить поддержку» вызывает шлюз ключом бота поддержки. В журнале появляется строка с ответом и стоимостью.

  2. Повторите запрос

    «Повторить запрос» шлёт тот же ключ идемпотентности. Бюджет не уменьшается второй раз.

  3. Включите запасную модель

    «Запасная модель» помечает основную недоступной. В строке журнала маршрут заканчивается на zerno-small.

  4. Упритесь в лимит

    «Пять запросов заявок» — у бота заявок потолок 4 в минуту, пятый получает отказ. «Исчерпать бюджет заявок» тратит суточный бюджет, и следующий вызов не проходит.

Без платных нейросетей

Текст ответа собирает локальная заглушка, без платного вызова модели. Ключи, лимиты, бюджет, журнал и трасса OpenTelemetry — настоящие, их держит сервис на Go.

Демо работает без API-ключей OpenAI, YandexGPT или GigaChat. Там, где рабочая система обращается к модели, стоит локальная заглушка с тем же интерфейсом — поэтому демо бесплатно, всегда доступно и ничего не выдумывает.

Что будет в рабочем проекте

  • Настоящие провайдеры моделей за тем же входом, со своими ценами и запасным маршрутом
  • Ключи команд и проектов, а не три демо-бота
  • Журнал и трассы в коллекторе OpenTelemetry
  • Отдельный бюджет на бота, на команду и на сутки

Стек

  • Go
  • net/http
  • pgx
  • sqlc
  • goose
  • PostgreSQL
  • OpenTelemetry
  • slog
  • React 19

Нужен такой же для вашего бизнеса?

Расскажите о задаче — отвечу, что из демо подойдёт вам, сколько это займёт и что понадобится с вашей стороны.

Другие демо в этом разделе

Все демо
  • Веб-приложение · OCR · проверка реквизитов

    работает

    Распознавание документов

    Загрузите счёт или акт — фото, скан или PDF. Приложение распознаёт текст, вытаскивает реквизиты и строки таблицы и проверяет их: контрольные суммы ИНН и счетов, итог и НДС.

    • React
    • TypeScript
    • Нейросеть в браузере
  • Веб-приложение · диалоги · сделки · аналитика

    работает

    Панель оператора

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

    • React
    • TypeScript
  • Веб-приложение · Recharts · RBAC · аудит

    работает

    SaaS-дашборд

    Кабинет команды выручки SaaS: MRR по тарифам, движение выручки, отток, здоровье клиентов, выгрузка CSV для Excel и журнал действий. Все цифры считаются из одной истории за год — смена тарифа в карточке клиента сразу двигает MRR на графиках.

    • React
    • TypeScript
  • Веб-приложение · Laravel · PostgreSQL

    работает

    Складской учёт на Laravel

    Учёт склада, где остаток — сумма проводок, а не «поле qty--»: заказы с резервом «всё или ничего», сборка по ячейкам, приёмка с импортом CSV, инвентаризация и журнал. Гонка двух настоящих процессов PHP в PostgreSQL показывает, зачем нужна блокировка строки.

    • PHP
  • Веб-приложение · метрики · оповещения

    работает

    Мониторинг бота

    Как следят за ботом, когда он уже работает с клиентами: сколько запросов, как быстро он отвечает, как часто ошибается или не знает ответа. Журнал запросов с трассой каждого ответа и правила, которые пишут дежурному в Telegram, если что-то пошло не так.

    • React
    • TypeScript
  • Сервис на Go · очередь · подтверждение

    работает

    Агент закупки

    Заявка поставщику идёт шагами в очереди: проверить остаток, собрать черновик, дождаться человека и только потом отправить. Оборванная отправка возвращается в очередь и не создаёт второй заказ.

    • Go
    • React
    • TypeScript
  • Сервис на Go · MCP · инструменты

    работает

    MCP-сервер «Зерна»

    Агент вызывает склад и заказы обжарочной инструментами Model Context Protocol: остатки, статус заказа, новая заявка. Рядом виден сам обмен JSON-RPC.

    • Go
    • React
    • TypeScript
  • Парсер на Python · работает в браузере

    работает

    Мониторинг цен конкурентов

    Парсер на Python каждый день обходит сайты трёх конкурентов магазина электроники: HTML-каталог с пагинацией, sitemap с JSON-LD и SPA с API. Сопоставляет товары с каталогом, присылает уведомления об изменениях, рекомендует цену по правилам и выгружает отчёт в Excel. Python работает прямо в браузере.

    • Python
    • React
    • TypeScript
  • Веб-приложение · PWA · нативный JS

    работает

    Офлайн-приложение курьера

    Рабочий день курьера: заказы, звонок клиенту, вручение с фото и подписью. Приложение открывается и работает без сети, а изменения уходят в диспетчерскую, когда связь вернётся. Если диспетчер за это время изменил тот же заказ — курьер выбирает, чья версия верная.

    • Нативный JS