Экспертиза · Доступ к моделям AI
Единая точка входа к моделям AI, с ключами на команду, лимитами и локальным счётом.
Мы ставим между приложениями компании и поставщиками моделей единую точку входа, совместимую с интерфейсом OpenAI. Оттуда выпускаются отдельные ключи по проектам, с лимитом расходов, списком разрешённых моделей и списком IP-адресов, а потребление видно по ключу.
Уже построеноКвота работает и это можно проверить извне уже сегодня, без того чтобы верить нам на слово: публичный каталог моделей отвечает 200 и перечисляет 106 моделей, отмеченных как active, а запрос к моделям без ключа возвращает 401. Под ним — две собственные реализации: служба биллинга и администрирования (98 файлов TypeScript), которая выпускает ключи, синхронизирует лимиты с квотой и ведёт журналы, и наша платформа ассистентов, которая выводит распознавание речи и синтез в production через ту же квоту, а не напрямую к поставщику. Ограничения, сказанные здесь, а не внизу: каталог меняется от часа к часу, поэтому любая цифра пишется вместе с датой; сегодня в квоте нет ни одной модели Anthropic, хотя наш собственный README обещает иное; а автоматическая отправка счёта в государственную систему остаётся в режиме пробной эксплуатации до установки сертификата.
Проблема появляется во второй раз, а не в первый. Первая интеграция с поставщиком моделей проста: один ключ, одна библиотека, и всё. Пятое приложение, третья команда и второй счёт в валюте — это момент, когда уже никто не может ответить на три банальных вопроса: кто потребляет, сколько, и что произойдёт, если скрипт выйдет из-под контроля в субботнюю ночь. Портал решает именно это: приложения больше не говорят с поставщиками, они говорят с единой точкой входа, у которой тот же интерфейс, что и у API OpenAI, поэтому в большинстве библиотек вы меняете базовый адрес и ключ, а не код.
Что вы можете проверить сами, прямо сейчас, без аккаунта: публичный каталог моделей портала отвечает и показывает, что в нём есть. На сегодняшней проверке было 106 моделей, все помечены активными — 77 текстовых моделей, из которых 48 заявляют способности к рассуждению, 10 аудио, 7 изображений, 7 в реальном времени, 3 векторизации и 2 видео. Та же проверка, сделанная коллегой на полтора часа раньше, возвращала 107. Поэтому цифра всегда пишется вместе со временем, а на сайте её следует читать из endpoint, а не набирать вручную.
Контроль расходов — это не панель, а ограничитель. У ключа есть лимит расходов, выбираемый период лимита из четырёх вариантов, список разрешённых моделей, список принимаемых IP-адресов — до двадцати, IPv4, IPv6 или блоки — и флаг блокировки. Когда лимит превышен, ключ автоматически блокируется, а причина записывается на нём, чтобы интерфейс мог сказать почему, вместо того чтобы показывать немое состояние. Есть и коррекция, которую мало кто делает: модели, которые «думают» перед тем, как ответить, у поставщика расходуют больше, чем видит портал, поэтому брутто-лимит, передаваемый ниже, делится на коэффициент рассуждения, вычисленный как медиана за последние тридцать дней пользователя, ограниченная между одним и двадцатью. Без этой коррекции лимит расходов был бы декоративным именно на дорогих моделях.
Локальная часть. Валютный курс читается из официального XML-файла Национального банка Молдовы за текущий день, с тайм-аутом пять секунд и резервным значением из конфигурации, когда источник не отвечает — шлюз не имеет права останавливаться из-за того, что сайт с курсами валют недоступен. Налоговая накладная строится как XML и хранится, с циклом состояний от черновика до принятой или отклонённой. Непосредственная отправка в государственную систему выполняется с сертификатом; пока сертификат не установлен, сервис остаётся в тестовом режиме: XML генерируется и сохраняется, но не отправляется. Это реальное состояние, и мы его пишем, потому что это разница между «у нас есть налоговая накладная» и «у нас есть всё необходимое, чтобы отправить её».