RU ▾

Что такое API-прокси: принципы работы, риски и чек-лист выбора

Многие разработчики, впервые сталкиваясь с «API-прокси», знают лишь, что нужно сменить адрес и ключ для вызова LLM, но не понимают, что происходит внутри. Эта статья с точки зрения DevOps разбирает полный путь запроса, объясняет три процесса: пересылку, ключи и тарификацию, перечисляет три типичные проблемы и даёт чек-лист выбора, а также две команды для самостоятельной проверки.

Обновлено

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

  1. Суть прокси — «пересылка + маппинг ключей + учёт расхода». Ваш запрос проходит дополнительный хоп, и стабильность, и безопасность зависят именно от этого звена.
  2. Три типичные проблемы: неправильное хранение ключей, возврат не той модели, которую вы ожидали, и непрозрачные правила лимитов запросов.
  3. При выборе смотрите не только на цену: проверяйте доступность списка моделей, стандартизацию кодов ошибок и прозрачность квот и лимитов запросов.
  4. Получив ключ, выполните запрос к /v1/models и небольшой запрос. Это позволит устранить большинство проблем в течение десяти минут.

Путь запроса через прокси

Сначала разберёмся с терминами. «Прокси API» — это шлюз между вашим приложением и бэкендом модели. Код отправляет запросы в формате OpenAI, но указывает base_url на шлюз и использует его ключ.

Шлюз обычно выполняет три действия в этом звене.

  • Пересылка запроса: проверка формата тела запроса, добавление параметров по умолчанию при необходимости и передача запроса бэкенду. Ответ бэкенда (включая фрагменты потоковой передачи SSE) возвращается вам в исходном или слегка обработанном виде.
  • Маппинг ключей: у вас есть ключ, выданный шлюзом, который имеет смысл только внутри шлюза. По нему шлюз определяет вашу личность, баланс и доступные модели. Удостоверения, используемые для взаимодействия с бэкендом, хранятся внутри шлюза и не попадают в ваш код.
  • Тарификация и лимиты: после каждого запроса шлюз списывает баланс, умножая количество входных и выходных токенов из usage на цену. Одновременно шлюз считает количество запросов в минуту по ключу и возвращает 429 при превышении лимита.

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

Отличие от прямого подключения к одной модели

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

ПараметрПрямое подключение к одной моделиАгрегированный проксиПрокси с одной моделью
Количество моделейНесколько от самого провайдераДесятки или даже сотниОдна
Формат APIСобственный формат каждого провайдераУнифицирован до формата OpenAIСовместим с OpenAI
Сложность отладкиМинимальная, кратчайшая цепочкаМаксимум: больше всего маппинга имен моделейНизкая, только одна модель
Подходящие сценарииСтабильная работа с одним провайдеромЧастое сравнение и переключение моделейФиксированная модель, предсказуемость

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

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

Три типичные проблемы

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

Ключ прокси — это как предоплаченная карта: кто им владеет, тот тратит ваш баланс. Типичные пути утечки: запись ключа во фронтенд-код, публикация в открытых репозиториях, вставка в тикеты или скриншоты в чатах. Рекомендуется хранить ключ только в переменных окружения на сервере; фронтенд должен обращаться к вашему бэкенду для пересылки запросов. При подозрении на утечку сразу сбросьте ключ; старый должен стать недействительным немедленно. Также проверьте, позволяет ли сервис самостоятельный сброс и становится ли старый ключ недействительным мгновенно, а не «через несколько часов».

Подмена модели

Это самый обсуждаемый вопрос среди агрегаторов: вы запрашиваете A, а получаете более дешёвый B. По документации это сложно определить, можно проверить только по поведению. Вы можете зафиксировать набор тестов с известными ответами, зафиксировать temperature и провести повторные тесты, чтобы убедиться, что стиль вывода остаётся стабильным; или запросить /v1/models и сравнить список с платёжной страницей. Нечёткие названия моделей и значительные различия в поведении одного и того же имени в разное время заслуживают внимания.

Непрозрачные лимиты

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

Чек-лист для выбора прокси-сервиса

Этот чек-лист можно скопировать в документ для оценки и отмечать пункты по мере проверки.

  1. Возвращает ли открытый эндпоинт GET /v1/models список моделей, совпадающий с тем, что на странице тарифов?
  2. Является ли ответ об ошибке структурированным JSON с полями code и message, где для 401, 402, 429 и 503 предусмотрены разные коды?
  3. Указано ли в документации ограничение на количество запросов в минуту для каждого ключа, а не только озвучено в службе поддержки?
  4. Указаны ли точные цифры для длины контекста, максимального количества выходных токенов за один раз и размера тела запроса?
  5. Списание средств происходит точно по количеству токенов из usage, и можно ли в любой момент проверить баланс?
  6. Истекает ли срок действия предоплаченного баланса? Указан ли срок действия пробного баланса?
  7. Можно ли самостоятельно сбросить ключ, и становится ли старый ключ недействительным мгновенно?
  8. Поддерживается ли потоковая передача (streaming), и содержит ли последний чанк статистику usage, что удобно для сверки счетов?
  9. Дано ли четкое однострочное указание, используются ли промпты для обучения?
  10. Честно ли указаны поддерживаемые возможности (например, векторы, изображения, аудио), или информация подаётся размыто?

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

Десятиминутная проверка после получения ключа

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

curl -s https://api.llmzhongzhuan.com/v1/models \
  -H "Authorization: Bearer $API_KEY"

Второй шаг — отправить небольшой запрос и проверить наличие поля usage в ответе и адекватность его значений. В приведенном примере модель просят повторить дату, чтобы увидеть, не выдумывает ли она информацию, которой не может знать. Это грубая проверка поведения, а не строгий тест:

curl -s https://api.llmzhongzhuan.com/v1/chat/completions \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "uncensored",
    "messages": [{"role": "user", "content": "用一句话介绍你自己,然后复述今天的日期是几号。"}],
    "max_tokens": 200
  }' 

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

Параметры нашего сервиса для сверки по чек-листу

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

  • Адрес API: https://api.llmzhongzhuan.com/v1, поддерживает POST /v1/chat/completions и GET /v1/models, аутентификация через Bearer-ключ.
  • Доступна только одна модель с id uncensored; только текст, без векторов, изображений, аудио, видео и дообучения.
  • Контекстное окно составляет 100 000 токенов (ввод плюс вывод), max_tokens по умолчанию 2048, максимум за один раз — 32 000; размер тела запроса не более 8 МБ.
  • Лимит запросов — 300 в минуту на ключ, при превышении возвращается 429; код 503 с upstream_busy означает, что следует повторить запрос позже; при исчерпании баланса или окончании пробного периода возвращается 402 с no_credit.
  • Тарифы: $0,25 за миллион входных токенов и $1,00 за миллион выходных токенов. Предоплата, без подписки, баланс не сгорает.
  • Промпты не используются для обучения.

Конкретные цифры смотрите на странице цен и в документации. Для новых аккаунтов доступен пробный баланс в размере 0,50 долл. США на 7 дней. При регистрации не требуется указывать платёжные данные, поэтому вы можете сначала пройти весь описанный выше процесс проверки.

Часто задаваемые вопросы

В чем главное отличие прокси-сервера от прямого вызова официального API?

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

Как понять, не подменила ли прокси-служба модель?

Проводите тесты с фиксированными вопросами и фиксированным значением temperature, чтобы убедиться в стабильности вывода, и сверяйте список из /v1/models со страницей тарифов. В сервисах с одной моделью неопределенность в этом плане ниже, так как доступен только один id.

Что делать, если ключ прокси-сервиса скомпрометирован?

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

На что в первую очередь смотреть при выборе прокси-сервиса?

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

Какой объем средств лучше использовать для тестирования?

Сначала используйте пробный баланс или небольшую сумму для прохождения тестов по /v1/models и нескольким типичным запросам, а затем постепенно увеличивайте объем использования. Не рекомендуется сразу пополнять счет на крупную сумму.

Для получения ключа достаточно заполнить форму

Создайте аккаунт, скопируйте ключ и измените Base URL. Настройка настолько проста.

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