Загрузка...

популярность в разделе «Прочие»

LobeChat через RouterAI: свой ChatGPT-клон с агентами и библиотекой знаний

LobeChat (проект называется LobeHub, репозиторий lobehub/lobehub, около 83 тысяч звёзд на GitHub) — open-source веб-клиент и десктоп-приложение для работы с LLM: чат с агентами, библиотека знаний, каталог готовых агентов в разделе «Сообщество», навыки и MCP-серверы. Через RouterAI в него подключаются Claude, GPT, DeepSeek, Gemini и другие модели из каталога: работа из России без VPN, оплата в рублях, один ключ на все модели. Статья проверена на образе lobehub/lobehub версии 2.2.20.

Требования

Установка

В старых инструкциях встречается образ lobehub/lobe-chat: его последний тег на Docker Hub — 1.143.3 от 25 января 2026 года. Актуальные релизы выходят в образе lobehub/lobehub.

Docker Compose — рекомендуемый в документации способ: в одном стеке PostgreSQL, Redis, RustFS (S3) и Searxng.

mkdir lobehub && cd lobehub
bash <(curl -fsSL https://lobe.li/setup.sh) -l en
docker compose up -d

Скрипт предлагает три режима: Local (только с этой машины), Port (доступ по IP) и Domain (за обратным прокси). После запуска откройте http://localhost:3210.

Один контейнер с отдельными Postgres и S3. Минимальный набор переменных, на котором мы запускали проверку (Postgres с pgvector и S3-хранилище уже подняты):

docker run -d --name lobehub -p 3210:3210 \
  -e DATABASE_URL=postgres://postgres:mysecretpassword@my-postgres:5432/postgres \
  -e KEY_VAULTS_SECRET=$(openssl rand -base64 32) \
  -e AUTH_SECRET=$(openssl rand -base64 32) \
  -e APP_URL=http://localhost:3210 \
  -e FTS_SEARCH_PROVIDER=pg_like \
  -e S3_ENDPOINT=http://localhost:9000 \
  -e S3_BUCKET=lobe \
  -e S3_ACCESS_KEY_ID=xxxxxxxx \
  -e S3_SECRET_ACCESS_KEY=xxxxxxxx \
  lobehub/lobehub

FTS_SEARCH_PROVIDER=pg_like нужен, если в Postgres нет расширения pg_search (например, образ pgvector/pgvector); с образом ParadeDB из документации переменную можно не задавать. Остальные переменные и варианты — в инструкции по Docker.

1.00

Первого пользователя создаёт форма регистрации («Sign up now»).

Подключение к RouterAI

LobeChat подключается к RouterAI как к OpenAI-совместимому провайдеру. Есть два способа: переменные окружения для всей инсталляции или форма в интерфейсе.

Через переменные окружения

OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxx
OPENAI_PROXY_URL=https://routerai.ru/api/v1
OPENAI_MODEL_LIST=-all,+anthropic/claude-sonnet-5.5=Claude Sonnet 5.5<1000000:fc:vision>,+anthropic/claude-haiku-5.5=Claude Haiku 5.5<1000000:fc:vision>,+deepseek/deepseek-v4-flash=DeepSeek V4 Flash<1048576:fc>

OPENAI_PROXY_URL должен заканчиваться на /v1: документация предупреждает, что при неверном суффиксе ответ может приходить пустым.

OPENAI_MODEL_LIST управляет списком моделей: -all скрывает встроенные, +id=Название добавляет модель, в угловых скобках — контекст и возможности (fc — вызов инструментов, vision — изображения). Формат описан здесь. Id берите из каталога RouterAI.

Через интерфейс

Откройте Настройки → Поставщик ИИ (AI Provider) → OpenAI и включите провайдера.

  1. Ключ API — ключ RouterAI вида sk-xxxxxxxxxxxxxxxx (на кадре показана заглушка).
  2. URL прокси API — https://routerai.ru/api/v1.
  3. Проверка подключения — выберите модель в выпадающем списке и нажмите «Проверить».

1.00

Переключатель «Использовать режим клиентского запроса» оставьте выключенным: в нём, по описанию в интерфейсе, сессии инициируются напрямую из браузера, а не с сервера LobeChat.

Встроенный список OpenAI-провайдера содержит только модели OpenAI, поэтому id RouterAI вида anthropic/… или deepseek/… нужно добавить самому — проще всего через OPENAI_MODEL_LIST. Цены и даты рядом с моделями LobeChat берёт из собственных метаданных, они не совпадают с ценами RouterAI: стоимость в рублях смотрите в каталоге.

Выбор модели в чате

Модель выбирается в поле ввода: нажмите на название модели справа внизу, затем «Модель». В списке есть поиск.

1.00

В LobeChat есть и встроенные провайдеры Anthropic, Google и другие со своими списками. Чтобы запросы шли через RouterAI, давайте добавленным моделям узнаваемые названия, например «Claude Sonnet 5.5 (RouterAI)».

Выбор модели

Модель Контекст (каталог) Для чего
anthropic/claude-sonnet-5.5 1 000 000 Основная: чат, агенты, работа с документами
anthropic/claude-haiku-5.5 1 000 000 Быстрые и дешёвые ответы
deepseek/deepseek-v4-flash 1 048 576 Массовые вопросы, когда важна цена
openai/gpt-5.5 1 050 000 Универсальные и сложные задачи
google/gemini-3.1-pro-preview 1 048 576 Длинные документы и мультимодальные запросы

Цены в рублях — в каталоге моделей.

Агенты и каталог сообщества

В LobeChat версии 2 готовые ассистенты называются агентами. Каталог открывается в боковом меню через «Сообщество»: на главной — избранные агенты и поиск, во вкладке «Агент» — категории (программирование, копирайтинг, маркетинг, перевод и другие). Кнопка «Fork & Chat» создаёт вашу копию агента с новым диалогом (описание): в копии можно менять системный промпт, модель по умолчанию, навыки и базы знаний.

1.00

Адрес индекса агентов задаётся переменной AGENTS_INDEX_URL. Чтобы агент работал через RouterAI, выберите в его настройках одну из добавленных моделей.

1.00

Библиотека знаний

Раздел «Ресурсы» (Resource Library) — личная библиотека: загруженные в чат файлы, изображения и документы. Файлы режутся на фрагменты, превращаются в эмбеддинги и ищутся семантически; агент отвечает по найденным фрагментам (документация).

1.00

Серверной версии для этого нужны PostgreSQL с pgvector и S3 (в Docker Compose они уже есть). По документации, эмбеддинги по умолчанию строит text-embedding-3-small через OpenAI-провайдер. У RouterAI эта модель называется openai/text-embedding-3-small: при коротком id в журнале контейнера появляется ошибка Model 'text-embedding-3-small' not found. Модель по умолчанию меняется переменной (формат значения — провайдер/модель):

DEFAULT_FILES_CONFIG=embedding_model=openai/openai/text-embedding-3-small

Это значение проверено на живой инсталляции: загруженный документ разбился на фрагменты, для каждого RouterAI вернул эмбеддинг, и агент ответил по содержимому файла (см. ниже). Эмбеддинг-модели RouterAI: openai/text-embedding-3-small (контекст 8192), qwen/qwen3-embedding-8b (40 960), google/gemini-embedding-001 (20 000); запрос к /api/v1/embeddings вернул векторы для openai/text-embedding-3-small и qwen/qwen3-embedding-8b. После смены модели эмбеддингов загруженные файлы лучше проиндексировать заново.

Чтобы файлы загружались и индексировались, на проверочной инсталляции понадобились три условия:

  • JWKS_KEY — RSA-ключ в формате JWKS (тот же, что выдаёт scripts/generate-oidc-jwk.mjs из репозитория). Без него разбор файла завершается ошибкой JWKS_KEY environment variable is not set. Задайте его один раз и не меняйте.
  • S3 доступен из браузера. Браузер загружает файл в S3 напрямую по временной ссылке, поэтому S3_ENDPOINT должен открываться с вашего компьютера, а не только из docker-сети, а для бакета нужно разрешить CORS. Иначе загрузка зависает на «Подготовка к загрузке… 99%».
  • APP_URL доступен с самого сервера. Для разбора файла LobeChat обращается к себе по APP_URL: порт в нём должен совпадать с портом, на котором приложение слушает внутри контейнера, иначе файл получает статус «Ошибка сегментации» (Please make sure the APP_URL is available from your server).

Сгенерировать ключ для JWKS_KEY можно так (команда выводит одну строку JSON):

docker run --rm node:24-slim node -e 'const c=require("crypto");const k=c.generateKeyPairSync("rsa",{modulusLength:2048}).privateKey.export({format:"jwk"});k.use="sig";k.alg="RS256";k.kid=c.randomBytes(8).toString("hex");console.log(JSON.stringify({keys:[k]}))'

Создайте библиотеку («Создать новую библиотеку»), откройте её и нажмите «Загрузить файл». В проверке мы загрузили короткий документ faq-invoices.md (2,7 КБ, ответы на вопросы о демо-сервисе счетов): он разбился на 3 фрагмента.

1.00

Чтобы агент отвечал по библиотеке:

  1. В поле ввода чата нажмите «+» и выберите «Вложения».
  2. Нажмите «Выбрать файлы / библиотеки» и «Добавить» напротив нужной библиотеки.
  3. Выберите модель Claude Sonnet 5.5 и задайте вопрос по документу.

Агент назвал файл faq-invoices.md и базу знаний «Invoices FAQ» и ответил по их содержимому: срок оплаты счёта по умолчанию — 14 дней, номер счёта имеет формат INV-ГГГГ-ММ-NNNN. Обе подробности есть только в загруженном документе.

1.00

Вместо старых плагинов во второй версии используются навыки (Skills) и MCP-серверы: каталоги лежат в «Сообщество» → «Навыки» и «MCP» (MCP Market). Чтобы агент вызывал инструменты, модель должна уметь tool calling: в OPENAI_MODEL_LIST такая модель помечается fc. Часть навыков и MCP-серверов требует собственного ключа сервиса (поиск, почта и т. п.), он вводится в настройках самого навыка и с ключом RouterAI не связан.

Голосовой ввод отправляет запись как голосовое сообщение; транскрибации в текст перед отправкой, по документации, сейчас нет.

Самохостинг для команды

Серверная версия уже включает PostgreSQL и вход по учётным записям (Better Auth). Для команды:

  • задайте APP_URL с публичным адресом и поставьте обратный прокси с HTTPS (режим Domain в setup.sh);
  • ограничьте регистрацию: AUTH_ALLOWED_EMAILS (список разрешённых адресов) или SSO вместе с AUTH_DISABLE_EMAIL_PASSWORD=1 (авторизация);
  • задайте RouterAI один раз через OPENAI_API_KEY и OPENAI_PROXY_URL, чтобы не раздавать ключи сотрудникам;
  • настройте резервное копирование Postgres и S3: в Compose-файле тома по умолчанию локальные.

Проверка подключения

Откройте чат, выберите модель RouterAI и отправьте сообщение. Быстрая проверка ключа без интерфейса:

curl https://routerai.ru/api/v1/chat/completions \
  -H "Authorization: Bearer sk-xxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"model":"anthropic/claude-sonnet-5.5","messages":[{"role":"user","content":"Привет"}]}'

В проверочной инсталляции lobehub/lobehub 2.2.20 с OPENAI_PROXY_URL=https://routerai.ru/api/v1 агент Lobe AI ответил на сообщение с выбранной моделью Claude Sonnet 5.5.

LobeChat, LibreChat и Open WebUI

Все три — self-hosted чаты, которые подключаются к RouterAI по OpenAI-совместимому API. LobeChat выбирают за каталог готовых агентов, личную библиотеку знаний и навыки/MCP; цена за это — более тяжёлая серверная часть (Postgres, S3). Подключение остальных клиентов описано в статьях Open WebUI через RouterAI и LibreChat через RouterAI.

Решение проблем

  • Ответ пустой. Убедитесь, что OPENAI_PROXY_URL (или «URL прокси API») — https://routerai.ru/api/v1, с /v1.
  • Нужной модели нет в списке. Добавьте её id из каталога RouterAI через OPENAI_MODEL_LIST.
  • Контейнер завершается при старте с сообщением про pg_search. В базе нет расширения ParadeDB. Задайте FTS_SEARCH_PROVIDER=pg_like или используйте образ из документации.
  • Ошибка Invalid environment variables … S3_ENDPOINT. Серверной версии нужен настроенный S3: S3_ENDPOINT должен быть валидным URL, бакет создан заранее.
  • В журнале Model 'text-embedding-3-small' not found. Эмбеддинги запрашиваются у RouterAI под коротким id. Задайте DEFAULT_FILES_CONFIG с полным id, как в разделе про библиотеку знаний.
  • Файл в библиотеке: загрузка висит на 99% или статус «Ошибка сегментации». Проверьте три условия из раздела про библиотеку знаний: JWKS_KEY, доступность S3 из браузера с CORS и доступность APP_URL с самого сервера.
  • На экране входа «Email registration is disabled and no SSO providers are configured». Включён AUTH_DISABLE_EMAIL_PASSWORD=1, но SSO не настроен. Уберите переменную или подключите SSO.
  • 401. Неверный ключ или нулевой баланс: проверьте их в личном кабинете RouterAI.

Что дальше