RU ▾
Получить API-ключ

Что такое шлюз LLM? Простое объяснение

Шлюз LLM — это единая точка входа между вашим приложением и API одной или нескольких языковых моделей. На этой странице объясняется, что он обрабатывает, когда его добавление оправдано и где располагается этот сервис.

Обновлено

Изометрическая схема, собирающая потоки запросов от приложений и направляющая их на серверы моделей

Ключевые моменты

Убедитесь, что эндпоинт строго соответствует схеме OpenAI chat completions для готовой замены.

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

Реализуйте поддержку потоковой передачи для обработки задержек при длинных генерациях и улучшения пользовательского опыта.

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

Краткое определение

Что такое шлюз LLM? Это сервис или программа, которая находится между вашим приложением и API языковых моделей. Ваше приложение отправляет каждый запрос на один адрес, а шлюз решает, что с ним делать: проверяет, кто запрашивает, выбирает модель или провайдера, применяет лимиты, перенаправляет вызов, фиксирует результат и возвращает ответ. Приложение работает с одним интерфейсом и ему не важно, что находится за ним.

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

Большинство шлюзов предоставляют тот же формат запроса, что и SDK OpenAI. Этот выбор практичен. Почти каждая клиентская библиотека, фреймворк и инструмент уже умеет с ним работать, поэтому вы можете поставить шлюз перед существующим приложением, изменив один базовый URL.

Что делает шлюз

Разные продукты предлагают разные функции, но общий набор выглядит так.

ФункцияЧто это значит на практике
Управление ключамиУправление ключами провайдера хранятся в одном месте. Приложения и коллеги получают свои ключи, которые вы можете отозвать, не затрагивая провайдера.
МаршрутизацияЗапросы направляются к выбранной модели или провайдеру по правилу: по задаче, по пользователю, по стоимости.
РезервированиеЕсли один бэкенд не отвечает или работает медленно, запрос отправляется на другой.
Лимит запросовЛимиты на пользователя или приложение не позволяют одному клиенту исчерпать общую емкость.
Повторные попытки и таймаутыВременные ошибки, такие как HTTP 429, обрабатываются повторными запросами в одном месте, а не в каждом сервисе.
Логирование и отслеживание расходовКаждый запрос фиксируется с указанием токенов, задержки и затрат, чтобы вы видели, кто сколько тратит.
КэшированиеИдентичные запросы могут возвращать сохраненный ответ вместо двойной оплаты.
Защитные проверкиПроверки ввода и вывода, например, удаление персональных данных перед их выходом из вашей сети.

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

Когда он нужен, а когда нет

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

  • Делят ли несколько приложений или коллеги один аккаунт провайдера, и вы не можете узнать, кто сколько тратит?
  • Вы уже зашили ключи провайдеров более чем в одном репозитории?
  • Хотите ли вы переключать модели без повторного развертывания всех сервисов?
  • Вам нужен автоматический переход при ошибках бэкенда?
  • Нужно ли вам вести журнал аудита промптов и ответов?

Если все ответы «нет», пропустите это. Одному боту или внутреннему инструменту нужен базовый URL, ключ, таймаут и цикл повторных попыток. Вы всегда сможете добавить шлюз позже, а поскольку формат запроса одинаковый, изменения будут минимальными. Добавление шлюза на раннем этапе в основном даёт вам ещё один компонент для запуска и отладки.

Где появляются расходы

Шлюз сам может стать центром затрат. Самостоятельно размещённый прокси требует сервера, обновлений и мониторинга. Управляемый обычно берёт плату или маржу с токенов; проверьте текущие тарифы любого продукта, который вы рассматриваете. Сопоставьте это с экономией на кэшировании, маршрутизации к более дешёвым моделям и меньшем количестве сбоев, прежде чем принимать решение.

Три способа получить шлюз

Написать простой слой самостоятельно

Для небольшой команды этого часто достаточно. Обёрточная функция, добавляющая таймаут, повторные попытки при ответах 429 и 5xx, логирующая использование токенов из ответа и выбирающая модель из файла конфигурации, занимает около пятидесяти строк. Вы сохраняете полный контроль и не имеете дополнительных сервисов. Цена в том, что вы поддерживаете её самостоятельно, и каждая новая потребность становится вашим кодом.

Запустить прокси с открытым исходным кодом

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

Использовать управляемый шлюз

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

Где вписывается этот сервис

Open LLM Gateway — не маршрутизатор между поставщиками. Это хостинговое OpenAI-совместимое API для одной модели с открытыми весами, от независимого провайдера и настроенное на ответы без отказов по контенту для законного использования взрослыми. Это не официальное API какого-либо поставщика моделей. ID модели uncensored, а эндпоинт принимает POST /v1/chat/completions и GET /v1/models.

Это делает его чистым бэкендом для вашего собственного шлюза. Если ваш шлюз содержит список поставщиков upstream, добавьте этот как OpenAI-совместимый upstream с базовым URL ниже и отправляйте запросы, которым нужна модель без отказов, на него. Если у вас нет шлюза, вы можете вызывать его напрямую из приложения. В обоих случаях настройка одинакова.

from openai import OpenAI

client = OpenAI(
    base_url="https://api.openllmgateway.com/v1",
    api_key="YOUR_KEY",
)

resp = client.chat.completions.create(
    model="uncensored",
    messages=[{"role": "user", "content": "Explain what a gateway does in two sentences."}],
)
print(resp.choices[0].message.content)

Он поддерживает потоковую передачу через SSE, вызов функций, JSON-режим и обычные параметры сэмплирования. Только текст: без изображений, аудио, векторных представлений или дообучения. Промпты не используются для обучения.

Что учитывать, когда он стоит за вашим шлюзом

Поскольку лимиты — это фиксированные числа, шлюз перед этим API может учитывать их с самого начала. Полный ключ позволяет 8 параллельных запросов и 300 запросов в минуту. Пробный ключ позволяет 2 и 60 соответственно. При превышении лимита API возвращает HTTP 429 с кодом rate_limited или concurrency, а при временной перегрузке добавляется заголовок Retry-After: 5. Установите для шлюза лимит параллельных запросов к upstream на уровне 8 или ниже и убедитесь, что он учитывает заголовок Retry-After.

Ответы содержат X-Request-Id и X-Balance-USD. Логируйте первый для отладки и следите за вторым, чтобы предупреждать вас, прежде чем баланс исчерпается. Потоковый запрос удерживает свой слот до конца потока, поэтому шлюз, буферизующий потоки или оставляющий их неполными, будет тратить емкость впустую.

Контекстное окно составляет 100 000 токенов (промпт плюс завершение), а максимальный размер тела запроса — 8 МБ. Если ваш шлюз добавляет системный промпт или внедряет историю, учитывайте и эти токены.

Токены стоят $0,15 за 1 млн входных и $0,50 за 1 млн выходных токенов, оплата производится из предоплаченного баланса без подписки. Шлюз, логирующий использование токенов, упрощает расчёты. День с 3 млн входных токенов и 500 000 выходных токенов стоит $0,45 + $0,25 = $0,70. Пополнение — от $20 до $500, с бонусом +5% от $50, +10% от $100 и +15% от $200, картой или криптовалютой. Подробности на странице с ценами, неудачные или отклонённые запросы не оплачиваются.

Следующие шаги

Если вы решаете, стоит ли включать шлюз в свою архитектуру, ознакомьтесь с чеклистом для production-шлюзов AI, чтобы проверить необходимые параметры перед запуском. Чтобы протестировать сам эндпоинт, в быстром старте описано изменение клиента в трёх строках, а получение ключа занимает минуту: войдите через Google или по электронной почте и паролю, затем получите пробный баланс $0.50 в один клик. Пробный баланс действителен 7 дней, для него не нужна карта, и он ограничен одним на человека.

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

Вопросы и ответы

Ваш ключ — в одной форме

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

Получить API-ключ
Является ли LLM-шлюз тем же, что и API-шлюз?

Это смежное понятие. LLM-шлюз создан для трафика моделей: он учитывает токены, поддерживает потоковую передачу и может маршрутизировать запросы между моделями или провайдерами.

Является ли Open LLM Gateway маршрутизатором между несколькими поставщиками моделей?

Нет. Это размещённый API, совместимый с OpenAI, для одной модели с открытыми весами (model ID uncensored), предоставляемый независимым провайдером. Он может быть одним из upstream-источников за вашим собственным шлюзом.

Нужен ли шлюз для небольшого проекта?

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

В каком формате запросов работают шлюзы?

Большинство использует формат OpenAI chat completions, поэтому существующие SDK работают после изменения базового URL и ключа. Этот API использует тот же формат.

Какие ограничения должен учитывать мой шлюз для этого API?

Полный ключ позволяет 8 параллельных запросов и 300 в минуту, а пробный ключ — 2 и 60. Соблюдайте заголовок Retry-After при ответах 429.