Jan AI с облачными моделями: Zukko как удалённый провайдер

Jan работает и с локальными, и с облачными моделями. Показываем, как добавить Zukko через Custom Endpoint, выбрать модель по цене и исправить частые ошибки.

6 мин · · разработка

Jan — десктопное приложение для работы с языковыми моделями: локальными, которые запускаются на вашем компьютере, и облачными через API. Подключить в Jan облачные модели можно не только через встроенных провайдеров, но и через собственный адрес, и Zukko добавляется именно так: адрес https://api.zukko.pro/v1 и ключ fetch_... дают модели Claude, GPT и GLM рядом с локальными. Ниже — настройка по официальной документации Jan, выбор формата API, параметры сэмплирования, расчёт стоимости и разбор ошибок.

Как подключить Jan к облачным моделям через свой провайдер

В документации Jan этот сценарий называется Custom Endpoints. Порядок действий:

  1. Откройте Settings → Model Providers.
  2. Нажмите кнопку Add Provider рядом со списком провайдеров.
  3. В окне Add Custom Provider выберите формат API — OpenAI-compatible (вариант по умолчанию).
  4. Заполните поля: Provider name — Zukko, Base URL — https://api.zukko.pro/v1, API key — ваш ключ fetch_....
  5. Нажмите Create.
  6. Проверьте список моделей. При сохранении Jan запрашивает {base_url}/models; Zukko отдаёт список по GET /v1/models, поэтому модели должны появиться сами. Если нет, добавьте их вручную кнопкой + в разделе Models провайдера, вписав id точно, например claude-sonnet-5.
  7. Создайте новый чат и выберите модель провайдера Zukko в списке моделей.
ПолеЗначение
API formatOpenAI-compatible
Provider nameZukko
Base URLhttps://api.zukko.pro/v1
API keyfetch_ваш_ключ
Моделиclaude-sonnet-5, gpt-5.6-sol, glm-5.3-flash и другие

Документация Jan отдельно предупреждает: Base URL должен включать версию API, которую ожидает сервер. Частая ошибка — адрес без /v1, из-за которого каждый запрос заканчивается ошибкой 404. Слэш в конце Jan убирает сам.

Возможности моделей задаются вручную

Для своих провайдеров Jan не определяет автоматически, поддерживает ли модель инструменты, изображения или аудио. Возможности настраиваются для каждой модели отдельно. Включайте их, только если уверены, что модель это поддерживает, и проверяйте на тестовом запросе.

Актуальный список id — GET https://api.zukko.pro/v1/models (см. документацию по моделям) или страница «Модели» в кабинете.

OpenAI-compatible или Anthropic-compatible

Jan умеет работать с обоими форматами, и Zukko принимает оба. Документация Jan подчёркивает, что формат должен совпадать с тем, на котором говорит сервер: при неверном выборе запросы будут падать, даже если адрес и ключ правильные.

Проще всего выбрать OpenAI-compatible с адресом https://api.zukko.pro/v1: шлюз сам конвертирует запросы, и модели Claude работают так же, как GPT и GLM. Если вы всё же выберете Anthropic-compatible, указывайте адрес без /v1 — https://api.zukko.pro, как для других клиентов, которые сами добавляют версию к пути (в документации Jan так же записан пример LiteLLM в Anthropic-режиме). Если получите 404, вернитесь к OpenAI-compatible. Чем различаются форматы, описано в документации о выборе формата.

Резервные ключи и проверка ключей

Для удалённых провайдеров Jan поддерживает несколько ключей. Ключ №1 основной, остальные — резервные: Jan переключается на следующий ключ только при ответах 401, 403 или 429. Настраивается это в настройках провайдера: блок API keys → Advanced → + Add key.

Там же есть кнопка Test keys: Jan вызывает {base_url}/models для каждого ключа и показывает результат — OK, Invalid/revoked (401), Forbidden (403), Rate limited (429) или Network error. Это быстрый способ проверить, что ключ Zukko скопирован правильно.

Учтите: у Zukko ответ 403 с кодом model_not_allowed_for_key означает, что модели нет в списке разрешённых для ключа. Если у резервного ключа список шире, Jan молча переключится на него, и расход уйдёт на другой ключ. Если такое поведение не нужно, держите одинаковые списки моделей на всех ключах провайдера.

Параметры сэмплирования: осторожно с Claude

Для своих провайдеров Jan показывает полный набор параметров: temperature, top-K, top-P, min-P, repetition penalty и другие — и отправляет всё, что вы задали. Документация Jan предупреждает, что сервер может молча игнорировать неподдерживаемые параметры.

Для моделей claude-sonnet-5 и claude-opus-5-5 есть ограничение: запрос может быть отклонён с ошибкой 400, если temperature отличается от 1 или top_p меньше 0.99. Для этих моделей не меняйте temperature и top-P. Для GPT и GLM параметры можно настраивать, проверяя результат на тестовых запросах.

Локальные и облачные модели в одном окне

Главное удобство Jan — локальные и облачные модели в одном интерфейсе. Различия по сути такие:

Локальные моделиОблачные модели через Zukko
Оплататокены бесплатны, нужны ресурсы компьютерапо токенам, с баланса в долларах
Интернетне нуженнужен
Данныеостаются на компьютереуходят в Zukko и к провайдеру модели
Контекстзависит от модели и памяти компьютера1M у Claude и GPT, 128K у GLM
Скоростьзависит от железазависит от модели и нагрузки

Практичная схема: чувствительные данные и работу без сети — на локальной модели, остальное — там, где результат вас устраивает. Какая модель справляется с вашими задачами, проверьте сами: задайте одни и те же 10–20 вопросов локальной модели и одной-двум облачным и сравните ответы.

Выбор облачной модели по цене

МодельВход / выход, $ за 1M токеновКонтекст
claude-opus-5-50.3 / 0.31M
claude-sonnet-50.3 / 0.31M
gpt-5.6-sol0.3 / 0.31M
gpt-5.6-luna0.1 / 0.11M
glm-5.30.1 / 0.1128K
glm-5.3-flash0.04 / 0.04128K

Пример на месяц: 20 запросов в день в течение 30 дней, каждый — 2 000 входных и 600 выходных токенов. Это 600 × 2 600 = 1 560 000 токенов:

  • claude-sonnet-5: 1 560 000 × $0.3 / 1 000 000 = $0.468;
  • gpt-5.6-luna: 1 560 000 × $0.1 / 1 000 000 = $0.156;
  • glm-5.3-flash: 1 560 000 × $0.04 / 1 000 000 = $0.0624.

Пополнить баланс можно от $1 через СБП, карту РФ или криптовалюту.

Разбор ошибок

Запросы сразу завершаются ошибкой

По документации Jan это признак неверного формата API. Для адреса https://api.zukko.pro/v1 выберите OpenAI-compatible.

404 на каждом запросе

В Base URL нет /v1. Нужен ровно https://api.zukko.pro/v1.

401 или 403

401 — ключ скопирован не полностью или удалён в кабинете; проверьте его кнопкой Test keys. 403 model_not_allowed_for_key — модели нет в списке разрешённых для ключа, добавьте её в настройках ключа.

400 на моделях Claude

Изменены temperature или top-P. Верните значения по умолчанию (см. раздел о сэмплировании).

Модели не появились в списке

Если Jan не смог получить список моделей, добавьте id вручную кнопкой +.

402, 429, сетевая ошибка

402 — закончился баланс. 429 — слишком частые запросы, подождите или повторите позже. Network error — проверьте подключение к интернету и не блокирует ли файрвол доступ к api.zukko.pro. Подробности ищите в логах Jan.

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

Можно ли пользоваться Jan без интернета?

Да, но только с локальными моделями. Облачные модели Zukko требуют доступа к api.zukko.pro.

Видит ли Zukko мои локальные чаты?

Нет. На Zukko уходят только запросы к облачным моделям; переписка с локальными моделями остаётся на компьютере.

Как ограничить расходы?

Задайте ключу дневной и месячный лимит и список разрешённых моделей в кабинете. Как работают лимиты, описано в документации по лимитам ключей.

Где взять ключ?

Создайте его в кабинете Zukko — полный ключ показывается один раз, поэтому сразу вставьте его в Jan.

zukko

Платите в 25×
меньше

за Claude Code & ChatGPT

Один ключ fetch_* и base URL api.zukko.pro — в Cursor, Claude Code, Codex и любом SDK.