pimenov.ai

База знаний

LiteLLM — модели по подписке вместо API-ключей для ваших агентов

LiteLLM как локальный шлюз для агентов: подписки ChatGPT, SuperGrok и Copilot вместо API-ключей, виртуальные ключи и раздача endpoint'ов.

Опубликовано

LiteLLM — open-source шлюз между вашими агентами и языковыми моделями. Для нашей темы важна одна его способность: подключать подписки ChatGPT, SuperGrok и GitHub Copilot через OAuth и выдавать их наружу как обычный OpenAI-совместимый API. Руководство покрывает запуск прокси, подключение подписок и раздачу endpoint'ов агентам.

📌
Материал собран по официальной документации и репозиторию LiteLLM 21 августа 2026 года. Собственный запуск автором не выполнялся: команды и поведение сверены с первоисточниками, но не проверены вживую. Подписочные провайдеры зависят от внутренних API платформ и могут ломаться при их изменениях.

Что это такое

LiteLLM — прокси-шлюз, который принимает запросы в формате OpenAI API и переводит их в формат любого из сотни поддерживаемых провайдеров. Клиент видит один адрес и один ключ, а шлюз решает, куда на самом деле пойдёт запрос.

В контексте подписок схема выглядит так:

Агент (OpenBot, Codex, свой скрипт)
      │  обычный OpenAI-запрос + ключ шлюза
      ▼
LiteLLM Proxy :4000
      │  OAuth-токены подписки, обновляются автоматически
      ▼
Бэкенд подписки (chatgpt.com, accounts.x.ai, Copilot)

Шлюз сам логинится в вашу подписку один раз, хранит токены локально и дальше ходит в тот же бэкенд, которым пользуются официальные приложения. Расход идёт из лимитов подписки, а не из платёжного баланса API.

Что ещё умеет LiteLLM

Подписки — только один из источников моделей для этого шлюза. Полная картина шире:

  • API-ключи сотни провайдеров. OpenAI, Anthropic, Google, Azure, Bedrock, локальные модели через Ollama: всё подключается ключами и вызывается в едином OpenAI-формате.
  • Балансировка и фолбэки. Можно описать несколько развёртываний одной модели: шлюз распределяет нагрузку, а при сбое одного провайдера отправляет запрос в другой.
  • Бюджеты и лимиты. На виртуальный ключ, команду или проект назначаются бюджеты, ограничения по числу запросов и списку разрешённых моделей.
  • Учёт расходов. Каждый запрос логируется с моделью, токенами и стоимостью: видно, кто и сколько тратит.
  • Кэширование и guardrails. Повторные запросы можно кэшировать, а на поток навесить проверки содержимого.

Эти возможности выходят за рамки текущего материала и тянут на отдельное руководство. Ниже — только про подписки.

Какие подписки поддерживаются

ПодпискаПровайдерКак логинитьсяСтатус поддержки
ChatGPT Plus/Prochatgpt/device flow: код и ссылка в браузереПолная
SuperGrok / X Premium+xai_oauth/litellm xai-oauth login, PKCE в браузереПолная
GitHub Copilotgithub_copilot/OAuth device flowПолная, с оговоркой по учёту premium-запросов
Claude Pro/Maxнет самостоятельного провайдераpass-through токена из Claude CodeЧастичная
⚖️
Нюанс по SuperGrok: провайдер xai_oauth/ добавлен недавно, и xAI может ограничивать OAuth-доступ к API в зависимости от тарифа: зафиксированы случаи отказа с HTTP 403 даже при активной подписке. Прежде чем строить на нём связку, проверьте один запрос вручную.

Важное различие по Claude: поддерживаемый сценарий — это Claude Code, который авторизовался по подписке Max и пропускает трафик через LiteLLM для учёта и лимитов. Превратить подписку Claude в универсальный API для произвольных агентов через LiteLLM нельзя.

Быстрый запуск прокси

Что понадобится: Python 3.10+ (начиная с LiteLLM 1.84.0 более старые версии Python не поддерживаются), браузер для OAuth-логина и хотя бы одна активная подписка из таблицы выше.

Шаг первый — установить LiteLLM с прокси:

uv tool install 'litellm[proxy]'

Вариант через pip install 'litellm[proxy]' тоже существует, но на Python 3.9 pip молча поставит устаревшую ветку 1.83, поэтому надёжнее uv tool install: он сам поднимет совместимую версию Python.

Шаг второй — создать config.yaml со списком моделей:

model_list:
  - model_name: chatgpt-sub        # имя, которое увидят клиенты
    litellm_params:
      model: chatgpt/gpt-5.4       # подписка ChatGPT
  - model_name: grok-sub
    litellm_params:
      model: xai_oauth/grok-4.1    # подписка SuperGrok / X Premium+
  - model_name: copilot-sub
    litellm_params:
      model: github_copilot/gpt-4o # подписка GitHub Copilot
💡
Совет: имена моделей в правой части меняются. Перед настройкой проверьте актуальный список через /models уже запущенного прокси или в документации провайдера.

Шаг третий — пройти логин подписками. Для SuperGrok есть отдельная команда:

litellm xai-oauth login

Провайдеры chatgpt/ и github_copilot/ запускают device flow при первом обращении: LiteLLM печатает код и ссылку, вы открываете ссылку, входите в аккаунт и вводите код. Токены сохраняются локально и обновляются автоматически.

Шаг четвёртый — запустить прокси:

litellm --config config.yaml --port 4000

Раздача endpoint'ов агентам

OpenBot

В .env OpenBot укажите адрес шлюза и его ключ:

OPENAI_BASE_URL=http://127.0.0.1:4000
OPENAI_API_KEY=<ключ LiteLLM>
BOT_MODEL=chatgpt-sub

Одна переменная OPENAI_BASE_URL переключает на шлюз весь deployment OpenBot. Подробнее об установке самого OpenBot — в руководстве OpenBot — открытые ИИ-сотрудники на вашей инфраструктуре.

Codex CLI

В ~/.codex/config.toml добавьте провайдера:

model = "chatgpt-sub"
model_provider = "litellm"

[model_providers.litellm]
name = "litellm"
base_url = "http://127.0.0.1:4000/v1"
wire_api = "responses"

Блок провайдера устроен по тому же шаблону, что и подключение любого OpenAI-совместимого эндпоинта к Codex; имена моделей берутся из model_name в конфиге LiteLLM.

Виртуальные ключи для разных агентов

По умолчанию прокси обслуживает всех одним мастер-ключом. Для раздельного доступа LiteLLM умеет виртуальные ключи: каждому агенту выдаётся свой sk-... со своим бюджетом, лимитами и списком разрешённых моделей. Для этого режима нужна PostgreSQL и переменная DATABASE_URL, ключи создаются через /key/generate или веб-интерфейс прокси.

Полезные сценарии

Сценарий 1. Агент на подписке ChatGPT без API-бюджета

Задача: запустить агента на уже оплаченной подписке ChatGPT Plus/Pro.

Условие: установленный LiteLLM, активная подписка, в config.yaml добавлена модель chatgpt/.

Что делать: запустить прокси, пройти device flow по напечатанной ссылке, указать агенту адрес http://127.0.0.1:4000/v1 и имя модели из конфига.

Результат: агент отвечает через подписку; в логах прокси виден прошедший запрос, а списание идёт из лимитов подписки.

Ограничение: подписочный бэкенд ChatGPT не принимает поля лимитов токенов (max_tokens и родственные) — LiteLLM вырезает их сам, но агент, который жёстко рассчитывает на них, может вести себя иначе.

Сценарий 2. Несколько подписок за одним адресом

Задача: дать разным агентам разные модели, не заводя под каждую отдельную интеграцию.

Условие: в config.yaml описаны две-три подписки, например chatgpt-sub и grok-sub.

Что делать: ничего дополнительно. Агент выбирает подписку именем модели в запросе: chatgpt-sub уходит в ChatGPT, grok-sub — в SuperGrok.

Результат: curl http://127.0.0.1:4000/v1/models показывает оба имени, и каждый запрос попадает в свою подписку.

Ограничение: у Copilot-провайдера есть открытая проблема с учётом premium-запросов в длинных агентных сессиях — расход подписки Copilot может быть выше ожидаемого, следите за дашбордом GitHub.

Сценарий 3. Пул подписок с балансировкой

Задача: несколько аккаунтов ChatGPT должны работать как единый ресурс с переключением по квотам.

Условие: две и больше подписок ChatGPT/Codex.

Что делать: для этой задачи LiteLLM замените на codex-lb — он специализируется на пулах ChatGPT-аккаунтов, следит за квотами и умеет sticky-привязку потоков. Настройка описана в руководстве codex-lb — балансировщик нескольких ChatGPT/Codex-подписок.

Результат: клиенты знают один endpoint, а выбор аккаунта происходит на уровне балансировщика.

Ограничение: codex-lb работает только с экосистемой ChatGPT/Codex; Claude или Grok через него не подключить.

Проверка результата

Минимальные признаки рабочей связки:

  1. Прокси запущен, curl http://127.0.0.1:4000/v1/models возвращает JSON со списком моделей из конфига.
  2. Тестовый запрос к подписочной модели возвращает осмысленный ответ:
curl http://127.0.0.1:4000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <ключ LiteLLM>" \
  -d '{"model": "chatgpt-sub", "messages": [{"role": "user", "content": "Reply with OK only."}]}'
  1. Агент, направленный на прокси, отвечает, а в логах LiteLLM виден его запрос и провайдер, в который тот ушёл.

Ограничения и риски

  • Подписки остаются подписками. Квоты никуда не деваются: активные агенты быстро расходуют недельный лимит, а у OpenBot это значит, что все боты делят одну квоту.
  • Зависимость от внутренних API. Подписочные провайдеры ходят в бэкенды официальных приложений. Изменение авторизации или API со стороны платформы может сломать провайдера до выхода исправления.
  • Известный сбой провайдера ChatGPT. Есть открытый баг: в ряде окружений бэкенд отвечает проверкой Cloudflare вместо JSON, и запрос падает с 403. Если столкнётесь, провайдер в вашем окружении фактически не работает — проверяйте один запрос вручную до настройки агентов.
  • Tool calling обязателен для агентов с инструментами. Не всякая модель в подписочном каталоге умеет вызывать инструменты; без этого агент вроде OpenBot не сможет управлять своим компьютером.
  • Условия платформ. Используйте подписочный доступ для собственных аккаунтов и в разумных объёмах: формально такие сценарии находятся в серой зоне условий использования.
  • Claude — особый случай. Самостоятельного подписочного провайдера Anthropic в LiteLLM нет; для агентов Claude подключается обычным ANTHROPIC_API_KEY.

Ссылки

Факты, команды и конфигурации проверены по официальной документации и репозиторию LiteLLM 21 августа 2026 года.

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

Связанные материалы

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

Если захотите обсудить, как это применить у себя или в команде — пишите в Telegram @pimenov