Переезд с OpenRouter: как перенести код, ключи и идентификаторы моделей
Переезд с OpenRouter на LLM Mart сводится к трём правкам: base_url, ключ и поле model. Адрес для OpenAI SDK — https://www.llmmart.ru/api/v1, ключ выпускается в кабинете, а идентификаторы большинства моделей пишутся так же, как в OpenRouter. Отдельно проверьте алиасы, суффиксы вроде :free и параметры маршрутизации.
Содержание
Что меняется при переезде с OpenRouter
API OpenRouter повторяет схему OpenAI: тот же POST /chat/completions, те же messages, stream и tools. LLM Mart принимает тот же формат, его OpenAI-маршруты совместимы со снимком API OpenAI от 9 июля 2026 года. Поэтому код почти не переписывается: меняются адрес, ключ и местами поле model.
| Что | OpenRouter | LLM Mart |
|---|---|---|
| Base URL для OpenAI SDK | https://openrouter.ai/api/v1 | https://www.llmmart.ru/api/v1 |
| Ключ | sk-or-v1-… | sk-router-… |
| Заголовок | Authorization: Bearer | Authorization: Bearer или x-api-key |
| Список моделей | GET /api/v1/models | GET /api/v1/models, только модели ключа |
| Оплата | карты, AliPay, USDC | рубли: карта или счёт юрлицу |
Пополнить баланс на openrouter.ai нужно отдельно. Его разбирает страница о том, как пополнить OpenRouter из России: LLM Mart чужие аккаунты не пополняет и выдаёт собственный ключ.
Шаг 1. Ключ (API key) и переменные окружения
Ключ OpenRouter к LLM Mart не подойдёт: у сервисов разные аккаунты и балансы. Выпустите новый ключ по инструкции по созданию API-ключа.
Регистрация
Создайте аккаунт на llmmart.ru: личный для себя или организацию для команды.
Баланс
Пополните баланс в рублях картой или выставьте счёт на юрлицо.
Модели
В разделе «Модели» включите те, что вызывал код на OpenRouter.
Ключ
В разделе «API-ключи» выпустите ключ вывода sk-router-… и сразу сохраните секрет: он показывается один раз.
Держите адрес и ключ в переменных окружения, а не в коде. Тогда переезд и откат сводятся к смене двух значений. До переезда там стояли https://openrouter.ai/api/v1 и ключ sk-or-v1-…, после него:
export LLM_BASE_URL="https://www.llmmart.ru/api/v1"
export LLM_API_KEY="sk-router-…"Шаг 2. base_url в Python, JavaScript и curl
В OpenAI SDK для Python замените base_url и api_key, остальной вызов остаётся прежним. Рекомендуемая версия пакета в документации LLM Mart: openai==2.45.0.
import os
from openai import OpenAI
client = OpenAI(
base_url=os.environ["LLM_BASE_URL"],
api_key=os.environ["LLM_API_KEY"],
)
completion = client.chat.completions.create(
model="deepseek/deepseek-v4.1-flash",
messages=[{"role": "user", "content": "Привет"}],
)
print(completion.choices[0].message.content)В Node.js те же правки задаются полями baseURL и apiKey. Пример ниже читает ответ потоком. Документация рекомендует пакет openai@6.45.0.
import OpenAI from "openai";
const client = new OpenAI({
baseURL: process.env.LLM_BASE_URL,
apiKey: process.env.LLM_API_KEY,
});
const stream = await client.chat.completions.create({
model: "deepseek/deepseek-v4.1-flash",
messages: [{ role: "user", content: "Привет" }],
stream: true,
});
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content ?? "");
}Для curl путь пишется целиком, клиент ничего не дописывает сам:
curl -s "$LLM_BASE_URL/chat/completions" \
-H "Authorization: Bearer $LLM_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"deepseek/deepseek-v4.1-flash","messages":[{"role":"user","content":"Привет"}]}'Шаг 3. Идентификаторы моделей (model id)
Оба каталога используют формат author/slug. Мы сверили публичный список GET /api/v1/models OpenRouter с каталогом LLM Mart 11 ноября 2026 года: у большинства моделей идентификаторы совпали символ в символ. Расхождения есть у алиасов, бесплатных версий и части эмбеддингов.
| В OpenRouter | В LLM Mart | Что сделать |
|---|---|---|
deepseek/deepseek-v4.1-flash | deepseek/deepseek-v4.1-flash | ничего |
anthropic/claude-sonnet-5.5 | anthropic/claude-sonnet-5.5 | ничего |
~anthropic/claude-sonnet-latest | нет алиаса | укажите версию, например anthropic/claude-sonnet-5.5 |
openai/gpt-5.2:nitro | openai/gpt-5.2 | уберите суффикс маршрутизации |
google/gemma-4-31b-it:free | google/gemma-4-31b-it | версий :free в каталоге нет |
qwen/qwen3-reranker-0.6b | qwen/qwen3-reranker-0-6b | точка в слаге заменена дефисом |
mongodb/voyage-4 | voyageai/voyage-4 | другой автор в id |
openrouter/auto | нет | выберите модель явно |
Суффиксы :nitro, :floor и :exacto в OpenRouter меняют только порядок провайдеров, :free указывает на отдельную бесплатную запись. В документации LLM Mart таких суффиксов нет, поэтому указывайте базовый id. Точное имя берите из каталога моделей: несуществующий id вернёт 404 model_not_found.
Даже при одинаковом id цены в каталогах разные. В каталоге LLM Mart они указаны в рублях и уже с наценкой платформы.
| Модель | Контекст | Ввод / 1M | Вывод / 1M |
|---|---|---|---|
| DeepSeek V4.1 Flash | 1.0M | 22,48 ₽ | 92,6 ₽ |
| Claude Sonnet 5.5 | 1M | 180,82 ₽ | 885,52 ₽ |
| GLM 5.3 Flash | 1.0M | 12,34 ₽ | 41,2 ₽ |
| GPT-6 Luna | 1.1M | 9,64 ₽ | 45,93 ₽ |
Заголовки HTTP-Referer и X-Title, provider и fallback
Заголовки HTTP-Referer и X-OpenRouter-Title нужны OpenRouter для рейтинга приложений, старое имя X-Title он тоже принимает. В документации LLM Mart они не упоминаются, поэтому уберите их из defaultHeaders или extra_headers вместе с остальной привязкой к OpenRouter.
Объект provider в теле запроса есть у обоих сервисов, но читается по-разному. Шлюз LLM Mart учитывает поля only и quantizations, а order, ignore, allow_fallbacks, sort, zdr и max_price не читает. Имена площадок тоже свои: берите их из блока «Доступные площадки» на карточке модели, подробности в описании выбора поставщика и площадки.
Массив models для запасных моделей, route и plugins OpenRouter относит к собственным параметрам. В документации LLM Mart их нет: запасной маршрут там настраивается на стороне платформы и срабатывает без правки кода. Уберите эти поля и проверьте ответ тестовым запросом.
Стриминг (stream) и tools после переезда
С stream: true оба сервиса отдают SSE в формате OpenAI с финальным data: [DONE]. Чтобы соединение не рвалось по таймауту, OpenRouter шлёт в поток комментарии : OPENROUTER PROCESSING. LLM Mart, пока поставщик молчит, примерно раз в 15 секунд пишет : processing. Самописный парсер должен пропускать строки с двоеточием в начале. Официальный SDK делает это сам.
Таймауты у LLM Mart такие: первого события на /chat/completions шлюз ждёт до 10 минут. Если поток уже начался, 60 секунд тишины закрывают соединение с ошибкой, подробно это описано в разделе о потоковой передаче.
Вызов функций передаётся тем же массивом tools с type: "function". Работает он только у моделей с поддержкой tool use: у OpenRouter их ищут фильтром supported_parameters=tools, у LLM Mart смотрят карточку модели. Встроенные инструменты OpenAI вроде File Search и Code Interpreter через шлюз LLM Mart не работают.
Чек-лист переезда и откат (rollback)
- Выпустите ключ
sk-router-…и включите нужные модели. - Замените
base_urlнаhttps://www.llmmart.ru/api/v1через переменную окружения. - Сверьте каждый
modelс каталогом, уберите алиасы~…и суффиксы:nitro,:free. - Удалите
HTTP-Referer,X-OpenRouter-Title,models,routeиplugins. - Прогоните обычный запрос, поток и вызов
tools, проверьтеusageв ответе. - Сравните расход за неделю в калькуляторе стоимости токенов.
Для отката верните в LLM_BASE_URL и LLM_API_KEY прежние значения и вызывайте прежние id. Если вы ещё выбираете замену, сравните сервисы в обзоре аналогов OpenRouter или прочитайте, что такое OpenRouter. Условия LLM Mart собраны на странице аналога OpenRouter с оплатой в рублях.
Частые вопросы
Как перенести код с OpenRouter?
Замените base_url на https://www.llmmart.ru/api/v1 и ключ OpenRouter на ключ LLM Mart sk-router-…, остальной вызов OpenAI SDK остаётся прежним. Затем сверьте поле model с каталогом: большинство идентификаторов совпадает, но алиасы ~…-latest и версии :free придётся заменить. Удалите заголовки HTTP-Referer и X-OpenRouter-Title и отправьте тестовый запрос.
Совпадают ли идентификаторы моделей OpenRouter и LLM Mart?
У большинства моделей да: deepseek/deepseek-v4.1-flash или anthropic/claude-sonnet-5.5 пишутся одинаково. Расхождения есть у алиасов вроде ~anthropic/claude-sonnet-latest, бесплатных версий :free и части эмбеддингов, например mongodb/voyage-4 в LLM Mart записан как voyageai/voyage-4. Сверку публичных списков обоих сервисов мы провели 11 ноября 2026 года; каталоги обновляются, поэтому проверяйте каждый id по каталогу перед выкладкой.
Подойдёт ли ключ OpenRouter для LLM Mart?
Нет. Ключ OpenRouter начинается с sk-or-v1- и привязан к балансу на openrouter.ai. Для LLM Mart нужен собственный ключ вывода sk-router-…, его выпускают в разделе «API-ключи» кабинета. Секрет показывается один раз, поэтому сразу сохраните его в переменную окружения или хранилище секретов, не в репозиторий.
Как пополнить OpenRouter из России?
В FAQ OpenRouter перечислены банковские карты, AliPay и криптовалюта USDC, рублёвой оплаты там нет. LLM Mart баланс openrouter.ai не пополняет. Если нужен сам API, можно перейти на ключ LLM Mart: оплата в рублях картой или по счёту на юрлицо, формат запросов прежний, OpenAI-совместимый.
Работают ли стриминг и tools после переезда?
Да, формат тот же: stream: true отдаёт SSE с финальным [DONE], а функции передаются массивом tools. В LLM Mart вызов инструментов работает у моделей с поддержкой tool use, это видно в карточке модели. Встроенные инструменты OpenAI вроде File Search и Code Interpreter через шлюз не работают.
Комментарии 0