Миграция с OpenAI API
Как перевести проект с OpenAI на NeuroAPI: замена base_url и ключа, подбор Model ID в каталоге, проверка streaming, tools и полей usage.
NeuroAPI предоставляет OpenAI-совместимый API: для большинства проектов миграция сводится к замене адреса, ключа и идентификаторов моделей, а не к переписыванию кода. Клиенты, которые работают с OpenAI SDK, обычно продолжают работать без изменений структуры запросов и ответов.
Эта страница — практический чек-лист перехода. Она не обещает полную совместимость всех функций: набор поддерживаемых возможностей зависит от выбранной модели, а совместимость всегда определяется парой «модель + формат».
Важно: ключ NeuroAPI — самостоятельный ключ сервиса NeuroAPI, а не официальный ключ OpenAI. Он используется в OpenAI-совместимых SDK, но выдаётся и оплачивается в NeuroAPI.
Что меняется и что остаётся
Меняется:
- Base URL:
https://api.openai.com/v1→https://neuroapi.host/v1. - API-ключ: вместо ключа OpenAI нужен ключ NeuroAPI из личного кабинета.
- Идентификаторы моделей: используется точное
model_nameиз каталога NeuroAPI, а не имя модели OpenAI.
Остаётся:
- OpenAI-совместимый контракт Chat Completions и Responses.
- Привычные SDK: официальная библиотека OpenAI для Python и Node.js, а также совместимые сторонние клиенты.
- Структура запроса и ответа для поддерживаемых моделью функций: сообщения, tools, streaming-события.
Если используется не официальный SDK, а другая библиотека с поддержкой OpenAI-совместимого протокола, порядок тот же: найдите настройки Base URL и API-ключа и подставьте значения NeuroAPI. Конфигурацию удобно держать в переменных окружения, чтобы dev, staging и production отличались только значениями, а не кодом.
Шаг 1. Замените Base URL
Обновите инициализацию клиента. Достаточно одного поля — путь к методу SDK добавляет сам.
import os
from openai import OpenAI
# Было: ключ OpenAI и адрес по умолчанию https://api.openai.com/v1
# client = OpenAI(api_key=os.environ["OPENAI_API_KEY"])
# Стало: ключ NeuroAPI и Base URL NeuroAPI
client = OpenAI(
base_url="https://neuroapi.host/v1",
api_key=os.environ["NEUROAPI_API_KEY"],
)
completion = client.chat.completions.create(
model="<MODEL_ID_ИЗ_КАТАЛОГА>",
messages=[{"role": "user", "content": "Проверка подключения"}],
)
print(completion.choices[0].message.content)import OpenAI from 'openai';
const openai = new OpenAI({
baseURL: 'https://neuroapi.host/v1',
apiKey: process.env.NEUROAPI_API_KEY,
});
const completion = await openai.chat.completions.create({
model: '<MODEL_ID_ИЗ_КАТАЛОГА>',
messages: [{ role: 'user', content: 'Проверка подключения' }],
});
console.log(completion.choices[0].message.content);Для быстрой проверки без SDK используйте cURL:
curl https://neuroapi.host/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $NEUROAPI_API_KEY" \
-d '{
"model": "<MODEL_ID_ИЗ_КАТАЛОГА>",
"messages": [{"role": "user", "content": "Проверка подключения"}]
}'Не добавляйте /chat/completions к Base URL в настройках SDK: адрес должен заканчиваться на /v1 либо на /v1/ ровно в том виде, который просит клиент. Подробнее о путях — в справочнике Base URL и эндпоинты.
Шаг 2. Выпустите ключ NeuroAPI
Создайте ключ в разделе «Токены» личного кабинета и выберите тариф: Пилот, Смарт или Оптимальный. Тариф — свойство ключа, поэтому для разных окружений и интеграций удобно держать отдельные ключи. Пошаговый флоу — в гайде по API-ключу.
Затем замените ключ в окружении проекта:
export NEUROAPI_API_KEY="<NEUROAPI_API_KEY>"
export OPENAI_BASE_URL="https://neuroapi.host/v1"Не переиспользуйте старый ключ OpenAI: он относится к другому сервису и не даёт доступа к NeuroAPI. Не коммитьте новый ключ в репозиторий и не оставляйте его в клиентском коде.
Шаг 3. Сопоставьте Model ID с каталогом
Каталог NeuroAPI использует точные идентификаторы model_name. Имена моделей OpenAI могут совпадать с названиями в каталоге, а могут и не совпадать — угадывать идентификатор нельзя. Порядок действий:
- Откройте каталог моделей и цен или запросите список моделей ключа.
- Скопируйте точное
model_nameиз карточки модели. - Проверьте, что модель доступна на выбранном тарифе.
Список моделей, доступных конкретному ключу, возвращает GET /v1/models:
for model in client.models.list().data:
print(model.id)Если вы используете алиасы, сверьте их в карточке модели: каталог публикует актуальные идентификаторы вместе с ценами и характеристиками. На 18.10.2026 в публичном каталоге было 98 моделей, но состав и цены меняются вместе с публикацией каталога — перед миграцией проверьте актуальные данные на дату перехода.
Если в проекте используется модель, которой нет в каталоге, замена «похожим» именем не сработает: её нужно либо исключить из миграции, либо выбрать функциональный аналог и отдельно проверить поведение.
Отдельно проверьте, откуда приложение берёт ключ: серверная часть, CI-переменные, секреты деплоя и локальные .env-файлы — это разные места, и после замены ключа часть из них может остаться со старым значением. Ключ NeuroAPI не должен попадать в клиентский код, мобильное приложение или публичный репозиторий: для браузерных сценариев используйте серверный прокси.
Шаг 4. Проверьте функции, которые использует проект
Базовый чат-запрос обычно проходит сразу, но реальные проекты чаще ломаются на деталях. Прогоните регрессию по этим пунктам:
- Streaming — порядок и состав событий, обработка завершения и обрывов. Гайд: Streaming.
- Tools и function calling — какие инструменты заявлены в карточке модели и как обрабатывается
tool_choice. Не все модели поддерживают вызов инструментов. - Structured output — поддержка структурированного вывода зависит от модели и формата; проверьте на своём наборе схем.
- Responses API — если проект уже использует
/v1/responses, сохраните тот же формат и сверьте поля ответа. Гайд: Текст. - Изображения — маршруты
POST /v1/images/generationsиPOST /v1/images/edits; синхронный и асинхронный режимы описаны в документации по изображениям. - Поля usage — в ответе приходят поля использования; фактическое списание считается по успешному запросу и единице тарификации модели. Сверьте, что ваш биллинг-учёт читает usage из ответа, а не из зашитых ставок.
- Коды ошибок — статусы и машинные коды могут отличаться от OpenAI; разбор — в справочнике ошибок.
Если проект использует несколько форматов (например, Chat Completions для текста и нативные вызовы для Claude или Gemini), проверяйте каждый формат отдельно: Anthropic Messages и Gemini GenerateContent в NeuroAPI помечены как Beta. См. форматы API.
Чек-лист миграции
- Тестовое окружение. Заведите отдельный ключ и задайте
base_urlдля dev/staging, оставив конфигурацию OpenAI в покое до конца проверки. - Критичные сценарии. Прогоните регрессию: чат, streaming, tools, structured output, изображения, обработка ошибок.
- Модели и стоимость. Сопоставьте каждую используемую модель с каталогом и сравните фактический расход на одинаковом наборе запросов. Цены и пиковые окна смотрите в карточке модели, а не в средних оценках.
- Production и старый ключ. Переключите прод на NeuroAPI после успешного прогона, а старый доступ отключите, когда убедитесь, что трафик полностью переехал.
Не удаляйте старую конфигурацию OpenAI сразу после переключения: она пригодится, если понадобится сравнить поведение на одинаковом запросе или откатить отдельный сервис. После переключения сверьте, что фактические списания соответствуют ожиданиям: единица тарификации указана в карточке модели, а пиковые окна и токеновые пороги могут менять итог. Если в проекте есть собственный калькулятор стоимости, замените зашитые ставки на чтение каталога, иначе оценка разойдётся с реальным счётом.
Переменные окружения
Соберите конфигурацию в одном месте, чтобы dev, staging и production отличались только значениями:
# .env.example — без реальных секретов
OPENAI_API_KEY=<NEUROAPI_API_KEY>
OPENAI_BASE_URL=https://neuroapi.host/v1Python и Node.js SDK читают эти переменные; если приложение использует собственные имена (NEUROAPI_API_KEY, собственный конфиг), обновите их аналогично. Если версия SDK ведёт себя неожиданно, передайте base_url / baseURL явно при инициализации клиента.
Типичные ошибки при миграции
| Статус | Вероятная причина | Что проверить |
|---|---|---|
401 | Ключ не передан, отозван или скопирован с ошибкой | Заголовок Authorization: Bearer …, актуальность ключа в кабинете |
404 | Неверный Base URL, пропущен /v1 или Model ID отсутствует в каталоге | Адрес https://neuroapi.host/v1, точное model_name, тариф ключа |
429 | Сработали лимиты ключа или аккаунта | Лимиты в кабинете, правила повторов в документации |
400 | Параметр или функция не поддерживается выбранной моделью | Карточка модели, форматы API |
Полный список статусов и машинных кодов — в справочнике ошибок. Если клиент продолжает обращаться по старому адресу, поможет восстановление подключения.
Куда дальше
- OpenAI-совместимый API — обзор подхода и отличия от официального ключа.
- Форматы API — что стабильно, а что помечено как Beta.
- Модели и цены — актуальный каталог и ставки в рублях.
- Ошибки и статусы — коды и повторные попытки.
- Интеграции — готовые конфигурации клиентов.
- Быстрый старт — первый запрос с нуля.