Обход ограничений на доступ к OpenAI API

Для работы нужен доступ к OpenAI API. Мне не хотелось искать способы временной регистрации зарубежных телефонов для получения SMS от OpenAI и оплаты сервиса по карте российских банков.

Я довольно давно пользовался сервисом https://chatgpt-accounts.ru/ для получения аккаунтов для доступа к API. Сервис проверенный, работает нормально, но только как-то зашел на него, а там только доступ к web интерфейсу OpenAI, а вот API нет.

Нашел сервис проксирования запросов к OpenAI API: https://proxyapi.ru/ Но в документации к сервису описан вызов через указание ключа и url прокси в аргументах конструктора.

from openai import OpenAI

client = OpenAI(
    api_key="{PROXY_API_KEY}",
    base_url="https://api.proxyapi.ru/openai/v1",
)

chat_completion = client.chat.completions.create(
    model="gpt-3.5-turbo", messages=[{"role": "user", "content": "Hello world"}]
)

Проверить запрос через прокси можно из командной строки через CURL (строка под Windows):

curl https://api.proxyapi.ru/openai/v1/chat/completions -H "Content-Type: application/json" -H "Authorization: Bearer $PROXY_API_KEY" -d "{\"model\": \"gpt-4-turbo\", \"messages\": [{\"role\": \"user\", \"content\": \"Say this is a test!\"}]}"

Мне нужен был способ передачи параметров через переменную окружения, поскольку нужна была векторная база FAISS и запускал я код в Colab. Название переменной окружения:

from google.colab import userdata
os.environ["OPENAI_API_KEY"] = userdata.get('OPENAI_API_KEY_PROXY')
os.environ["OPENAI_API_BASE"] = "https://api.proxyapi.ru/openai/v1" 

При использовании прокси сервера для доступа к API Proxy используется переменная окружения «OPENAI_PROXY»:

os.environ["OPENAI_PROXY"] = "http://your-corporate-proxy:8080"

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

openai.PermissionDeniedError: Error code: 403 - {'error': {'code': 'unsupported_country_region_territory', 'message': 'Country, region, or territory not supported', 'param': None, 'type': 'request_forbidden'}}

Поэтому при вызове конструктора OpenAI нужно в аргументах передать параметры прокси и API:

os.environ["OPENAI_API_KEY"] = os.getenv("OPENAI_API_KEY")
os.environ["OPENAI_API_BASE"] = os.getenv("OPENAI_API_BASE")

client = OpenAI(
    api_key=os.getenv("OPENAI_API_KEY"),
    base_url=os.getenv("OPENAI_API_BASE")
)

embeddings = OpenAIEmbeddings(
    api_key=os.environ.get("OPENAI_API_KEY"),
    base_url=os.getenv("OPENAI_API_BASE")
)

Ключ и URL у меня был сохранен в файле .env:

OPENAI_API_KEY = "sk-...."
OPENAI_API_BASE = "https://api.proxyapi.ru/openai/v1"

В документации указаны следующие параметры

openai = ChatOpenAI(
    model_name="your-model-name",
    openai_api_key="your-api-key",
    openai_api_base="http://your-custom-endpoint",
    openai_proxy="http://your-proxy-url"
)
Spread the love
Запись опубликована в рубрике IT рецепты с метками . Добавьте в закладки постоянную ссылку.

Обсуждение закрыто.