Если у вас на Python уже работает интеграция с OpenAI API, миграция на Promptra — это правка двух строк: api_key и base_url. Через 10 минут вы получаете тот же openai.OpenAI клиент, но с доступом к Claude Opus 4.7, GPT-5.5, Gemini 3.1 Pro, DeepSeek V4 Pro и ещё 30+ моделей за рубли по курсу ЦБ, с оплатой на юр.лицо российское юр.лицо и полным пакетом закрывающих документов через ЭДО. Зарубежная карта, VPN и иностранный аккаунт не нужны — это легальный B2B-сервис в России.
В этой инструкции — пошаговый план миграции на конкретном Python-коде, чек-лист до и после, разбор типовых ошибок (старые SDK, захардкоженные поля ответа, разница между моделями) и финальная проверка через usage, чтобы убедиться, что стоимость запроса считается корректно. Все числа — на 2026-05-31.
TL;DR — миграция за 10 минут
Что меняется в коде:
# Было — OpenAI напрямую
client = OpenAI(api_key="sk-openai-...")
# Стало — через Promptra
client = OpenAI(
api_key="sk-promptra-...",
base_url="https://api.promptra.ru/v1",
)
Что меняется в окружении: получаете ключ Promptra в дашборде, кладёте его в .env, пополняете баланс на юр.лицо по счёту. Что НЕ меняется: пакет openai остаётся, импорты, методы, формат сообщений, tools, stream, response_format. Всё совместимо.
Шаг 1. Получаем ключ и пополняем баланс
Регистрация в Promptra — почта плюс номер телефона, без обязательной привязки карты. Сразу после подтверждения вы попадаете в дашборд, где видны три блока: ключи, баланс и каталог моделей. На каждом ключе можно выставить лимит расхода в рублях и список разрешённых моделей — это полезно, когда команда большая, и вы хотите изолировать staging от продакшена.
Пополнение баланса — это обычный счёт на оплату от юр.лица. Заполняете реквизиты компании (ИНН, КПП, название), получаете счёт PDF, оплачиваете рублёвой платёжкой со своего расчётного счёта. Деньги падают на баланс в течение нескольких часов в рабочее время. По факту оказания услуг формируется акт, счёт-фактура и УПД — отправляются через ЭДО (Диадок, СБИС, Контур). Сервисная комиссия 5% берётся только при пополнении, на токены наценки нет — это принципиальное отличие от реселлеров с маржой 30–300% поверх каждого запроса.
Минимальное пополнение — 1000 ₽, и этого реально хватает на десятки тысяч запросов на дешёвых моделях вроде DeepSeek V4 Pro (30/60 ₽ за 1M) или на сотни сложных вызовов на флагманах. Для пилота 3000–5000 ₽ — достаточно, чтобы прогнать все ваши промты, замерить стоимость одного полезного результата и принять решение о масштабировании.
Шаг 2. Готовим окружение Python
Если у вас уже стоит пакет openai свежей версии — ничего ставить не надо. Если нет:
pip install --upgrade openai>=1.50.0 python-dotenv
Свежий openai нужен, потому что base_url нормально поддерживается с 1.x. Старые версии (например, openai==0.28) использовали глобальные настройки и другой стиль вызова, и они не работают через Promptra корректно. Если у вас старый код — сначала мигрируйте с openai 0.28 на openai 1.x по официальному migration guide OpenAI, и только потом меняйте base_url. Это две разные миграции, лучше не смешивать.
.env файл — стандартный паттерн:
PROMPTRA_API_KEY=sk-promptra-xxxxxxxxxxxxxxxxxxxxxxxx
PROMPTRA_BASE_URL=https://api.promptra.ru/v1
Никогда не коммитьте .env в репозиторий — добавьте его в .gitignore и распространяйте через защищённый канал (1Password, Vaultwarden, секреты CI). Для прод-сервиса используйте секрет-менеджер своего облака — Yandex Lockbox, AWS Secrets Manager и так далее. Подробнее про правильную работу с ключами — в гайде «ChatGPT и Claude API в России: безопасное подключение».
Шаг 3. Меняем код
Берём типичный пример — функцию вызова чата. Было на OpenAI:
import os
from openai import OpenAI
from dotenv import load_dotenv
load_dotenv
client = OpenAI(api_key=os.environ["OPENAI_API_KEY"])
def chat(prompt: str, model: str = "gpt-5-5") -> str:
response = client.chat.completions.create(
model=model,
messages=[
{"role": "system", "content": "Ты — полезный ассистент."},
{"role": "user", "content": prompt},
],
)
return response.choices[0].message.content
Стало на Promptra:
import os
from openai import OpenAI
from dotenv import load_dotenv
load_dotenv
client = OpenAI(
api_key=os.environ["PROMPTRA_API_KEY"],
base_url=os.environ["PROMPTRA_BASE_URL"],
)
def chat(prompt: str, model: str = "claude-sonnet-4-6") -> str:
response = client.chat.completions.create(
model=model,
messages=[
{"role": "system", "content": "Ты — полезный ассистент."},
{"role": "user", "content": prompt},
],
)
return response.choices[0].message.content
Изменений ровно три:
- В конструктор клиента добавлен
base_url. - Имя переменной окружения сменилось с
OPENAI_API_KEYнаPROMPTRA_API_KEY(по желанию — можно оставить старое имя, главное, чтобы значение было ключом Promptra). - Дефолтная модель сменилась на
claude-sonnet-4-6— это самый универсальный дефолт по соотношению цена/качество. Если вам важна совместимость с прежним поведением — оставьтеgpt-5-5, тогда вы фактически продолжите использовать модель того же класса.
Тело функции, формат сообщений, доступ к response.choices[0].message.content — без изменений. Этот код запускается ровно так же, как и до миграции.
Шаг 4. Прогон dry-run и проверка usage
После правки кода первый запуск — это короткий тестовый промт, на котором вы убеждаетесь, что всё работает и стоимость считается так, как вы ожидаете. Добавляем в код печать usage:
response = client.chat.completions.create(
model="claude-sonnet-4-6",
messages=[{"role": "user", "content": "Скажи 'тест пройден' одним предложением."}],
)
print("Ответ:", response.choices[0].message.content)
print("Токенов на вход:", response.usage.prompt_tokens)
print("Токенов на выход:", response.usage.completion_tokens)
print("Всего:", response.usage.total_tokens)
Ожидаемый результат — короткий ответ модели и три числа: prompt_tokens, completion_tokens, total_tokens. Если поле usage пустое или вызов падает с ошибкой — смотрите раздел про типовые ошибки ниже.
Считаем стоимость одного запроса. Для Claude Sonnet 4.6 (210 ₽ за 1M input, 1070 ₽ за 1M output):
PRICES = {
"claude-sonnet-4-6": {"in": 210, "out": 1070}, # руб. за 1M токенов
"claude-opus-4-7": {"in": 350, "out": 1790},
"gpt-5-5": {"in": 350, "out": 2150},
"gpt-5-4": {"in": 170, "out": 1070},
"gemini-3-1-pro": {"in": 140, "out": 860},
"gemini-3-5-flash": {"in": 100, "out": 640},
"deepseek-v4-pro": {"in": 30, "out": 60},
"qwen-3-6-plus": {"in": 20, "out": 130},
}
def cost_rub(usage, model: str) -> float:
p = PRICES[model]
return (usage.prompt_tokens * p["in"] + usage.completion_tokens * p["out"]) / 1_000_000
print(f"Стоимость запроса: {cost_rub(response.usage, 'claude-sonnet-4-6'):.4f} ₽")
На реальном продакшен-пайплайне эту функцию полезно вызывать после каждого запроса и логировать в Метрику или Prometheus — так вы видите фактический счёт в реальном времени и можете срабатывать алерты по аномалиям. Подробнее про правильный учёт расходов — в материале «Стоимость генерации текста через нейросеть».
Шаг 5. Маршрутизация между моделями
Главная выгода Promptra — у вас за одним endpoint лежат все основные модели рынка. Это значит, что вместо жёсткой привязки кода к одной модели вы можете маршрутизировать запросы по типу задачи:
def pick_model(task: str) -> str:
return {
"hard_code": "claude-opus-4-7", # сложный код, агенты — 350/1790 ₽
"long_reason": "claude-opus-4-7", # многошаговое рассуждение
"general_chat": "claude-sonnet-4-6", # типовой чат — 210/1070 ₽
"rag": "claude-sonnet-4-6", # RAG с длинным контекстом
"multimodal": "gpt-5-5", # картинки, multimodal — 350/2150 ₽
"classify": "gemini-3-5-flash", # классификация — 100/640 ₽
"mass_gen": "deepseek-v4-pro", # массовая генерация — 30/60 ₽
"translate": "qwen-3-6-plus", # перевод — 20/130 ₽
}.get(task, "claude-sonnet-4-6") # дефолт — Sonnet, не Opus
def smart_chat(prompt: str, task: str) -> str:
response = client.chat.completions.create(
model=pick_model(task),
messages=[{"role": "user", "content": prompt}],
)
return response.choices[0].message.content
Дефолт здесь — claude-sonnet-4-6, а не Opus: переключаться на флагман нужно осознанно, под конкретный класс задач, а не «на всякий случай». Разбор того, как выбирать модель по соотношению цена/качество — в гайде «Лучшая нейросеть 2026».
Типовые ошибки и как их пофиксить
Ошибка 1: «openai.AuthenticationError: Invalid API key». Проверьте, что в base_url указан именно https://api.promptra.ru/v1, а не базовый URL OpenAI. Ключ Promptra на эндпоинте OpenAI выдаст 401 — это самая частая первичная ошибка.
Ошибка 2: «model_not_found». Имя модели должно быть из каталога Promptra: claude-opus-4-7, claude-sonnet-4-6, gpt-5-5, gpt-5-4, gemini-3-1-pro, gemini-3-5-flash, deepseek-v4-pro, qwen-3-6-plus. Если в коде осталось старое имя вроде gpt-4-turbo или gpt-4o — модели уже не существует, замените её на актуальную из таблицы цен.
Ошибка 3: захардкоженные специфичные поля ответа. Если у вас в коде есть прямые обращения вроде response.choices[0].logprobs.tokens или к internal-полям ответа OpenAI, которые не входят в стандартный совместимый протокол — они могут отсутствовать на Claude или Gemini. Это лечится прокидыванием параметров через extra_body или переписыванием участка на стандартные совместимые поля.
Ошибка 4: использование старого пакета openai==0.28. Этот пакет использует глобальные настройки (openai.api_key, openai.api_base) и старые методы (openai.ChatCompletion.create). Сначала мигрируйте на современный openai >= 1.x по официальному гайду миграции OpenAI, потом меняйте base_url. Старый стиль работает, но это переходный мостик, который надо снимать.
Ошибка 5: Timeout на длинных reasoning-вызовах. Если задаёте большой max_tokens или используете Opus 4.7 с длинным контекстом — клиент по умолчанию может закрыть соединение раньше, чем модель закончит. Поднимите timeout явно:
client = OpenAI(
api_key=os.environ["PROMPTRA_API_KEY"],
base_url=os.environ["PROMPTRA_BASE_URL"],
timeout=300.0, # 5 минут на длинные ответы
)
Ошибка 6: VPN включён. Если у вас на разработческой машине постоянно работает VPN — выключите его на время теста. Promptra работает напрямую из России без VPN, и иногда VPN-маршрут добавляет задержку или ломает SSL-валидацию. Это легальный B2B-сервис, ничего «обходить» не нужно.
Шаг 6. Streaming, tools, structured outputs
После базовой миграции работают все продвинутые возможности OpenAI-совместимого протокола. Стриминг ответа:
stream = client.chat.completions.create(
model="claude-sonnet-4-6",
messages=[{"role": "user", "content": "Расскажи про шесть категорий бизнес-задач для LLM."}],
stream=True,
)
for chunk in stream:
delta = chunk.choices[0].delta.content
if delta:
print(delta, end="", flush=True)
Tool calling (function calling) — работает на Claude и GPT через тот же интерфейс:
tools = [{
"type": "function",
"function": {
"name": "get_weather",
"description": "Узнать погоду в городе",
"parameters": {
"type": "object",
"properties": {"city": {"type": "string"}},
"required": ["city"],
},
},
}]
response = client.chat.completions.create(
model="claude-opus-4-7",
messages=[{"role": "user", "content": "Какая погода в Москве?"}],
tools=tools,
tool_choice="auto",
)
for call in response.choices[0].message.tool_calls or []:
print("Вызов инструмента:", call.function.name, call.function.arguments)
Structured outputs через JSON schema:
response = client.chat.completions.create(
model="gpt-5-5",
messages=[{"role": "user", "content": "Извлеки имя и возраст из текста: 'Алексей, 32 года'."}],
response_format={
"type": "json_schema",
"json_schema": {
"name": "person",
"schema": {
"type": "object",
"properties": {
"name": {"type": "string"},
"age": {"type": "integer"},
},
"required": ["name", "age"],
},
},
},
)
Все три фичи — это стандартный OpenAI-совместимый протокол, и Promptra прокидывает их в нижележащие модели. Подробности по моделям — на странице Claude API за рубли и в каталоге.
Чек-лист миграции
Перед тем как сказать «готово», пройдите по списку:
- Установлен
openai >= 1.50.0, старогоopenai==0.28в зависимостях нет. - В коде клиента задан
base_url="https://api.promptra.ru/v1". - Ключ Promptra лежит в
.envи не закоммичен в репозиторий. - На тестовом промте
usage.prompt_tokensиusage.completion_tokensвозвращаются корректно. - Стоимость одного запроса посчитана по таблице цен и логируется.
- Имена моделей в коде — актуальные из каталога Promptra.
- Если используется tool calling — проверено на Opus 4.7 или GPT-5.5 (не на DeepSeek).
- Timeout клиента поднят до 300 секунд для длинных reasoning-вызовов.
- Прогнаны 100–500 реальных запросов с замером средней стоимости.
- Дашборд показывает расход в реальном времени и совпадает с локальной агрегацией.
После этого можно выкатывать в продакшен. Подробнее про оплату и закрывающие документы для юрлица — в материале «Легально ли использовать OpenAI/Claude на юрлицо в РФ».
Оплата и закрывающие документы
Юрлицо-исполнитель — российское юр.лицо , резидент РФ. После пополнения баланса вы получаете полный пакет закрывающих документов через ЭДО:
- Договор-оферта — публичный, на сайте Promptra.
- Счёт на оплату — формируется в дашборде, после ввода реквизитов компании.
- Акт оказанных услуг, счёт-фактура, УПД — по факту, ежемесячно.
- ЭДО — Диадок, СБИС, Контур по запросу.
Это договор с российским контрагентом, валютный контроль для него не требуется. Расходы на API ложатся в учёт целиком. Подробнее про правовую сторону работы с зарубежными LLM на юрлицо — в официальной странице оплаты и в гайде про легальность.
Что дальше
Если коротко: миграция с OpenAI на Promptra на Python — это смена двух строк в коде и пополнение баланса на юр.лицо. Через 10 минут у вас тот же openai.OpenAI клиент, но с доступом к Claude Opus 4.7, GPT-5.5, Gemini 3.1 Pro и ещё 30+ моделей за рубли по курсу ЦБ, без наценки на токены, с закрывающими документами через ЭДО.
Полезные следующие шаги: разбор моделей по задаче — «Лучшая нейросеть 2026»; сравнение флагманов в кошельке — «Claude Opus 4.7 API за рубли»; подключение Claude Code и Cursor с тем же ключом — «Claude Code в России». А если нужно прикинуть стоимость на вашем трафике, выбрать модель под пайплайн или оформить договор на юр.лицо — напишите команде Promptra в Telegram. Технические вопросы там решаются за один разговор.
📚 Главный гайд по теме: Лучшая нейросеть 2026: какую LLM выбрать под задачу — связанные материалы и обзор всей категории.
Promptra — Russian LLM API aggregator. One OpenAI-compatible endpoint to all flagship models: OpenAI (GPT-5.5, GPT-5.4), Anthropic (Claude Opus 4.7, Sonnet 4.6), Google (Gemini 3.1 Pro, 3.5 Flash), DeepSeek V4 Pro, Qwen 3.6 Plus.
Provider prices 1-to-1 at CBR rate — no markup on tokens. Ruble billing per contract, full closing documents through EDI. No VPN — legal B2B service in Russia.
Try: promptra.ru · model catalog · docs





Top comments (0)