Добавьте облачные модели каталога в Jan, не отступая от local-first.

Updated 2026-07-29

Jan по замыслу запускает модели на вашей машине, а её настройки Model Providers принимают любой OpenAI-совместимый эндпоинт на те дни, когда локального недостаточно: добавьте провайдера, установите Base URL в https://api.apisrouter.com/v1, вставьте один ключ — и id Claude, GPT, Gemini и DeepSeek присоединятся к вашей локальной линейке.

Короткий ответ: один провайдер в Settings.

Откройте Settings в Jan и перейдите в Model Providers. Нажмите плюс рядом со списком провайдеров, чтобы добавить кастомного провайдера, дайте ему имя (APIsRouter), и в свежих сборках выберите формат OpenAI API, когда диалог спросит (Jan v0.8.1 добавил селектор формата OpenAI-или-Anthropic; для шлюза выбирайте OpenAI). Затем заполните два поля, которые имеют значение: Base URL https://api.apisrouter.com/v1 и ваш API-ключ. Добавьте нужные модели по id: документация Jan прямо говорит, что свойство id должно совпадать с именем модели, которое обслуживает эндпоинт, так что копируйте id из листинга каталога (claude-sonnet-4-6, gpt-5.4-mini, gemini-3.5-flash), а не вводите по памяти. Сохраните — и id появятся в селекторе моделей рядом с тем, что вы запускаете локально. Формулировки менялись между релизами (в старых версиях эта область называлась Remote Engines), так что относитесь к провайдеру, формату, URL, ключу, моделям как к стабильному скелету.

Name:        APIsRouter
API Format:  OpenAI          (v0.8.1+ selector)
Base URL:    https://api.apisrouter.com/v1
API Key:     sk-YOUR-APISROUTER-KEY

Models: add ids that match the endpoint, e.g.
  claude-sonnet-4-6, gpt-5.4-mini, gemini-3.5-flash

Как Jan относится к удалённым провайдерам.

Jan (menloresearch на GitHub, около 44K звёзд) — десктопный клиент local-first: модели загружаются на вашу машину, работают через llama.cpp и функционируют офлайн, причём приложение даже выставляет собственный OpenAI-совместимый сервер на http://127.0.0.1:1337/v1 для других инструментов. Удалённые провайдеры — это осознанная вторая полоса, для моделей, слишком больших для локального запуска, или задач, заслуживающих топового качества. Кастомный провайдер в формате OpenAI — это простое описание эндпоинта: base URL, ключ, объявленные id моделей. Разговоры с этими id уходят как стандартные запросы chat-completions с id в качестве строки модели, так что мультивендорному шлюзу нужна ровно одна запись. Claude для тщательного письма, DeepSeek для объёмной суммаризации, Gemini для скорости, один ключ за всеми ними. Философское соответствие лучше, чем звучит на первый взгляд. Пользователи local-first склонны осознанно относиться к тому, что покидает машину, и шлюз держит удалённую полосу так же осознанной: один эндпоинт для файрвола, один лог использования для чтения, один баланс, который двигается только тогда, когда вы решили что-то отправить наружу. В локальной полосе ничего не меняется; загруженные модели продолжают работать офлайн ровно как прежде.

Объявление моделей: контракт id.

Jan не подтягивает за вас каталог кастомного эндпоинта; модели, которые вы объявляете, — это модели, которые вы получаете, и id — это контракт. Авторитетное написание берётся из листинга /v1/models шлюза, включая версионные суффиксы. Объявленный id, разошедшийся с листингом, даёт ошибки not-found только тогда, когда эта модель выбрана, что выглядит как ненадёжный провайдер, пока вы не сравните строки. Объявляйте осознанно. Селектор local-first работает лучше всего, когда удалённых строк немного и они целенаправленны: один быстрый id для повседневных удалённых обращений (gpt-5.4-mini или claude-haiku-4-5-20251001), один топовый id для работы, которая оправдывает уход с машины (claude-sonnet-4-6), и какой-нибудь специалист, которого заслуживает ваша нагрузка (deepseek-v4-flash для длинных многоязычных суммаризаций, gemini-3.5-flash, когда фича — это латентность). Каждую строку легко добавить позже; вставленный целиком каталог — это шум, который вы будете прокручивать ежедневно. Если вы также используете локальный API-сервер Jan, чтобы обслуживать другие инструменты, держите ментальную модель ясной: этот сервер — это Jan в роли провайдера на 127.0.0.1:1337/v1; запись кастомного провайдера — это Jan в роли клиента. Эти два независимы, и настройка одного никогда не влияет на другое.

curl -s https://api.apisrouter.com/v1/models \
  -H "Authorization: Bearer $APISROUTER_API_KEY" | head -50
# declare these ids verbatim in the provider's model list

Выбор того, какие разговоры покидают машину.

Поскольку удалённое использование предоплачено и измеряется по ключу, стоимость удалённой полосы — это число, которое вы читаете, а не подписка, о которой вы гадаете. Прогоните месяц вашего реального разделения, и лог использования скажет вам точно, во что обходится уход с машины, по модели, по дню.

  • Повседневные удалённые обращения — быстрые вопросы, переписывание, переводы — принадлежат быстрому уровню: gpt-5.4-mini и claude-haiku-4-5-20251001 отвечают быстро и почти не трогают баланс.
  • claude-sonnet-4-6 — это шаг вверх для работы, с которой локальная модель явно не справляется: длинное тщательное черновое письмо, тонкий код-ревью, анализ, который вы будете пересылать дальше.
  • gemini-3.5-flash заслуживает своей строки за счёт латентности; на коротких интерактивных обращениях она ощущается ближе всего к отзывчивости локальной модели.
  • deepseek-v4-flash — объёмный выбор для суммаризации длинных документов, которые вы не стали бы скармливать маленькой локальной модели.
  • Держите приватные материалы полностью на локальных моделях; разделение между полосами — это и есть смысл запуска Jan как такового.

Оплата по факту · дешевле официальных цен

Selected models are priced below official list prices. Exact input, output, cache, and per-request prices are shown for each model.

МодельОфициальная ценаНаша цена
Claude Haiku 4.5 20251001$1.00 / $5.00 per M$0.80 / $4.00 per M
Claude Sonnet 4.6$3.00 / $15.00 per M$2.40 / $12.00 per M
GPT-5.4 mini$0.75 / $4.50 per M$0.60 / $3.60 per M
Gemini 3.5 Flash$1.50 / $9.00 per M$1.20 / $7.20 per M
DeepSeek V4 Flash$0.14 / $0.28 per M$0.10 / $0.30 per M

Сбои, специфичные именно для Jan.

Ошибки not-found на конкретной модели — это контракт id: объявленный id не совпадает с написанием эндпоинта. Сравните с выводом /v1/models символ в символ. Сбои аутентификации на каждом запросе — это поле ключа. Провайдер, который сохраняется, но никогда не отвечает, обычно имеет проблему с Base URL: суффикс /v1 должен присутствовать, так как Jan добавляет пути маршрута вроде /chat/completions к указанному вами base, и удвоенный или отсутствующий сегмент даёт 404. Если провайдер был создан на более старой сборке, проверьте формат API: v0.8.1 ввёл селектор OpenAI-или-Anthropic, и запись шлюза, случайно установленная в формат Anthropic, говорит не на том диалекте с эндпоинтом /v1/chat/completions. И помните, какую полосу вы отлаживаете. Сбои локальной модели (VRAM, квантизация, настройки llama.cpp) и удалённые сбои (URL, ключ, id) делят одно окно чата, но больше ничего; селектор модели показывает, к какой полосе принадлежит падающий разговор, прежде чем вы начнёте тянуть не за ту ниточку.

Кто добавляет полосу шлюза в Jan.

  • Пользователи local-first, которым иногда нужно топовое качество и которые хотят, чтобы эта редкая полоса была на предоплаченном балансе, а не на подписке у вендора.
  • Разработчики на машинах, которые плохо справляются с большими локальными моделями, использующие Jan как интерфейс, а шлюз — для тяжёлой работы.
  • Пользователи, сознательно относящиеся к приватности, которым нужен ровно один удалённый эндпоинт, о котором нужно рассуждать, который нужно ограждать файрволом и аудировать, вместо одного на каждого вендора.
  • Люди, сравнивающие локальный и облачный вывод на реальных задачах, где удалённые кандидаты — это объявленные строки, а не новые аккаунты.
  • Разработчики без доступа к биллингу конкретного вендора. Доступ на основе пополнения без требования карты убирает зависимость от регистрации у каждого провайдера.

Проверьте эндпоинт и отладьте первое удалённое обращение.

Сначала curl'ните листинг моделей и один chat completion; если оба проходят, всё оставшееся — в записи провайдера. Это также даёт вам точные написания id для объявления. Внутри Jan отправьте одно короткое сообщение на быстрый удалённый id. Ошибки аутентификации — это ключ; not-found — это id; тишина или 404 — это форма Base URL. Если удалённая полоса работает, но кажется медленной на топовом id, это латентность модели, а не проблема конфигурации; reasoning-модели не спешат на длинных обращениях. Как только удалённые обращения начинают работать, консоль APIsRouter показывает модель на запрос, счётчики токенов и расходы. Для пользователя local-first этот лог — необычно приятное чтение: это полная запись всего, что когда-либо покидало машину, по модели, по дню, причём локальная полоса не вносит в неё абсолютно ничего.

curl -s https://api.apisrouter.com/v1/chat/completions \
  -H "Authorization: Bearer $APISROUTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"gpt-5.4-mini",
       "messages":[{"role":"user","content":"ping"}]}'

Частые вопросы

Как добавить кастомного OpenAI-совместимого провайдера в Jan?

Settings, Model Providers, затем плюс, чтобы добавить провайдера. Назовите его, выберите формат OpenAI API в сборках, которые спрашивают (v0.8.1+), установите Base URL https://api.apisrouter.com/v1, вставьте свой ключ и объявите id моделей, совпадающие с листингом эндпоинта.

Почему моя объявленная модель возвращает not-found?

Jan отправляет объявленный id дословно как строку модели, и документация требует, чтобы id точно совпадал с именем модели эндпоинта. Подтяните листинг /v1/models и скопируйте написание, включая версионные суффиксы, вместо ввода id по памяти.

Меняет ли добавление удалённого провайдера то, как работают локальные модели?

Нет. Локальные модели продолжают работать на устройстве через llama.cpp, включая офлайн. Запись провайдера добавляет отдельную удалённую полосу в селектор, и разговоры касаются сети только тогда, когда вы выбираете удалённый id.

Должен ли Base URL включать /v1?

Да: https://api.apisrouter.com/v1. Jan добавляет маршруты вроде /chat/completions к настроенному вами base, так что отсутствующий /v1 даёт 404, и удвоенный тоже. Если запросы падают, сначала прочитайте составленный URL в ошибке, прежде чем менять что-либо ещё.

Может ли Jan достучаться до Claude и Gemini через одну запись провайдера?

Да. В формате OpenAI id модели путешествует как простая строка, так что claude-sonnet-4-6, gemini-3.5-flash, gpt-5.4-mini и deepseek-v4-flash можно объявить все под одной записью, тарифицируемой через один ключ, и переключать по разговору.

Это то же самое, что локальный API-сервер Jan?

Нет. Локальный сервер на 127.0.0.1:1337/v1 — это Jan, обслуживающий свои локальные модели для других инструментов. Запись кастомного провайдера — это Jan, потребляющий удалённый эндпоинт. Это независимые фичи, которые просто совпадают по формату передачи данных OpenAI.