Faites tourner votre second cerveau Khoj sur une base URL OpenAI personnalisée.
Updated 2026-07-29
Khoj documente une configuration de proxy OpenAI avec deux surfaces : une variable d'environnement OPENAI_BASE_URL qui amorce les modèles au premier démarrage, et une entrée AI Model API dans le panneau d'administration avec un champ Api Base Url. Pointez l'une ou l'autre vers https://api.apisrouter.com/v1 et le chat, les agents et les automatisations tournent sur n'importe quel modèle du catalogue.
Réponse rapide : variable d'environnement au premier démarrage, panneau d'administration à tout moment.
Le fichier compose d'auto-hébergement de Khoj porte une ligne OPENAI_BASE_URL commentée, destinée, selon ses propres termes, à d'autres fournisseurs compatibles avec l'API OpenAI. Réglez-la sur https://api.apisrouter.com/v1 avec OPENAI_API_KEY portant une clé de passerelle avant le premier démarrage, et l'initialisation de Khoj fait quelque chose d'inhabituellement utile : elle interroge la liste de modèles de l'endpoint et amorce sa table de chat-models avec chaque id que sert l'endpoint, de sorte que le catalogue apparaît dans le sélecteur de modèle de Khoj sans saisie manuelle. Sur un serveur déjà initialisé, utilisez plutôt le panneau d'administration. Créez une entrée AI Model API (champs : Name, Api Key, Api Base Url) pointant vers la passerelle, puis créez des entrées Chat Model dont le Name est l'id de modèle exact, avec Model Type réglé sur Openai et lié à cette AI Model API. Les deux surfaces sont documentées dans le guide de proxy OpenAI de Khoj sur docs.khoj.dev.
services:
server:
environment:
- OPENAI_BASE_URL=https://api.apisrouter.com/v1
- OPENAI_API_KEY=sk-YOUR-APISROUTER-KEYCe que Khoj fait avec son chat model.
Khoj (khoj-ai sur GitHub, environ 36 000 étoiles) est un second cerveau IA auto-hébergeable : il indexe vos notes et documents (markdown, org-mode, PDF, et plus), puis vous laisse discuter dessus, faire tourner des agents personnalisés avec leurs propres personas et outils, planifier des automatisations qui se déclenchent sur un cron, et lancer des exécutions de recherche à plusieurs étapes. Il existe une app hébergée, mais c'est le serveur auto-hébergé où s'appliquent les endpoints personnalisés, et c'est le déploiement que décrit cette page. Chacune de ces fonctionnalités passe par le chat model que vous sélectionnez. Le chat documentaire empaquette des fragments de notes récupérés dans le prompt, les agents ajoutent des appels d'outils et des instructions de persona, les automatisations font tourner le même pipeline sans supervision, et le mode recherche enchaîne de nombreux appels de modèle par question. Model Type Openai indique à Khoj de parler /v1/chat/completions à l'Api Base Url de l'entrée AI Model API liée, en transmettant le Name du modèle comme simple chaîne, ce qui explique pourquoi un id Claude ou DeepSeek y fonctionne tant que l'endpoint le sert. Les embeddings de recherche sont un sous-système différent. Khoj embarque vos documents avec un modèle sentence-transformers local par défaut, donc l'indexation et la recherche sémantique continuent de fonctionner quoi que vous fassiez avec l'endpoint de chat. Router le chat via une passerelle ne déplace que la facture de raisonnement.
Configuration complète : les entrées du panneau d'administration étape par étape.
Sur un serveur en fonctionnement, toute l'intégration tient en trois écrans d'administration. D'abord, ajoutez l'AI Model API : ouvrez /server/admin/database/aimodelapi/add, nommez-la, collez la clé de passerelle dans Api Key, et réglez Api Base Url sur https://api.apisrouter.com/v1. Ensuite, ajoutez des chat models : sur /server/admin/database/chatmodel/add, réglez Name sur un id exact du catalogue (claude-sonnet-4-6, deepseek-v4-flash), réglez Model Type sur Openai, liez l'entrée Ai Model Api que vous venez de créer, et réglez Max prompt size sur une valeur qui tient dans la fenêtre de contexte du modèle. La documentation conseille de laisser Tokenizer non défini pour les modèles de type OpenAI. Répétez pour chaque modèle que vous voulez dans le sélecteur. Enfin, sélectionnez le modèle : sur /settings, choisissez votre nouveau chat model comme défaut. Les agents peuvent surcharger le modèle par agent, ce qui permet à une seule instance Khoj de faire tourner un id rapide pour les automatisations quotidiennes et un id frontier pour la recherche.
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 modelChoisir des modèles pour un second cerveau.
Comme les chat models sont des lignes que vous ajoutez contre une seule AI Model API, garder deux ou trois ids dans le sélecteur ne coûte rien. La configuration pratique est un défaut rapide plus une escalade frontier, les deux facturés via la même clé pour que le journal d'usage montre ce que coûte réellement chaque palier sur vos notes.
- Le chat documentaire est lourd en entrée : les fragments de notes récupérés éclipsent la réponse. Le tarif par token d'entrée pilote le coût par question, ce qui favorise claude-haiku-4-5-20251001, deepseek-v4-flash ou gemini-3.5-flash pour le rappel quotidien.
- Le mode recherche multiplie les appels. Une seule question de recherche peut enchaîner de nombreux échanges de modèle, donc l'id que vous assignez là déplace la facture plus que tout autre réglage ; claude-sonnet-4-6 est le choix équilibré, gpt-5.4 l'escalade.
- Les automatisations planifiées tournent sans supervision. Chiffrez-les comme un abonnement : appels par jour multipliés par tokens par appel, exactement ce que rapporte le journal d'usage par clé.
- La connaissance personnelle est riche en contradictions (les plans changent, les notes deviennent obsolètes), et les modèles diffèrent dans leur capacité à signaler des notes contradictoires plutôt qu'à les mélanger ; testez deux ids sur le même jeu de questions avant de vous engager.
- Max prompt size est par chat model dans Khoj, donc un id longue contexte ne paie que si vous relevez ce champ en conséquence.
Paiement à l'usage · en dessous du tarif officiel
Selected models are priced below official list prices. Exact input, output, cache, and per-request prices are shown for each model.
| Modèle | Prix officiel | Notre prix |
|---|---|---|
| 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 |
Modes d'échec spécifiques à Khoj.
La variable d'environnement est un amorçage de premier démarrage, pas un réglage en direct. OPENAI_BASE_URL est lue pendant l'initialisation pour créer l'entrée de fournisseur et découvrir les modèles ; sur un serveur déjà initialisé, éditer le fichier compose ne change rien de visible. Utilisez le panneau d'administration pour les changements après le premier démarrage, ou réinitialisez la base de données si vous voulez vraiment un amorçage neuf. Le piège de la clé placeholder : quand OPENAI_BASE_URL est réglée sans OPENAI_API_KEY, Khoj remplit la clé avec un placeholder pour que des serveurs locaux comme Ollama fonctionnent. Une passerelle exige une vraie clé, donc si l'amorçage du premier démarrage s'est fait sans, les chats échouent avec des erreurs d'authentification jusqu'à ce que vous colliez la clé dans l'entrée AI Model API du panneau d'administration. La découverte automatique amorce tout. Comme l'initialisation liste chaque modèle que sert l'endpoint, une passerelle multi-fournisseurs peut amorcer une longue table de modèles. Sans danger, mais mérite d'être élaguée dans le panneau d'administration pour que le sélecteur reste utilisable. Le Name du chat model est exact. Khoj le transmet tel quel ; une faute de frappe apparaît comme model-not-found au premier message, et la sortie /v1/models de la passerelle fait foi pour l'orthographe. Et si la recherche sémantique sur vos notes se comporte mal, c'est le sous-système d'embedding local, sans rapport avec l'endpoint de chat.
Qui route Khoj via une passerelle.
- Les auto-hébergeurs qui veulent un chat frontier sur leurs notes sans compte fournisseur par famille de modèles ; une seule clé couvre les ids Claude, GPT, DeepSeek et Gemini.
- Les utilisateurs qui font tourner des automatisations planifiées quotidiennement, où un id rapide garde le coût récurrent stable et le journal d'usage le rend visible.
- Les configurations soucieuses de confidentialité qui gardent l'indexation et les embeddings en local et n'exposent que les prompts de chat à un seul endpoint auditable.
- Les bricoleurs qui comparent des chat models sur un corpus personnel identique : chaque candidat est une ligne chat-model contre la même AI Model API.
- Les développeurs sans accès à la facturation d'un fournisseur donné. Un accès basé sur la recharge, sans exigence de carte, supprime la dépendance à une inscription par fournisseur.
Vérifiez l'endpoint et déboguez le premier chat.
Vérifiez d'abord la passerelle : listez les modèles avec votre clé et confirmez les ids que vous comptez enregistrer. La propre découverte automatique de Khoj fait le même appel pendant l'amorçage du premier démarrage, donc si ce curl fonctionne, l'amorçage aussi. Les échecs se localisent proprement. Les erreurs d'authentification signifient que l'Api Key sur l'entrée AI Model API est incorrecte ou encore le placeholder amorcé. Model-not-found signifie qu'un Name de chat model ne correspond pas à l'orthographe du catalogue. Les réponses qui se coupent en plein milieu signifient généralement que Max prompt size ou le plafond de sortie du modèle est réglé trop bas pour la conversation. Les problèmes d'indexation et de recherche sont le pipeline d'embedding local et n'ont rien à voir avec l'endpoint. Une fois les chats en circulation, la console APIsRouter affiche le modèle par requête, le nombre de tokens et la dépense. Les automatisations et les exécutions de recherche sont l'endroit où se cachent les coûts d'un second cerveau, et l'usage par clé est la façon de les voir par fonctionnalité plutôt que comme une surprise mensuelle unique.
curl -s https://api.apisrouter.com/v1/models \
-H "Authorization: Bearer $APISROUTER_API_KEY" | head -50Questions fréquentes
Khoj prend-il en charge un proxy ou une passerelle compatible OpenAI ?
Oui, comme configuration documentée : créez une entrée AI Model API avec un Api Base Url pointant vers l'endpoint, puis ajoutez des chat models avec Model Type Openai. Le fichier compose expose aussi OPENAI_BASE_URL pour l'amorçage du premier démarrage.
Khoj peut-il discuter avec des modèles Claude ou DeepSeek via cela ?
Oui. Model Type Openai transmet le Name du chat model comme simple chaîne via /v1/chat/completions vers l'Api Base Url. Tout id que sert la passerelle fonctionne, y compris les ids Claude, DeepSeek, GLM et Gemini.
Pourquoi changer OPENAI_BASE_URL dans docker-compose n'a-t-il rien fait ?
La variable amorce les fournisseurs et les modèles uniquement pendant l'initialisation du premier démarrage. Sur un serveur initialisé, éditez plutôt l'entrée AI Model API dans le panneau d'administration ; c'est le réglage en direct.
La base URL personnalisée affecte-t-elle la recherche documentaire de Khoj ?
Non. Khoj embarque et recherche vos documents avec un modèle sentence-transformers local par défaut. L'entrée AI Model API ne déplace que le chat, les agents, les automatisations et la recherche.
Qu'est-ce que Max prompt size sur l'entrée chat model ?
Un plafond par modèle sur la quantité de prompt que Khoj empaquette dans une requête. Réglez-le pour tenir dans la fenêtre de contexte du modèle ; trop bas, il tronque les notes récupérées, et un id longue contexte n'aide que si ce champ est relevé en conséquence.
Cela s'applique-t-il à l'app Khoj hébergée ?
Non, les endpoints personnalisés sont une fonctionnalité d'auto-hébergement. L'app hébergée gère ses propres modèles côté serveur ; les surfaces de panneau d'administration et d'environnement ici appartiennent à un serveur que vous faites tourner vous-même.