ИИ-шлюз (AI Gateway)

ИИ-шлюз (AI Gateway) – облачный сервис, цель которого в том, чтобы предоставить единую точку доступа к генеративным моделям разных разработчиков. В рамках этого сервиса модели OpenAI, Anthropic, Google, DeepSeek, Qwen и других доступны через один ключ и один формат запросов, с оплатой в рублях с баланса аккаунта Beget. Отдельная регистрация у каждого вендора и зарубежная карта не требуются.

Адрес шлюза: https://api-llm.beget.com/v1

Назначение сервиса

Обратиться к нейросети можно двумя способами. Через чат в браузере – так работают привычные чат-боты, и для личных задач этого достаточно. Либо программно: ваш сайт, бот или скрипт отправляет запрос по сети, получает ответ и использует его дальше – сохраняет в базу, показывает пользователю, запускает следующее действие. Второй способ называется работой через единый API.

ИИ-шлюз предоставляет доступ по API. Он предназначен для случаев, когда модель должна работать внутри вашего продукта: пользователь видит подсказку, автоматический ответ или готовое описание товара, не зная, что его сформировала нейросеть.

Из этого следует основное требование к пользователю услуги: код, отправляющий запросы, вы пишете сами, поэтому нужен хотя бы базовый опыт программирования. Готовых решений вида «включить ИИ на сайте» услуга не содержит.

Принцип работы

принцип работы

Программа отправляет на адрес шлюза запрос с указанием модели и текста обращения. AI-шлюз проверяет ключ и достаточность средств на балансе, передает запрос выбранной модели, возвращает ответ и списывает стоимость запроса.

Формат запроса одинаков для всех моделей каталога. Чтобы заменить одну модель другой и подключить новую LLM, достаточно изменить ее название в коде – переписывать интеграцию и изучать новую документацию не требуется.

Шлюз совместим с API OpenAI. Существующая интеграция с OpenAI переводится на шлюз изменением трех параметров: адреса, ключа и названия модели. Библиотеки, обработка ответов и обработка ошибок остаются прежними.

Модели

Список доступных для подключения через один API моделей нейросетей и их актуальные цены находятся в каталоге в панели управления, а также доступны через запрос GET /v1/models. Данные каталога могут изменяться: добавляются новые модели, недоступные модели удаляются, цены могут обновляться. В связи с этим не следует указывать список моделей и цены в коде – получайте актуальные данные из каталога в панели управления или запросом к шлюзу. 

Выбор модели

Внедрение LLM стоит начинать с недорогой модели – и переходить к более мощной только при недостаточном качестве. Разница в цене между легкой и флагманской моделью достигает десятков раз, тогда как на простых задачах – классификация, извлечение полей – разница в качестве незначительна. Использование флагманской модели для простых задач остается основной причиной завышенных расходов.

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

Тип модели стоит выбирать в зависимости от задачи: 

  • классификация, теги, короткие ответы, извлечение полей – легкие быстрые модели;
  • диалоговый ассистент, генерация и редактирование текстов – универсальные модели среднего уровня;
  • анализ договоров, сложные рассуждения, многошаговые задачи – флагманские модели и модели с рассуждением;
  • написание и разбор кода – модели с кодинг-специализацией;
  • большие документы и длинная переписка – модели с большим контекстным окном;
  • поиск по смыслу – модели эмбеддингов.

Эмбеддинги и поиск по смыслу

Эмбеддинг – представление текста в виде набора чисел, отражающего его смысл. Тексты с близким смыслом получают близкие наборы чисел независимо от того, какими словами они написаны. За счет этого запрос «не приходит письмо» возвращает статью «проблемы с доставкой почты».

Порядок применения:

  1. Все статьи, товары или документы один раз обрабатываются моделью эмбеддингов, результат сохраняется в базу.
  2. Вопрос пользователя обрабатывается той же моделью.
  3. В базе находятся записи с наиболее близкими значениями.
  4. Найденные фрагменты передаются чат-модели вместе с вопросом.

Модель отвечает, опираясь на переданные материалы, а не на общие сведения. Такой подход называется RAG и является стандартным способом получить ответы по собственной базе знаний.

Два условия. Хранилище векторов разворачивается на вашей стороне – подойдет расширение pgvector для PostgreSQL или отдельная база вроде Qdrant. Вся коллекция должна быть обработана одной моделью эмбеддингов: значения, полученные от разных моделей, несравнимы между собой, при смене модели индекс пересобирается целиком.

Тарификация

Оплата производится по факту использования, без абонентской платы и пакетов. Бесплатного тарифа и пробного периода нет. Средства списываются с общего баланса аккаунта Beget, отдельного счета у услуги нет.

Токены

Модель работает не со словами, а с токенами: часть слова, короткое слово или знак препинания. Ориентировочное соответствие – 1000 токенов на 750 слов (числа примерные, точные числа зависят от модели и используемого в ней токенизатора). При обработке русского текста расходуется больше токенов, чем английского того же объёма по смыслу.

Тарифицируются обе стороны обмена:

  • входящие токены – инструкция модели, вопрос пользователя, приложенный текст, история переписки;
  • исходящие токены – ответ модели.

Расчет стоимости

стоимость = (входящие_токены / 1 000 000) × цена_входящих + (исходящие_токены / 1 000 000) × цена_исходящих

Пример для модели gpt-5.5 (440 ₽ входящие / 2 638 ₽ исходящие за 1M): запрос на 500 входящих и 200 исходящих токенов ≈ 0,7476 ₽.

Цены приведены для примера и могут отличаться от актуальных. 

Считать вручную не требуется: в каждом ответе шлюз возвращает блок usage с количеством токенов, потраченных на запрос и на ответ. По этим данным расход учитывается на стороне вашего приложения.

При построении диалога учитывайте, что история отправляется заново с каждым запросом. Модель не хранит предыдущие реплики – чтобы она понимала контекст, переписка передается целиком при каждом обращении. Двадцатая реплика чата содержит девятнадцать предыдущих и тарифицируется соответственно. Обычно в длинных диалогах старые сообщения обрезают или заменяют кратким пересказом.

Проверка баланса перед запросом

Средства не резервируются. Перед отправкой шлюз рассчитывает максимально возможную стоимость запроса и сравнивает ее с балансом. Если расчетная сумма превышает остаток, запрос отклоняется.

Расчет зависит от того, ограничена ли длина ответа параметром max_tokens:

  • ограничение задано – расчет ведется по нему;
  • ограничение не задано – расчет ведется исходя из того, что модель израсходует все оставшееся контекстное окно.

У моделей с окном в сотни тысяч и миллионы токенов расчетная сумма во втором случае достигает сотен рублей, из-за чего отклоняется даже короткий запрос, фактическая стоимость которого составила бы копейки.

Указывайте max_tokens во всех запросах. Это устраняет ложные отказы и ограничивает длину ответа. Списывается после обработки фактический расход, а не расчетная сумма.

Что не тарифицируется

Ошибки, возникшие до обращения к модели, бесплатны: неверный ключ, недостаток средств, запрещенная для ключа модель, превышение частоты запросов. Если модель начала формировать ответ, использованные токены оплачиваются, в том числе при обрыве соединения.

Снижение расходов

  • Ограничивайте длину ответа параметром max_tokens.
  • Подбирайте модель под задачу, не используя флагманские модели для простых операций.
  • Сокращайте инструкцию модели: она передается с каждым запросом.
  • Обрезайте историю диалога или заменяйте ее пересказом.
  • Разделяйте обработку: недорогая модель отбирает и классифицирует, дорогая обрабатывает только то, что требует высокого качества.
  • Используйте кеширование промпта: повторяющееся начало запроса (системная инструкция, большой контекст) можно кешировать и платить за него меньше – выгодно при многократном переиспользовании одного и того же префикса. 

Фактический расход отображается в статистике услуги в разрезе моделей, ключей и дней, с фильтрами и выгрузкой в CSV.

Начало работы

1. Пополните баланс

Средства списываются с общего баланса аккаунта. При нулевом балансе запросы отклоняются.

2. Создайте API-ключ

Ключ API LLM-моделей создается в разделе ИИ-шлюза в панели управления, там же задаются его ограничения.

Секретное значение ключа отображается один раз, при создании. Сохраните его сразу: восстановление невозможно, при утрате выпускается новый ключ.

3. Отправьте запрос

Пример на Python с официальной библиотекой openai:

from openai import OpenAI
client = OpenAI(
    base_url="https://api-llm.beget.com/v1",
    api_key="ваш ключ",
)
response = client.chat.completions.create(
    model="название модели из каталога",
    messages=[
        {"role": "system", "content": "Ты – вежливый ассистент службы поддержки."},
        {"role": "user", "content": "Как восстановить пароль?"},
    ],
    max_tokens=512,
)
print(response.choices[0].message.content)

Назначение параметров:

  • base_url – адрес шлюза. Именно он отличает обращение к Beget от обращения напрямую к OpenAI;
  • model – название модели из каталога;
  • сообщение с ролью system – инструкция, задающая модели роль и правила поведения;
  • сообщение с ролью user – запрос пользователя;
  • max_tokens – ограничение длины ответа.

Официальные библиотеки OpenAI доступны также для JavaScript. На других языках запрос отправляется обычным HTTP-запросом с заголовком Authorization: Bearer ваш_ключ.

4. Проверьте результат

Текст ответа возвращается в поле choices[0].message.content, количество израсходованных токенов – в блоке usage. Значение length в поле finish_reason означает, что ответ обрезан по заданному ограничению длины и модель не завершила его самостоятельно.

API-ключи и контроль расходов

Использовать один ключ для всех задач с LLM-моделями не рекомендуется. В этом случае расход не разделяется по сервисам, а при компрометации ключа API доступ к LLM приходится отзывать сразу у всех интеграций.

Настройки ключа изменяются в любой момент.

Месячный лимит в рублях. Ограничивает расход по ключу за календарный месяц. Лимит включается и отключается отдельным переключателем. При включении лимит можно установить до 100 000 000 рублей в месяц. При его исчерпании запросы по этому ключу отклоняются до первого числа следующего месяца, остальные ключи продолжают работать. Лимит не резервирует средства, а ограничивает долю баланса, доступную одному ключу.

Список разрешенных моделей. Пустой список означает доступ ко всем моделям каталога. Если список задан, обращение к модели вне списка отклоняется. Применяется, чтобы тестовый ключ не мог обратиться к дорогой модели.

Статус. Отключенный ключ немедленно перестает работать, оставаясь в списке вместе со статистикой. Используется для быстрой остановки интеграции без удаления ключа.

Всего в аккаунте создается до 25 ключей.

Безопасность ключа

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

Храните ключ в переменных окружения или в менеджере секретов, а не в коде. Добавьте файл .env в .gitignore до первого коммита: ключ, попавший в публичный репозиторий, считается скомпрометированным независимо от последующего удаления коммита, поскольку остается в истории и в кешах.

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

Не передавайте ключ в переписке, тикетах и на скриншотах. Сотрудникам поддержки Beget он не требуется.

При компрометации ключа: отключите его, выпустите новый и обновите в сервисах, удалите старый. Незнакомые модели и всплеск расхода укажут на стороннее использование. Заданный месячный лимит в этой ситуации ограничивает возможный ущерб.

Лимиты и ограничения

Для аккаунта установлены следующие лимиты: 

  • ключей на аккаунт – до 25;
  • месячный лимит ключа – настраивается в рублях, максимальный лимит – 100 000 000 рублей в месяц;
  • баланс аккаунта – общий на все ключи и услуги.

Баланс аккаунта и месячный лимит ключа действуют независимо, ограничение срабатывает по любому из них. Месячный лимит обнуляется в начале календарного месяца.

Данные и конфиденциальность

Шлюз не запускает модели на своей стороне, а передает запросы их разработчикам. Обработка переданного текста регулируется правилами этих компаний и не находится под контролем Beget.

Не передавайте в запросах персональные данные, платежную информацию, учетные данные и коммерческую тайну.

Для задач, где такие данные участвуют, применяется обезличивание. Перед отправкой приложение заменяет реальные значения на заглушки: ФИО – на [КЛИЕНТ_1], номер договора – на [ДОГОВОР], телефон – на [ТЕЛЕФОН]. Модель обрабатывает обезличенный текст, а в полученный ответ приложение подставляет исходные значения. Качество результата при этом практически не снижается.

На стороне Beget сохраняются только сведения о факте запроса: время, модель, ключ, количество токенов, стоимость, результат обработки. Тексты запросов и ответов не записываются.

Если содержимое переписки требуется для разбора инцидентов, сохраняйте его на своей стороне: по статистике услуги восстановить его невозможно.

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

Чем услуга отличается от прямого обращения к разработчику модели?

Один ключ ко всем моделям вместо отдельного аккаунта у каждого вендора, оплата в рублях с баланса Beget вместо зарубежной карты, общая статистика и лимиты в одном месте, возможность сменить модель без переработки интеграции.

Нужно ли размещать проект на хостинге Beget?

Нет, шлюз доступен из любой инфраструктуры, требуется только ключ.

Нужно ли уметь программировать для доступа к API AI?

Для работы через API – да, на базовом уровне.

Что придется изменить в существующей интеграции с OpenAI?

Адрес, ключ и название модели. Остальной код остается прежним. Перед переключением прогоните типовые запросы и убедитесь, что выбранная модель отвечает ожидаемым образом.

Есть ли бесплатный тариф?

При работе через API запросы оплачиваются по общим тарифам: стоимость фактически обработанных токенов списывается с баланса аккаунта.

Откуда списываются средства?

С общего баланса аккаунта Beget.

Почему запрос отклонен из-за недостатка средств при положительном балансе?

В запросе не ограничена длина ответа, и стоимость рассчитана по максимуму, либо максимально возможная стоимость запроса превышает текущий баланс. Укажите max_tokens.

Тарифицируются ли неудачные запросы?

Ошибки, возникшие до обращения к модели, не тарифицируются. Если модель начала формировать ответ, использованные токены оплачиваются.

Где посмотреть актуальные цены и список моделей?

В каталоге в панели управления или запросом GET /v1/models. В код список и цены записывать не следует.

Сохраняются ли запросы и ответы моделей?

На стороне Beget – нет, сохраняются только сведения о факте запроса. Обработка текста на стороне разработчиков моделей регулируется их правилами.

Можно ли отправлять персональные данные?

Нет, данные необходимо обезличивать перед отправкой.

Что делать при компрометации ключа?

Отключить его, выпустить новый, обновить в сервисах, удалить старый и проверить статистику за последние дни.

Можно ли восстановить утраченный ключ?

После создания ключа в списке отображается только его маска, например, sk1-*******asda. Полное значение ключа восстановить не получится. Если ключ утрачен, выпустите новый.

Если возникнут вопросы, напишите нам, пожалуйста, тикет из панели управления аккаунта (раздел “Помощь и поддержка”), а если вы захотите обсудить, как использовать API AI, или просто пообщаться с коллегами по цеху и сотрудниками Beget – ждем вас в нашем сообществе в Telegram.