Esegui il tuo secondo cervello Khoj su una base URL OpenAI personalizzata.
Updated 2026-07-29
Khoj documenta una configurazione proxy OpenAI con due superfici: una variabile d'ambiente OPENAI_BASE_URL che semina i modelli al primo avvio, e una voce AI Model API nel pannello admin con un campo Api Base Url. Punta l'una o l'altra verso https://api.apisrouter.com/v1 e chat, agenti e automazioni girano su qualsiasi modello del catalogo.
Risposta rapida: variabile d'ambiente al primo avvio, pannello admin in qualsiasi momento.
Il file compose per il self-hosting di Khoj porta una riga OPENAI_BASE_URL commentata, pensata, nelle sue stesse parole, per altri provider API compatibili OpenAI. Impostala su https://api.apisrouter.com/v1 con OPENAI_API_KEY che contiene una chiave gateway prima del primo avvio, e l'inizializzazione di Khoj fa qualcosa di insolitamente utile: interroga l'elenco dei modelli dell'endpoint e semina la sua tabella di chat-model con ogni id servito dall'endpoint, così il catalogo appare nel selettore di modello di Khoj senza inserimento manuale. Su un server già inizializzato, usa invece il pannello admin. Crea una voce AI Model API (campi: Name, Api Key, Api Base Url) che punta al gateway, poi crea voci Chat Model il cui Name è l'id esatto del modello, con Model Type impostato su Openai e collegato a quella AI Model API. Entrambe le superfici sono documentate nella guida proxy OpenAI di Khoj su docs.khoj.dev.
services:
server:
environment:
- OPENAI_BASE_URL=https://api.apisrouter.com/v1
- OPENAI_API_KEY=sk-YOUR-APISROUTER-KEYCosa fa Khoj con il suo modello di chat.
Khoj (khoj-ai su GitHub, circa 36K stelle) è un secondo cervello IA self-hostabile: indicizza le tue note e i tuoi documenti (markdown, org-mode, PDF e altro), poi ti permette di chattare su di essi, eseguire agenti personalizzati con proprie persona e strumenti, pianificare automazioni che scattano su un cron, e lanciare run di ricerca multi-step. Esiste un'app ospitata, ma il server self-hosted è dove si applicano gli endpoint personalizzati, ed è il deployment che questa pagina descrive. Ognuna di quelle funzionalità confluisce nel modello di chat che selezioni. La chat sui documenti impacchetta i frammenti di nota recuperati nel prompt, gli agenti aggiungono chiamate a strumenti e istruzioni di persona, le automazioni eseguono la stessa pipeline senza supervisione, e la modalità ricerca concatena molte chiamate al modello per domanda. Model Type Openai dice a Khoj di parlare /v1/chat/completions con l'Api Base Url della voce AI Model API collegata, inoltrando il Name del modello come stringa semplice, ed è per questo che un id Claude o DeepSeek funziona finché l'endpoint lo serve. Gli embedding di ricerca sono un sottosistema diverso. Khoj incorpora i tuoi documenti con un modello sentence-transformers locale per default, quindi l'indicizzazione e la ricerca semantica continuano a funzionare indipendentemente da cosa fai con l'endpoint di chat. Instradare la chat tramite un gateway sposta solo il conto del ragionamento.
Configurazione completa: voci del pannello admin passo dopo passo.
Su un server in esecuzione, l'intera integrazione è tre schermate admin. Primo, aggiungi la AI Model API: apri /server/admin/database/aimodelapi/add, dalle un nome, incolla la chiave gateway in Api Key, e imposta Api Base Url su https://api.apisrouter.com/v1. Secondo, aggiungi i chat model: su /server/admin/database/chatmodel/add, imposta Name su un id esatto del catalogo (claude-sonnet-4-6, deepseek-v4-flash), imposta Model Type su Openai, collega la voce Ai Model Api appena creata, e imposta Max prompt size su un valore che si adatti alla finestra di contesto del modello. La documentazione consiglia di lasciare Tokenizer non impostato per i modelli di tipo OpenAI. Ripeti per ogni modello che vuoi nel selettore. Terzo, seleziona il modello: su /settings, scegli il tuo nuovo chat model come default. Gli agenti possono sovrascrivere il modello per agente, ed è così che un'istanza Khoj esegue un id veloce per le automazioni quotidiane e un id di frontiera per la ricerca.
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 modelScegliere i modelli per un secondo cervello.
Poiché i chat model sono righe che aggiungi contro una AI Model API, mantenere due o tre id nel selettore non costa nulla. La configurazione pratica è un default veloce più un'escalation di frontiera, entrambi fatturati tramite la stessa chiave così che il log di utilizzo mostri cosa costa davvero ogni livello sulle tue note.
- La chat sui documenti richiede molto input: i frammenti di nota recuperati sovrastano la risposta. Il prezzo per token di input guida il costo per domanda, il che favorisce claude-haiku-4-5-20251001, deepseek-v4-flash o gemini-3.5-flash per il richiamo quotidiano.
- La modalità ricerca moltiplica le chiamate. Una domanda di ricerca può concatenare molti turni di modello, quindi l'id che assegni lì sposta il conto più di qualsiasi altra impostazione; claude-sonnet-4-6 è la scelta equilibrata, gpt-5.4 l'escalation.
- Le automazioni pianificate girano senza supervisione. Prezzale come un abbonamento: chiamate al giorno per token per chiamata, che è esattamente ciò che riporta il log di utilizzo per chiave.
- La conoscenza personale è ricca di contraddizioni (i piani cambiano, le note diventano obsolete), e i modelli differiscono in quanto bene segnalano note in conflitto invece di mescolarle; testa due id sullo stesso set di domande prima di impegnarti.
- Max prompt size è per chat model in Khoj, quindi un id a contesto lungo ripaga solo se alzi quel campo di conseguenza.
Pagamento a consumo · sotto i prezzi ufficiali
Selected models are priced below official list prices. Exact input, output, cache, and per-request prices are shown for each model.
| Modello | Prezzo ufficiale | Il nostro prezzo |
|---|---|---|
| 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 |
Modalità di errore specifiche di Khoj.
La variabile d'ambiente è un seme al primo avvio, non un'impostazione live. OPENAI_BASE_URL viene letta durante l'inizializzazione per creare la voce del provider e scoprire i modelli; su un server già inizializzato, modificare il file compose non cambia nulla che tu possa vedere. Usa il pannello admin per le modifiche dopo il primo avvio, oppure resetta il database se vuoi davvero un seme fresco. La trappola della chiave segnaposto: quando OPENAI_BASE_URL è impostata senza OPENAI_API_KEY, Khoj riempie la chiave con un segnaposto in modo che server locali come Ollama funzionino. Un gateway richiede una chiave reale, quindi se il seeding al primo avvio è avvenuto senza una chiave, le chat falliscono con errori di autenticazione finché non incolli la chiave nella voce AI Model API nel pannello admin. L'auto-discovery semina tutto. Poiché l'inizializzazione elenca ogni modello servito dall'endpoint, un gateway multi-vendor può seminare una tabella di modelli lunga. Innocuo, ma vale la pena ripulirlo nel pannello admin così il selettore resta utilizzabile. Il Name del chat model è esatto. Khoj lo inoltra testualmente; un errore di battitura emerge come model-not-found al primo messaggio, e l'output /v1/models del gateway è l'ortografia autorevole. E se la ricerca semantica sulle tue note si comporta male, quello è il sottosistema di embedding locale, non correlato all'endpoint di chat.
Chi instrada Khoj tramite un gateway.
- Self-hoster che vogliono chat con modelli di frontiera sulle proprie note senza un account fornitore per famiglia di modelli; una chiave copre gli id di Claude, GPT, DeepSeek e Gemini.
- Utenti che eseguono automazioni pianificate quotidianamente, dove un id veloce mantiene basso il costo ricorrente e il log di utilizzo lo rende visibile.
- Configurazioni attente alla privacy che mantengono indicizzazione ed embedding locali ed espongono solo i prompt di chat a un endpoint verificabile.
- Smanettoni che confrontano modelli di chat sullo stesso corpus personale: ogni candidato è una riga di chat-model contro la stessa AI Model API.
- Sviluppatori senza accesso alla fatturazione di un dato fornitore. L'accesso basato su ricarica senza obbligo di carta rimuove la dipendenza dalla registrazione per provider.
Verifica il gateway e fai debug della prima chat.
Controlla prima il gateway: elenca i modelli con la tua chiave e conferma gli id che intendi registrare. L'auto-discovery di Khoj fa la stessa chiamata durante il seeding al primo avvio, quindi se questa curl funziona, funzionerà anche il seeding. I fallimenti si localizzano in modo pulito. Gli errori di autenticazione significano che l'Api Key sulla voce AI Model API è sbagliata o è ancora il segnaposto seminato. Model-not-found significa che un Name di chat model non corrisponde all'ortografia del catalogo. Le risposte che si interrompono a metà di solito significano che Max prompt size o il tetto di output del modello è impostato troppo basso per la conversazione. I problemi di indicizzazione e ricerca sono la pipeline di embedding locale e non hanno nulla a che fare con l'endpoint. Una volta che le chat scorrono, la console di APIsRouter mostra il modello per richiesta, i conteggi dei token e la spesa. Le automazioni e le run di ricerca sono dove si nascondono i costi del secondo cervello, e l'utilizzo per chiave è come li vedi per funzionalità invece che come una sorpresa mensile.
curl -s https://api.apisrouter.com/v1/models \
-H "Authorization: Bearer $APISROUTER_API_KEY" | head -50Domande frequenti
Khoj supporta un proxy o gateway compatibile OpenAI?
Sì, come configurazione documentata: crea una voce AI Model API con un Api Base Url che punta all'endpoint, poi aggiungi chat model con Model Type Openai. Il file compose espone anche OPENAI_BASE_URL per il seeding al primo avvio.
Khoj può chattare con modelli Claude o DeepSeek tramite questo?
Sì. Model Type Openai inoltra il Name del chat model come stringa semplice su /v1/chat/completions verso l'Api Base Url. Funziona qualsiasi id servito dal gateway, inclusi id Claude, DeepSeek, GLM e Gemini.
Perché cambiare OPENAI_BASE_URL in docker-compose non ha fatto nulla?
La variabile semina provider e modelli solo durante l'inizializzazione al primo avvio. Su un server inizializzato, modifica invece la voce AI Model API nel pannello admin; quella è l'impostazione live.
La base URL personalizzata influisce sulla ricerca nei documenti di Khoj?
No. Khoj incorpora e cerca nei tuoi documenti con un modello sentence-transformers locale per default. La voce AI Model API sposta solo chat, agenti, automazioni e ricerca.
Cos'è Max prompt size sulla voce del chat model?
Un limite per modello su quanto prompt Khoj impacchetta in una richiesta. Impostalo per adattarlo alla finestra di contesto del modello; troppo basso tronca le note recuperate, e un id a contesto lungo aiuta solo se questo campo viene alzato di conseguenza.
Questo si applica all'app Khoj ospitata?
No, gli endpoint personalizzati sono una funzionalità self-hosting. L'app ospitata gestisce i propri modelli lato server; le superfici del pannello admin e dell'ambiente qui descritte appartengono a un server che gestisci tu stesso.