Перенести проект с прямого Anthropic API на шлюз обычно проще, чем кажется. Код не переписывается: вы меняете адрес, ключ и проверяете имена моделей. Основное время уходит не на правки, а на проверку. Ниже план, который мы сами прошли бы на чужом проекте.
Что меняется и что остаётся
| Параметр | Прямой Anthropic | Шлюз Claudexia |
|---|---|---|
| Адрес для Anthropic SDK | https://api.anthropic.com | https://api.claudexia.tech |
| Адрес для OpenAI SDK | не применимо | https://api.claudexia.tech/v1 |
| Ключ | sk-ant-... | sk_cdx_... |
| Имя модели | ID Anthropic | Стабильные ID шлюза, сверять по GET /v1/models |
| Оплата | Зарубежная карта | Карта РФ или СБП в рублях, есть и оплата криптой |
| Формат запросов | Messages API | Тот же Messages API, плюс Chat Completions на том же эндпоинте |
Цены на модели указаны в долларах за миллион токенов, актуальные на странице моделей. Пополнение картой РФ или через СБП идёт в рублях.
Вызовы SDK, структура сообщений, system, tools и стриминг остаются как были. Если проект написан под OpenAI SDK, перейти можно и без смены клиента, подробности в статье «Переезд на OpenAI-совместимый формат».
Шаг 1. Ключ и баланс
Зарегистрируйтесь на Claudexia, создайте ключ sk_cdx_... в разделе «API-ключи» и пополните баланс небольшой суммой. Для ключа выбирается канал, Premium или Cheap, и срок действия. Сначала возьмите Premium: в нём есть Haiku, которого в Cheap нет.
Ключ положите в менеджер секретов или в .env, который не попадает в git. В код его вписывать не надо.
Шаг 2. Смените адрес и ключ
Для Python и Anthropic SDK:
import os
import anthropic
client = anthropic.Anthropic(
base_url=os.environ["LLM_BASE_URL"],
api_key=os.environ["LLM_API_KEY"],
)
Для TypeScript:
import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic({
baseURL: process.env.LLM_BASE_URL,
apiKey: process.env.LLM_API_KEY,
});
В окружении при этом LLM_BASE_URL=https://api.claudexia.tech, LLM_API_KEY=sk_cdx_... и LLM_MODEL с именем модели. Адрес пишите без /v1: Anthropic SDK сам добавляет путь /v1/messages.
Если код использует OpenAI SDK, адрес с /v1:
import os
from openai import OpenAI
client = OpenAI(
base_url="https://api.claudexia.tech/v1",
api_key=os.environ["LLM_API_KEY"],
)
Для Claude Code достаточно блока env в ~/.claude/settings.json, он разобран в гайде по настройке. Для Cursor, Cline и других редакторов есть отдельные инструкции в разделе руководств.
Шаг 3. Сопоставьте модели
Список моделей, которые видит ваш ключ, отдаёт запрос GET https://api.claudexia.tech/v1/models. Сравните его с тем, что стоит в вашем коде и конфигах. Если модель вызвана по имени, которого в списке нет, шлюз ответит ошибкой. Если ключ работает в канале Cheap, а вы просите Haiku, придёт model_not_in_channel: в Cheap Haiku нет, он есть в Premium.
Проверьте и скрытые места. Имена моделей часто лежат в конфигурации CI, в настройках фоновых задач и в параметрах, которые давно никто не открывал.
Шаг 4. Прогоните проверки
Начните с самого короткого запроса:
curl -sS -w '\n%{http_code}\n' https://api.claudexia.tech/v1/messages \
-H "x-api-key: $LLM_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{"model":"claude-sonnet-5","max_tokens":1,"messages":[{"role":"user","content":"."}]}'
Дальше по списку. Каждый пункт проверяйте отдельным запросом, а не по описанию возможностей на сайте: так вы узнаете реальное поведение именно вашего кода.
| Что проверить | Как |
|---|---|
| Обычный ответ | Запрос на один токен, затем запрос с вашим типичным промптом |
| Стриминг | Включите stream, сравните порядок событий и итоговый текст |
| Инструменты | Вызов с tools, проверка, что ответ содержит tool_use и ваш код его разбирает |
| Изображения и файлы | Если вы их отправляете, прогоните реальный пример |
Заголовки anthropic-beta | Если вы их используете, проверьте каждый заголовок отдельно |
| Самый тяжёлый промпт | Максимальный размер контекста, который вы реально отправляете |
| Ошибки | Неверный ключ и неверное имя модели, чтобы увидеть, как ваш код обрабатывает отказ |
Стоимость сравнивайте по полю usage в ответе: количество входных и выходных токенов умножьте на цену из каталога. Так видно реальный расход, а не оценку.
Шаг 5. Переключайте постепенно
Если у вас пока работает прямой канал, не переносите весь трафик сразу. Заведите долю шлюза в переменной и поднимайте её по шагам:
import os
import random
def pick_base_url() -> str:
share = float(os.environ.get("GATEWAY_SHARE", "0"))
use_gateway = random.random() < share
return os.environ["GATEWAY_URL"] if use_gateway else os.environ["DIRECT_URL"]
Начните с 5% и смотрите на долю ошибок и время ответа. Через сутки поднимите до 25%, потом до 100%. Когда прямого канала нет, пункт отпадает: проверка из шага 4 и есть ваш пилот.
Откат за минуту
Откат нужен всегда, даже если всё прошло гладко. Из-за этого адрес, ключ и модель живут в переменных окружения. Чтобы вернуться, поменяйте три значения (LLM_BASE_URL, LLM_API_KEY, LLM_MODEL) и перезапустите сервис. Код при этом не трогается, деплоя не нужно. Если после переключения что-то не отвечает, начните с диагностики. Если заблокирован аккаунт Anthropic, план восстановления описан в статье «Заблокировали аккаунт Claude», а данные чатов выгружаются отдельно, как в статье «Экспорт данных Claude».
Что говорит Anthropic про шлюзы и что с данными
Документация Claude Code пишет прямо: Anthropic не одобряет, не сопровождает и не проверяет сторонние шлюзы, а маршрутизацию Claude Code на модели не от Claude не поддерживает. Любой шлюз остаётся инфраструктурой его оператора. Ваши промпты и ответы проходят через неё, поэтому прочитайте политику конфиденциальности сервиса и оцените, подходит ли она вашим требованиям. Что нельзя отправлять в модель ни при каком провайдере, описано в статье «Что не стоит отправлять в LLM», а вопросы безопасности собраны в статье «Безопасность и комплаенс».
Регион и политика Anthropic от переезда на шлюз не исчезают. Страница политики регионов вступает в силу 12 ноября 2026, и что она означает для сторонних шлюзов, там не сказано. Мы не даём юридических заключений, а чек-лист на этот случай лежит в статье «Что делать до 12 ноября».
FAQ
Нужно ли переписывать код при переезде на шлюз?
Обычно нет. Меняются адрес, ключ и иногда имя модели. Клиентская библиотека, структура сообщений, инструменты и стриминг остаются прежними.
Какой адрес указывать в Anthropic SDK?
https://api.claudexia.tech без /v1. Для OpenAI-совместимых клиентов адрес с /v1: https://api.claudexia.tech/v1.
Почему шлюз отвечает model_not_in_channel?
Модель недоступна в канале вашего ключа. Haiku есть в канале Premium и отсутствует в Cheap. Проверьте канал ключа в кабинете и список моделей через GET /v1/models.
Как платить за API в рублях?
Баланс пополняется картой РФ или через СБП в рублях, есть также оплата криптой. Цены на модели указаны в долларах за миллион токенов на странице моделей.
Как откатиться, если что-то пошло не так?
Верните прежние значения адреса, ключа и модели в переменных окружения и перезапустите сервис. Поэтому эти три параметра не стоит вписывать в код.