Если ваш код написан под OpenAI SDK, сменить провайдера обычно можно одной строкой. Разберём, что при этом меняется, а что нет.
Что меняется
Только база и ключ:
from openai import OpenAI
client = OpenAI(
base_url="https://api.claudexia.tech/v1",
api_key="sk_cdx_ваш_ключ",
)
Всё остальное в коде остаётся: методы, структура сообщений, обработка стрима, парсинг ответа.
Что не меняется
Формат сообщений с ролями, параметры вроде температуры и максимума токенов, стриминг через server-sent events, структура ответа с массивом вариантов. Библиотеки, написанные под OpenAI, продолжают работать.
Где обычно ломается
Имя модели. Идентификаторы у провайдеров разные. Это самое частое место отказа при переезде, и оно всегда даёт понятную ошибку с кодом 400.
Параметры, которых нет. Некоторые специфичные поля поддерживаются не везде. Если вы использовали что-то экзотическое, проверьте отдельно.
Жёстко зашитый домен. Иногда база указана не в конфиге, а прямо в коде в нескольких местах. Грепните проект по api.openai.com, прежде чем радоваться.
Проверка за две минуты
Самый быстрый способ убедиться, что связь есть:
curl https://api.claudexia.tech/v1/chat/completions \
-H "Authorization: Bearer $KEY" \
-H "Content-Type: application/json" \
-d '{"model":"claude-sonnet-4.6","messages":[{"role":"user","content":"скажи ok"}]}'
Если пришёл ответ, дальше проблема будет только в именах моделей или в специфичных параметрах.
Почему это важно для выбора провайдера
Совместимость работает в обе стороны. Переехать к провайдеру легко, уйти от него тоже. Тот, кто заставляет переписывать код под свой формат, держит вас издержками смены, а не качеством.
Мы держим оба формата на одном эндпоинте, Anthropic Messages и OpenAI Chat Completions, именно поэтому. Код, написанный под нас, работает и с другими.
Коротко
Смена базы и ключа, потом проверка имён моделей. Если код был написан под стандартный SDK, переезд занимает минуты, а не спринт.