Обновлено: 14 июля 2026
Перевод кода с официального API OpenAI на российский прокси начинается с замены двух строк: base_url и api_key — SDK остаётся прежним, официальным пакетом openai для Python или JavaScript. Это работает, потому что сервисы вроде ProxyAPI и AITunnel реализуют OpenAI-совместимый API с оплатой в рублях. Но две строки — это smoke-test, а не вся миграция: после них нужен чеклист совместимости. Ниже — адреса пяти сервисов, сниппеты и этот самый чеклист.
Как работает OpenAI-совместимость
Формат chat/completions стал массовым стандартом: его понимают SDK, фреймворки и большая часть инструментария вокруг LLM. Прокси поднимает эндпоинт, который принимает запросы в этом формате, а дальше сам ходит к вендорам — OpenAI, Anthropic, Google и остальным.
Клиент openai умеет работать с любым адресом из параметра base_url; ключ при этом выдаёт не OpenAI, а сам сервис — в личном кабинете после пополнения баланса. Приятный побочный эффект: через один эндпоинт доступны модели разных вендоров, включая Claude Sonnet 4.6 и GPT-5.4, — для базовой генерации отдельные аккаунты у вендоров не нужны.
Зачем это разработчику из России, понятно из свойств самих сервисов: оплата картой российского банка, счета для юрлиц, работа без VPN — AITunnel вдобавок держит сервер в России. Переключение решает сетевой и платёжный вопросы без изменения архитектуры кода.
Порядок действий
Сам переезд укладывается в пять шагов: регистрация в сервисе, пополнение баланса, ключ из личного кабинета, замена base_url и api_key в коде, тестовый запрос. Первые три шага проходят в браузере, последние два — в вашем репозитории. Дальше — самое важное: проверка совместимости под ваш стек, о ней в конце.
base_url пяти сервисов
Адреса взяты из документации сервисов:
| Сервис | base_url |
|---|---|
| ProxyAPI | https://api.proxyapi.ru/openai/v1 |
| AITunnel | https://api.aitunnel.ru/v1/ |
| VseGPT | https://api.vsegpt.ru/v1 |
| BotHub | https://openai.bothub.chat/v1 |
| AI-Mediator | https://api.ai-mediator.ru/v1 |
ProxyAPI, BotHub и AI-Mediator прямо заявляют работу официальных SDK; AITunnel и VseGPT описывают свои API как OpenAI-совместимые — на практике это обычно одно и то же, но формулировки сервисов мы передаём точно. Из нюансов: у AITunnel есть авторежим выбора модели "model": "auto" и нативная поддержка Claude Messages API; VseGPT держит собственную реализацию Anthropic API — пригодится, если часть кода написана под SDK Anthropic; BotHub тарифицирует API в режиме pay-as-you-go без подписок, хотя веб-тарифы у него подписочные.
Чем сервисы отличаются по оплате, лимитам и поддержке — в карточках каталога и чеклисте выбора API-прокси. Слэш на конце адреса AITunnel — не опечатка: копируйте base_url в точности как в документации сервиса.
Сниппеты: Python, JavaScript, curl
Код ниже показывает схему подключения; перед запуском подставьте точный идентификатор модели из списка вашего сервиса — id у посредников различаются.
Python — официальный пакет openai, меняются только два аргумента конструктора:
from openai import OpenAI
client = OpenAI(
base_url="https://api.proxyapi.ru/openai/v1",
api_key="КЛЮЧ_ИЗ_КАБИНЕТА_СЕРВИСА",
)
response = client.chat.completions.create(
model="gpt-5.4", # точный id — в списке моделей сервиса
messages=[{"role": "user", "content": "Привет! Ответь одним предложением."}],
)
print(response.choices[0].message.content)
JavaScript / TypeScript — та же пара параметров в конструкторе:
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.aitunnel.ru/v1/",
apiKey: "КЛЮЧ_ИЗ_КАБИНЕТА_СЕРВИСА",
});
const response = await client.chat.completions.create({
model: "gpt-5.4", // точный id — в списке моделей сервиса
messages: [{ role: "user", content: "Привет! Ответь одним предложением." }],
});
console.log(response.choices[0].message.content);
Проверка без SDK — обычный curl к chat/completions:
curl https://api.vsegpt.ru/v1/chat/completions \
-H "Authorization: Bearer КЛЮЧ_ИЗ_КАБИНЕТА_СЕРВИСА" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-5.4",
"messages": [{"role": "user", "content": "Привет!"}]
}'
Совет: вынесите
base_url, ключ и имя модели в переменные окружения или конфиг. Тогда переезд на другой прокси — или откат обратно — сведётся к правке конфигурации без изменения кода.
Стриминг: stream=true
Стриминг — выдача ответа по частям, пока модель генерирует текст, — включается параметром stream=true в том же запросе. AITunnel заявляет стриминг по SSE; документация VseGPT прямо пишет, что поддерживаются и стриминговый, и нестриминговый режимы. Минимальный пример на Python:
stream = client.chat.completions.create(
model="gpt-5.4",
messages=[{"role": "user", "content": "Расскажи про токены"}],
stream=True,
)
for chunk in stream:
print(chunk.choices[0].delta.content or "", end="")
Если у вас чат-интерфейс, проверяйте стриминг в первую очередь: задержка до первого токена и стабильность SSE-соединения у посредника могут отличаться от прямого подключения к вендору. Формат чанков в типовом сценарии стандартный, но обработку финального чанка, блока usage и ошибок посредника прогоните на тестовом ключе.
Что проверить после переключения
Совместимость с форматом OpenAI не гарантирует идентичность всего API. Пройдитесь по короткому чеклисту, прежде чем пускать трафик в продакшен.
- Идентификаторы моделей. У сервисов свои списки моделей, и id могут не совпадать с официальными. Сверьте имена по списку моделей сервиса — обычно он доступен через эндпоинт
/modelsили в панели. - Поддержка нужных эндпоинтов.
chat/completions— база, но embeddings, изображения, аудио или Batch API есть не везде. Например, ProxyAPI заявляет Batch API и кэширование, AI-Mediator — Batch API и до шести одновременных ключей. - Параметры запроса. Нестандартные поля — инструменты, форматы ответа,
logprobs— прогоните на тестовом ключе: часть параметров посредник может игнорировать или не поддерживать. - Лимиты и тарифы. Минимальный депозит, ограничения частоты запросов и наценка на ваши модели — всё это отличается от сервиса к сервису. Наценки видны в таблицах каталога, например у GPT-5.4.
- Блок usage. Сверьте число токенов в ответах со списаниями в кабинете сервиса за первые дни — так вы рано заметите расхождения в тарификации.
- Тайм-ауты и обработка ошибок. Посредник — дополнительное сетевое звено, и его коды ошибок при перегрузке или исчерпании баланса могут отличаться от привычных. Убедитесь, что ваши ретраи и алерты реагируют на них корректно, а тайм-ауты учитывают лишний хоп.
«OpenAI-совместимый» — это заявление сервиса, а не сертификат, и глубина совместимости у всех разная. Финальный источник истины — документация конкретного сервиса, ссылки на неё есть в карточках каталога; десять минут чтения перед миграцией экономят вечер отладки после.
Вопросы и ответы
Нужно ли менять что-то в коде, кроме base_url и ключа?
В типовом сценарии с chat/completions — обычно нет, но это стоит проверить, а не предположить: сверьте идентификаторы моделей и нестандартные параметры. Держите тестовый скрипт, который гоняет ваши основные запросы через новый эндпоинт, — он же пригодится при откате.
Можно ли работать с Claude через OpenAI SDK?
Да, в этом и смысл прокси: модели Anthropic, Google и других вендоров доступны через тот же формат chat/completions. Например, Claude Sonnet 4.6 доступен у нескольких сервисов каталога — сравнение цен есть в таблице модели.
Работает ли стриминг через прокси?
У AITunnel заявлен стриминг по SSE, документация VseGPT подтверждает поддержку стримингового режима; у остальных сервисов проверяйте документацию и тестовый запрос с stream=true. Стриминг через посредника добавляет ещё одно сетевое звено, поэтому смотрите не только на факт поддержки, но и на стабильность соединения под вашей нагрузкой.
Что делать при ошибке «model not found»?
Сверить идентификатор со списком моделей сервиса: имена у посредников могут отличаться от официальных. Список обычно отдаёт эндпоинт /models того же API или страница моделей в панели сервиса.
Как быстро откатиться на официальный API или другой прокси?
Если base_url, ключ и имя модели вынесены в конфигурацию, откат — это замена значений в ней. Такая переносимость — главный аргумент не завязываться на уникальные фичи конкретного посредника; подробнее — в чеклисте выбора API-прокси.