Главная / Openai api

Доступ к OpenAI API для разработчиков в России

OpenAI API нужен, чтобы обращаться к моделям GPT из кода: скриптов на Python, расширений IDE, собственных сервисов. Проблема не в самом API, а в том, что запросы к api.openai.com из России упираются в блокировку по региону. Ответ приходит с ошибкой доступа либо соединение просто висит до таймаута.

Эта страница про то, как устроен доступ к OpenAI API, какие ключи и модели вам понадобятся, и как развести трафик так, чтобы через прокси уходили только нужные приложения, а не вся машина целиком. Последнее мы решаем своим продуктом Proxy Control, о нём в конце.

Что такое OpenAI API и зачем он нужен

ChatGPT, это веб-интерфейс. OpenAI API, это программный доступ к тем же моделям по HTTP. Вы отправляете POST-запрос с телом в JSON, получаете ответ модели. Разница принципиальная: API встраивается в код, работает без браузера, оплачивается по токенам, а не по подписке на чат.

Базовый эндпоинт: https://api.openai.com/v1/. Внутри несколько семейств методов. Старый /v1/chat/completions (Chat Completions) до сих пор поддерживается и совместим с массой библиотек. Новый /v1/responses (Responses API) OpenAI предлагает как основной интерфейс для новых проектов. Если вы видите в туториале другой код с completions вместо responses, туториал просто старее, оба варианта живые.

Зачем API бизнесу и разработчику, если есть чат в браузере. Через API нейросеть встраивается в продукт: чат-бот поддержки клиентов отвечает на сайте без участия человека, скрипт разбирает почту и складывает ответы в базу, IDE подсказывает код прямо в редакторе. Всё это работает по расписанию и на потоке, чего с ручным чатом не сделать. Плюс вы платите за фактический объём токенов, а не за место в подписке, которое может простаивать.

Конкретный формат запросов, параметров и ответов смотрите в официальной документации OpenAI, она меняется и мы не будем её переписывать.

Ключ OpenAI API

Чтобы обращаться к API, нужен ключ. Он создаётся в личном кабинете на platform.openai.com в разделе API keys и выглядит как строка, которую вы передаёте в заголовке Authorization: Bearer <ключ>. Один аккаунт может держать несколько ключей, это удобно, чтобы разделить проекты и при утечке отозвать один, не трогая остальные.

Про создание и хранение ключа мы написали отдельно: openai api key. Коротко о безопасности: ключ не коммитят в репозиторий и не зашивают в клиентский код. Держите его в переменной окружения или в секрет-хранилище, а в приложение подтягивайте оттуда.

export OPENAI_API_KEY="sk-..."
from openai import OpenAI
client = OpenAI() # ключ подхватится из OPENAI_API_KEY

Если ключ всё-таки попал в публичный репозиторий или лог, считайте его скомпрометированным. Немедленно отзовите его в разделе API keys кнопкой revoke и создайте новый. OpenAI сканирует публичные репозитории и иногда сам отзывает засветившиеся ключи, но полагаться на это не стоит: между утечкой и отзывом кто-то успеет потратить ваши деньги. Именно поэтому ключ на прокси-канале не должен уходить через домашний IP, где он засветится в логах провайдера, об этом дальше в разделе про маршрутизацию.

Про «бесплатные ключи OpenAI»

Запросов вида «openai api бесплатно» и «бесплатные api ключи openai» много, поэтому скажем прямо. Официального бесплатного ключа с полным доступом к GPT-5 и другим моделям OpenAI не выдаёт. Новым аккаунтам иногда доступен пробный кредит, но это временно и зависит от условий платформы. Чужие «бесплатные ключи», которые раздают на сайтах, это либо чей-то платный ключ, который скоро отзовут, либо приманка. Не используйте их: платить по чужому счёту или получить бан аккаунта, оба варианта плохие.

Модели и совместимость

Через API доступны модели семейства GPT для текста и кода, а также отдельные модели под эмбеддинги, изображения и аудио. Список моделей и цены OpenAI держит на своей странице pricing, там же указано, что за модель сколько стоит за миллион токенов. Мы не приводим цифры здесь, потому что они регулярно меняются, и держать их в актуальном виде на стороннем сайте невозможно.

Получить актуальный перечень моделей можно и программно, через GET /v1/models. Ответ приходит в JSON со списком идентификаторов вроде gpt-4.1 или gpt-5, которые вы потом подставляете в поле model запроса. Для кода обычно берут модели посвежее, они лучше держат контекст и точнее в языках программирования. Качество ответа зависит не только от модели, но и от того, как собран запрос: системный промпт, температура, ограничение на длину вывода.

Отдельно про формулировку «openai совместимый api». Так называют сторонние сервисы и локальные раннеры, которые повторяют формат запросов OpenAI. Клиентская библиотека OpenAI умеет ходить на другой base_url, и код при этом почти не меняется. Это удобно для миграции, но помните: совместимость на уровне формата не значит совместимость по набору моделей и поведению. Проверяйте на своих задачах.

Первый запрос на Python

Ставим официальную библиотеку:

pip install openai

Минимальный запрос через Responses API:

from openai import OpenAI
client = OpenAI()

resp = client.responses.create(
 model="gpt-4.1",
 input="Напиши функцию на Python, которая парсит ISO-дату"
)
print(resp.output_text)

Если предпочитаете старый интерфейс или библиотека проекта завязана на него:

resp = client.chat.completions.create(
 model="gpt-4.1",
 messages=[{"role": "user", "content": "Привет"}]
)
print(resp.choices[0].message.content)

Перед запуском убедитесь, что переменная OPENAI_API_KEY доступна процессу. В Windows проверить можно командой echo %OPENAI_API_KEY% в cmd или $env:OPENAI_API_KEY в PowerShell. Если строка пустая, библиотека упадёт с ошибкой аутентификации ещё до сети, тогда дело в окружении, а не в доступе.

Если вместо ответа приходит ошибка соединения или запрос виснет, это чаще всего не код, а сеть: api.openai.com недоступен с вашего IP. Разбор сетевой части ниже.

Стриминг ответа

Для длинных ответов включают потоковый режим (stream), чтобы токены приходили по мере генерации, а не одним куском в конце. Это заметно улучшает отклик в интерактивных инструментах вроде чата в IDE. По HTTP это server-sent events, соединение держится открытым, пока модель отвечает. Тем важнее стабильный канал: обрыв на середине стрима вы увидите сразу.

Ошибки, rate limits и ретраи

К каждому ответу API приходит HTTP-код. Их стоит различать в клиенте, а не ловить всё одним except.

Rate limits привязаны к аккаунту и уровню использования, точные числа смотрите в личном кабинете, они у всех разные. Практический совет: считайте токены заранее и разбивайте большие объёмы на батчи, так вы не упрётесь в лимит на середине задачи и не сожжёте бюджет на повторах.

Экспоненциальная задержка на практике выглядит так: первый повтор через одну секунду, второй через две, третий через четыре и так далее, с ограничением сверху. К каждой паузе полезно добавлять случайный сдвиг, чтобы параллельные запросы не бились в лимит одновременно. Ответ 429 часто несёт заголовок Retry-After, если он есть, ждите ровно указанное время, а не своё. Больше трёх-пяти повторов подряд смысла не имеет: если сервис лежит, лучше вернуть ошибку выше и не копить очередь.

Отдельная категория, которую в России путают с ошибками API: сетевые таймауты и коды доступа по региону. Это не про ваш код и не про лимиты, это про то, что запрос не доходит до серверов OpenAI. Дальше про то, как это чинится.

Доступ из России: маршрутизация трафика

Чтобы обращаться к OpenAI API из России, трафик к api.openai.com нужно провести через прокси или VPN. Тут появляется неудобная деталь Windows: система не умеет разводить трафик по приложениям. Включив системный прокси или VPN, вы заворачиваете туда всё сразу, включая то, что должно ходить напрямую: RDP до рабочей машины, локальные сервисы, банк-клиент.

Мы сделали Proxy Control под эту задачу. Программа поднимает виртуальный сетевой адаптер (TUN) на sing-box, забирает в него весь трафик машины и раздаёт по правилам, привязанным к имени процесса. Каналов четыре:

Вы говорите: python.exe и ваша IDE идут через прокси, всё остальное домой. Скрипт, который дёргает OpenAI API, ходит через прокси и получает ответ. Соседние приложения работают по своему маршруту и о прокси не знают.

Неизвестное блокируется

Логика по умолчанию: приложение, которому канал не назначен, в интернет не выйдет. Новые программы появляются в списке со статусом «ожидает», вы распределяете их вручную. Это сделано намеренно: лучше явный отказ, чем незаметная утечка, когда вы думаете, что запрос ушёл через прокси, а он ушёл домой и вернулся ошибкой региона.

Если приложение вдруг перестало выходить в сеть, скорее всего у него канал «ожидает». Назначьте канал и нажмите «Применить маршруты».

Fail-closed вместо тихой утечки

Если прокси недоступен, прокси-приложения уходят в блок, а не домой. Если узел VPN мёртв, то же самое для VPN-приложений. Продукт скорее откажет в соединении, чем незаметно выпустит ваш ключ и запросы через домашний IP. Для работы с API это важно: запрос к OpenAI не должен случайно уйти напрямую, где он всё равно не пройдёт, а заголовок с ключом при этом засветится в логах провайдера.

Для приложений на прокси мы дополнительно блокируем UDP и IPv6, иначе QUIC ушёл бы мимо HTTP-прокси. DNS работает по DoH, чтобы имена доменов не утекали открытым текстом.

Проверка, что канал действительно тот

Маршрут можно назначить в конфиге и ошибиться, поэтому мы не верим конфигу на слово. Три собственные пробы (копии curl, прибитые к каналам) запрашивают внешний IP и показывают три разных адреса. Если IP канала совпал с домашним, программа пишет про утечку, а не красит индикатор в зелёный.

Живая сверка идёт через локальный API sing-box: видно, каким каналом идёт каждый процесс на самом деле.

chrome.exe → прокси
python.exe → прокси
rustdesk.exe → direct

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

Установка и запуск

Установка простая: распаковать архив и запустить Install.bat. Python и sing-box лежат внутри, интернет при установке не нужен, ставить заранее ничего не требуется.

Доступ активируется ключом вида CPC-XXXXXX-XXXXXX, один ключ на один компьютер. По нему программа получает срок действия и персональные реквизиты прокси.

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

После смены канала у приложения нажмите «Применить маршруты». Показывается подтверждение с отсчётом 10 секунд: сколько будет без сети и что часть соединений оборвётся и восстановится сама. Пока туннель пересобирается, мы ставим блокирующее правило брандмауэра, чтобы трафик не ушёл мимо маршрутов. Он встаёт на несколько секунд, потом продолжает по новому каналу.

Удаление через Uninstall.bat: снимает туннель, правило брандмауэра, задания планировщика, ярлык и папку продукта. Лицензия при этом остаётся привязанной к компьютеру.

Сколько стоит доступ

Подписка на Proxy Control: 495 ₽/мес помесячно, от 395 ₽/мес при оплате за год. Есть тарифы на 2, 3, 6 и 12 месяцев. Это плата за прокси-доступ и саму программу, оплату токенов OpenAI она не заменяет: за API вы платите OpenAI отдельно по их тарифам.

Если вопрос про доступ уже решён и вам нужен только формат запросов, посмотрите разбор эндпоинта api openai com v1. Общее описание продукта и остальные сценарии, на странице Proxy Control.

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

Запрос к API виснет до таймаута. Проверьте, каким каналом идёт процесс на самом деле, через живую сверку. Если он ушёл домой, IP заблокирован по региону, отсюда таймаут. Переназначьте на прокси и примените маршруты.

После смены канала ничего не изменилось. Нужно нажать «Применить маршруты», программа об этом сама напомнит и предложит применить сразу.

Reconnecting в IDE. Если инструмент на канале прокси, каждый обрыв до сервера он показывает явно. Смотрите таймауты в логе, чаще это проблема сети до сервера, а не программы.

Всё сломалось после правки настроек. Нажмите «Закрыть программу», туннель снимется, сеть вернётся в обычный режим. Затем поправьте настройки.

Приходит 401, хотя ключ свежий. Проверьте, что в заголовок попал именно ключ, а не имя переменной, и что перед ним стоит Bearer. Ещё частая причина: скрипт запущен в окружении, где OPENAI_API_KEY не задан или задан старый, перезапустите терминал после смены переменной.

Поддержка в Telegram, регистрация через почту или бота.

Proxy Control для Windows

Программа разводит трафик по приложениям: ИИ-инструменты идут через прокси, остальное напрямую. Подписка от 395 ₽ в месяц при оплате за год.

Скачать и попробовать