Запустите второй мозг Khoj на кастомном OpenAI base URL.
Updated 2026-07-29
Khoj документирует настройку OpenAI-proxy с двумя поверхностями: переменной окружения OPENAI_BASE_URL, которая заполняет модели при первом запуске, и записью AI Model API в панели администрирования с полем Api Base Url. Направьте любую из них на https://api.apisrouter.com/v1 — и чат, агенты и автоматизации заработают на любой модели каталога.
Короткий ответ: переменная окружения при первом запуске, панель администрирования в любой момент.
Compose-файл self-hosting Khoj несёт закомментированную строку OPENAI_BASE_URL, предназначенную, по собственным словам проекта, для других OpenAI API совместимых провайдеров. Установите её в https://api.apisrouter.com/v1, с OPENAI_API_KEY, хранящим ключ шлюза, до первого запуска, и инициализация Khoj делает нечто необычно полезное: она запрашивает список моделей эндпоинта и заполняет свою таблицу чат-моделей каждым id, который обслуживает эндпоинт, так что каталог появляется в селекторе моделей Khoj без ручного ввода. На уже инициализированном сервере вместо этого используйте панель администрирования. Создайте запись AI Model API (поля: Name, Api Key, Api Base Url), указывающую на шлюз, затем создайте записи Chat Model, чьё Name — это точный id модели, с Model Type, установленным в Openai, и привязкой к этой AI Model API. Обе поверхности задокументированы в гайде по OpenAI-proxy в Khoj на docs.khoj.dev.
services:
server:
environment:
- OPENAI_BASE_URL=https://api.apisrouter.com/v1
- OPENAI_API_KEY=sk-YOUR-APISROUTER-KEYЧто Khoj делает со своей чат-моделью.
Khoj (khoj-ai на GitHub, около 36K звёзд) — self-hostable AI-второй-мозг: он индексирует ваши заметки и документы (markdown, org-mode, PDF и другие), затем позволяет общаться по ним в чате, запускать кастомных агентов с собственными персонами и инструментами, планировать автоматизации, срабатывающие по cron, и запускать многошаговые research-прогоны. Есть хостируемое приложение, но кастомные эндпоинты применимы именно к self-hosted серверу, и именно этот деплой описывает данная страница. Каждая из этих функций стекается через выбранную вами чат-модель. Чат по документам упаковывает извлечённые чанки заметок в промпт, агенты добавляют вызовы инструментов и инструкции персоны, автоматизации прогоняют тот же пайплайн без присмотра, а режим research цепляет много вызовов модели на один вопрос. Model Type Openai говорит Khoj общаться по /v1/chat/completions с Api Base Url привязанной записи AI Model API, пересылая Name модели как простую строку, поэтому id Claude или DeepSeek там работает, пока эндпоинт его обслуживает. Эмбеддинги для поиска — отдельная подсистема. Khoj по умолчанию эмбеддит ваши документы локальной моделью sentence-transformers, так что индексация и семантический поиск продолжают работать независимо от того, что вы делаете с эндпоинтом чата. Маршрутизация чата через шлюз двигает только счёт за рассуждение.
Полная настройка: записи в панели администрирования по шагам.
На работающем сервере вся интеграция — это три экрана администрирования. Сначала добавьте AI Model API: откройте /server/admin/database/aimodelapi/add, назовите её, вставьте ключ шлюза в Api Key и установите Api Base Url в https://api.apisrouter.com/v1. Затем добавьте чат-модели: на /server/admin/database/chatmodel/add установите Name в точный id из каталога (claude-sonnet-4-6, deepseek-v4-flash), установите Model Type в Openai, привяжите только что созданную запись Ai Model Api и установите Max prompt size в значение, которое помещается в контекстное окно модели. Документация советует оставлять Tokenizer незаполненным для моделей типа OpenAI. Повторите для каждой модели, которую хотите видеть в селекторе. Наконец, выберите модель: на /settings выберите новую чат-модель как модель по умолчанию. Агенты могут переопределить модель по каждому агенту — так один инстанс Khoj запускает быстрый id для ежедневных автоматизаций и топовый id для research.
1) /server/admin/database/aimodelapi/add
Name: APIsRouter
Api Key: sk-YOUR-APISROUTER-KEY
Api Base Url: https://api.apisrouter.com/v1
2) /server/admin/database/chatmodel/add
Name: claude-sonnet-4-6 (exact catalog id)
Model Type: Openai
Ai Model Api: APIsRouter
Max prompt size: 100000
3) /settings -> select the new chat modelВыбор моделей для второго мозга.
Поскольку чат-модели — это строки, которые вы добавляете к одной AI Model API, держать два-три id в селекторе ничего не стоит. Практичная настройка — быстрое умолчание плюс топовая эскалация, обе тарифицируются через один и тот же ключ, так что лог использования показывает, во что реально обходится каждый уровень на ваших заметках.
- Чат по документам требователен к входным данным: извлечённые чанки заметок значительно превосходят ответ по объёму. Цена за входной токен определяет стоимость вопроса, что даёт преимущество claude-haiku-4-5-20251001, deepseek-v4-flash или gemini-3.5-flash для повседневного вспоминания.
- Режим research умножает вызовы. Один research-вопрос может сцепить много обращений к модели, так что назначенный там id двигает счёт сильнее любой другой настройки; claude-sonnet-4-6 — сбалансированный выбор, gpt-5.4 — эскалация.
- Запланированные автоматизации работают без присмотра. Оценивайте их как подписку: вызовов в день, умноженных на токены на вызов, — именно это и показывает лог использования по ключу.
- Личное знание богато противоречиями (планы меняются, заметки устаревают), и модели различаются в том, насколько хорошо они помечают конфликтующие заметки вместо того, чтобы их смешивать; протестируйте два id на одном наборе вопросов, прежде чем закрепиться на одном.
- Max prompt size в Khoj задаётся по каждой чат-модели, так что id с длинным контекстом окупается, только если вы поднимете это поле соответственно.
Оплата по факту · дешевле официальных цен
Selected models are priced below official list prices. Exact input, output, cache, and per-request prices are shown for each model.
| Модель | Официальная цена | Наша цена |
|---|---|---|
| Claude Sonnet 4.6 | $3.00 / $15.00 per M | $2.40 / $12.00 per M |
| Claude Haiku 4.5 20251001 | $1.00 / $5.00 per M | $0.80 / $4.00 per M |
| GPT-5.4 | $2.50 / $15.00 per M | $2.00 / $12.00 per M |
| DeepSeek V4 Flash | $0.14 / $0.28 per M | $0.10 / $0.30 per M |
| Gemini 3.5 Flash | $1.50 / $9.00 per M | $1.20 / $7.20 per M |
Сбои, специфичные именно для Khoj.
Переменная окружения — это заполнение при первом запуске, а не живая настройка. OPENAI_BASE_URL читается во время инициализации, чтобы создать запись провайдера и обнаружить модели; на уже инициализированном сервере правка compose-файла ничего видимо не меняет. Используйте панель администрирования для изменений после первого запуска, либо сбросьте базу данных, если вам действительно нужно свежее заполнение. Ловушка ключа-заглушки: когда OPENAI_BASE_URL задан без OPENAI_API_KEY, Khoj заполняет ключ заглушкой, чтобы работали локальные серверы вроде Ollama. Шлюзу нужен настоящий ключ, так что если заполнение при первом запуске произошло без него, чаты падают с ошибками аутентификации, пока вы не вставите ключ в запись AI Model API в панели администрирования. Автообнаружение заполняет всё. Поскольку инициализация листит каждую модель, обслуживаемую эндпоинтом, мультивендорный шлюз может заполнить длинную таблицу моделей. Безвредно, но стоит подчистить в панели администрирования, чтобы селектор оставался удобным. Name чат-модели должно быть точным. Khoj пересылает его дословно; опечатка проявляется как model-not-found на первом сообщении, и вывод /v1/models шлюза — авторитетное написание. А если семантический поиск по вашим заметкам ведёт себя неправильно, это локальная подсистема эмбеддингов, не связанная с эндпоинтом чата.
Кто направляет Khoj через шлюз.
- Self-hosters, которым нужен чат с топовыми моделями по своим заметкам без аккаунта у вендора на каждое семейство моделей; один ключ покрывает id Claude, GPT, DeepSeek и Gemini.
- Пользователи, ежедневно запускающие запланированные автоматизации, где быстрый id держит повторяющуюся стоимость стабильной, а лог использования делает её видимой.
- Настройки, заботящиеся о приватности, которые держат индексацию и эмбеддинги локально и выставляют наружу только промпты чата, к одному аудируемому эндпоинту.
- Экспериментаторы, сравнивающие чат-модели на идентичном личном корпусе: каждый кандидат — это одна строка чат-модели у одной и той же AI Model API.
- Разработчики без доступа к биллингу конкретного вендора. Доступ на основе пополнения без требования карты убирает зависимость от регистрации у каждого провайдера.
Проверьте эндпоинт и отладьте первый чат.
Сначала проверьте шлюз: полистайте модели своим ключом и подтвердите id, которые собираетесь зарегистрировать. Собственное автообнаружение Khoj делает тот же вызов во время заполнения при первом запуске, так что если этот curl проходит, заполнение тоже пройдёт. Сбои локализуются чисто. Ошибки аутентификации означают, что Api Key в записи AI Model API неверен или всё ещё является заглушкой из заполнения. Model-not-found означает, что Name чат-модели не совпадает с написанием в каталоге. Ответы, обрывающиеся на середине, обычно означают, что Max prompt size или потолок вывода модели установлены слишком низко для разговора. Проблемы индексации и поиска — это локальный пайплайн эмбеддингов и не имеют отношения к эндпоинту. Как только чаты начинают работать, консоль APIsRouter показывает модель на запрос, счётчики токенов и расходы. Автоматизации и research-прогоны — это то место, где прячутся расходы второго мозга, и использование по ключу — это то, как вы видите их по фиче, а не как один месячный сюрприз.
curl -s https://api.apisrouter.com/v1/models \
-H "Authorization: Bearer $APISROUTER_API_KEY" | head -50Частые вопросы
Поддерживает ли Khoj OpenAI-совместимый прокси или шлюз?
Да, как задокументированную настройку: создайте запись AI Model API с Api Base Url, указывающим на эндпоинт, затем добавьте чат-модели с Model Type Openai. Compose-файл также выставляет OPENAI_BASE_URL для заполнения при первом запуске.
Может ли Khoj общаться с моделями Claude или DeepSeek через это?
Да. Model Type Openai пересылает Name чат-модели как простую строку через /v1/chat/completions на Api Base Url. Работает любой id, который обслуживает шлюз, включая id Claude, DeepSeek, GLM и Gemini.
Почему смена OPENAI_BASE_URL в docker-compose ничего не изменила?
Переменная заполняет провайдеров и модели только во время инициализации при первом запуске. На инициализированном сервере вместо этого правьте запись AI Model API в панели администрирования; это и есть живая настройка.
Влияет ли кастомный base URL на поиск по документам в Khoj?
Нет. Khoj по умолчанию эмбеддит и ищет по вашим документам локальной моделью sentence-transformers. Запись AI Model API двигает только чат, агентов, автоматизации и research.
Что такое Max prompt size в записи чат-модели?
Ограничение на модель по тому, сколько промпта Khoj упаковывает в запрос. Задайте его так, чтобы он помещался в контекстное окно модели; слишком низкое значение обрезает извлечённые заметки, и id с длинным контекстом помогает, только если это поле поднято соответственно.
Применимо ли это к хостируемому приложению Khoj?
Нет, кастомные эндпоинты — это фича self-hosting. Хостируемое приложение управляет своими моделями на стороне сервера; описанные здесь панель администрирования и переменные окружения принадлежат серверу, который вы запускаете сами.