Ejecuta tu segundo cerebro de Khoj sobre una base URL de OpenAI personalizada.
Updated 2026-07-29
Khoj documenta una configuración de proxy OpenAI con dos superficies: una variable de entorno OPENAI_BASE_URL que siembra modelos en la primera ejecución, y una entrada AI Model API en el panel de administración con un campo Api Base Url. Apunta cualquiera de las dos a https://api.apisrouter.com/v1 y el chat, los agentes y las automatizaciones corren sobre cualquier modelo del catálogo.
Respuesta rápida: variable de entorno en la primera ejecución, panel de administración en cualquier momento.
El archivo de compose de autoalojamiento de Khoj lleva una línea OPENAI_BASE_URL comentada pensada, en sus propias palabras, para otros proveedores compatibles con la API de OpenAI. Configúrala a https://api.apisrouter.com/v1 con OPENAI_API_KEY conteniendo una clave de gateway antes del primer arranque, y la inicialización de Khoj hace algo inusualmente útil: consulta la lista de modelos del endpoint y siembra su tabla de modelos de chat con cada id que sirve el endpoint, así que el catálogo aparece en el selector de modelo de Khoj sin entrada manual. En un servidor ya inicializado, usa el panel de administración en su lugar. Crea una entrada AI Model API (campos: Name, Api Key, Api Base Url) apuntando al gateway, y luego crea entradas Chat Model cuyo Name sea el id exacto del modelo, con Model Type configurado en Openai y vinculado a esa AI Model API. Ambas superficies están documentadas en la guía de proxy OpenAI de Khoj en docs.khoj.dev.
services:
server:
environment:
- OPENAI_BASE_URL=https://api.apisrouter.com/v1
- OPENAI_API_KEY=sk-YOUR-APISROUTER-KEYQué hace Khoj con su modelo de chat.
Khoj (khoj-ai en GitHub, unas 36K estrellas) es un segundo cerebro de IA autoalojable: indexa tus notas y documentos (markdown, org-mode, PDFs, y más), y luego te deja chatear sobre ellos, ejecutar agentes personalizados con sus propias personas y herramientas, programar automatizaciones que se disparan en un cron, y lanzar ejecuciones de investigación de varios pasos. Hay una app alojada, pero el servidor autoalojado es donde aplican los endpoints personalizados, y es el despliegue que describe esta página. Cada una de esas funciones canaliza a través del modelo de chat que seleccionas. El chat de documentos empaqueta fragmentos de notas recuperados en el prompt, los agentes añaden llamadas a herramientas e instrucciones de persona, las automatizaciones ejecutan el mismo pipeline sin supervisión, y el modo de investigación encadena muchas llamadas de modelo por pregunta. Model Type Openai le dice a Khoj que hable /v1/chat/completions con la Api Base Url de la entrada AI Model API vinculada, reenviando el Name del modelo como un string simple, por lo que un id de Claude o DeepSeek funciona ahí mientras el endpoint lo sirva. Los embeddings de búsqueda son un subsistema distinto. Khoj incrusta tus documentos con un modelo local de sentence-transformers por defecto, así que la indexación y la búsqueda semántica siguen funcionando independientemente de lo que hagas con el endpoint de chat. Enrutar el chat a través de un gateway solo mueve la factura de razonamiento.
Configuración completa: entradas del panel de administración paso a paso.
En un servidor en ejecución, toda la integración son tres pantallas de administración. Primero, añade la AI Model API: abre /server/admin/database/aimodelapi/add, nómbrala, pega la clave del gateway en Api Key, y configura Api Base Url a https://api.apisrouter.com/v1. Segundo, añade modelos de chat: en /server/admin/database/chatmodel/add, configura Name a un id exacto del catálogo (claude-sonnet-4-6, deepseek-v4-flash), configura Model Type a Openai, vincula la entrada Ai Model Api que acabas de crear, y configura Max prompt size a un valor que quepa en la ventana de contexto del modelo. La documentación aconseja dejar Tokenizer sin configurar para modelos de tipo OpenAI. Repite por cada modelo que quieras en el selector. Tercero, selecciona el modelo: en /settings, elige tu nuevo modelo de chat como el predeterminado. Los agentes pueden anular el modelo por agente, que es cómo una instancia de Khoj ejecuta un id rápido para automatizaciones diarias y un id de vanguardia para investigación.
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 modelElegir modelos para un segundo cerebro.
Como los modelos de chat son filas que añades contra una AI Model API, mantener dos o tres ids en el selector no cuesta nada. La configuración práctica es un valor por defecto rápido más una escalada de vanguardia, ambos facturados a través de la misma clave para que el log de uso muestre lo que realmente cuesta cada nivel sobre tus notas.
- El chat de documentos consume mucha entrada: los fragmentos de notas recuperados eclipsan la respuesta. El precio por token de entrada domina el coste por pregunta, lo que favorece a claude-haiku-4-5-20251001, deepseek-v4-flash o gemini-3.5-flash para el recuerdo cotidiano.
- El modo de investigación multiplica las llamadas. Una pregunta de investigación puede encadenar muchos turnos de modelo, así que el id que asignes ahí mueve la factura más que cualquier otro ajuste; claude-sonnet-4-6 es la elección equilibrada, gpt-5.4 la escalada.
- Las automatizaciones programadas corren sin supervisión. Tásalas como una suscripción: llamadas por día por tokens por llamada, que es exactamente lo que reporta el log de uso por clave.
- El conocimiento personal es rico en contradicciones (los planes cambian, las notas caducan), y los modelos difieren en lo bien que señalan notas contradictorias en lugar de mezclarlas; prueba dos ids en el mismo conjunto de preguntas antes de comprometerte.
- Max prompt size es por modelo de chat en Khoj, así que un id de contexto largo solo compensa si subes ese campo para que coincida.
Pago por uso · por debajo del precio oficial
Selected models are priced below official list prices. Exact input, output, cache, and per-request prices are shown for each model.
| Modelo | Precio oficial | Nuestro precio |
|---|---|---|
| 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 |
Modos de fallo específicos de Khoj.
La variable de entorno es una siembra de primera ejecución, no un ajuste en vivo. OPENAI_BASE_URL se lee durante la inicialización para crear la entrada de proveedor y descubrir modelos; en un servidor que ya se inicializó, editar el archivo de compose no cambia nada visible. Usa el panel de administración para cambios después del primer arranque, o reinicia la base de datos si genuinamente quieres una siembra nueva. La trampa de la clave de marcador de posición: cuando OPENAI_BASE_URL se configura sin OPENAI_API_KEY, Khoj rellena la clave con un marcador de posición para que servidores locales como Ollama funcionen. Un gateway requiere una clave real, así que si la siembra de primera ejecución ocurrió sin una, los chats fallan con errores de autenticación hasta que pegues la clave en la entrada AI Model API en el panel de administración. El auto-descubrimiento siembra todo. Como la inicialización lista cada modelo que sirve el endpoint, un gateway multi-proveedor puede sembrar una tabla de modelos larga. Inofensivo, pero conviene podarlo en el panel de administración para que el selector siga siendo usable. El Name del modelo de chat es exacto. Khoj lo reenvía tal cual; una errata aparece como modelo no encontrado en el primer mensaje, y la salida de /v1/models del gateway es la ortografía autorizada. Y si la búsqueda semántica sobre tus notas se comporta mal, eso es el subsistema de embedding local, sin relación con el endpoint de chat.
Quién enruta Khoj a través de un gateway.
- Autoalojadores que quieren chat de modelo de vanguardia sobre sus notas sin una cuenta de proveedor por familia de modelos; una clave cubre los ids de Claude, GPT, DeepSeek y Gemini.
- Usuarios que ejecutan automatizaciones programadas a diario, donde un id rápido mantiene el coste recurrente plano y el log de uso lo hace visible.
- Configuraciones centradas en la privacidad que mantienen la indexación y los embeddings locales y exponen solo los prompts de chat a un endpoint auditable.
- Curiosos que comparan modelos de chat sobre un corpus personal idéntico: cada candidato es una fila de modelo de chat contra la misma AI Model API.
- Desarrolladores sin acceso a la facturación de un proveedor concreto. El acceso mediante recarga sin necesidad de tarjeta elimina la dependencia de registrarse en cada proveedor.
Verifica el endpoint y depura el primer chat.
Revisa el gateway primero: lista los modelos con tu clave y confirma los ids que planeas registrar. El propio auto-descubrimiento de Khoj hace la misma llamada durante la siembra de primera ejecución, así que si este curl funciona, la siembra también funcionará. Los fallos se localizan con claridad. Los errores de autenticación significan que la Api Key en la entrada AI Model API está mal o todavía es el marcador de posición sembrado. Modelo no encontrado significa que un Name de modelo de chat no coincide con la ortografía del catálogo. Las respuestas que se cortan a mitad de camino suelen significar que Max prompt size o el techo de salida del modelo están demasiado bajos para la conversación. Los problemas de indexación y búsqueda son el pipeline de embedding local y no tienen nada que ver con el endpoint. Una vez que los chats fluyen, la consola de APIsRouter muestra el modelo por petición, el recuento de tokens y el gasto. Las automatizaciones y las ejecuciones de investigación son donde se esconden los costes del segundo cerebro, y el uso por clave es cómo los ves por función en lugar de como una sorpresa mensual.
curl -s https://api.apisrouter.com/v1/models \
-H "Authorization: Bearer $APISROUTER_API_KEY" | head -50Preguntas frecuentes
¿Khoj admite un proxy o gateway compatible con OpenAI?
Sí, como una configuración documentada: crea una entrada AI Model API con una Api Base Url apuntando al endpoint, luego añade modelos de chat con Model Type Openai. El archivo de compose también expone OPENAI_BASE_URL para la siembra en la primera ejecución.
¿Puede Khoj chatear con modelos de Claude o DeepSeek a través de esto?
Sí. Model Type Openai reenvía el Name del modelo de chat como un string simple sobre /v1/chat/completions a la Api Base Url. Funciona cualquier id que sirva el gateway, incluidos ids de Claude, DeepSeek, GLM y Gemini.
¿Por qué no pasó nada al cambiar OPENAI_BASE_URL en docker-compose?
La variable siembra proveedores y modelos solo durante la inicialización de primera ejecución. En un servidor ya inicializado, edita la entrada AI Model API en el panel de administración en su lugar; ese es el ajuste en vivo.
¿La base URL personalizada afecta la búsqueda de documentos de Khoj?
No. Khoj incrusta y busca tus documentos con un modelo local de sentence-transformers por defecto. La entrada AI Model API mueve solo el chat, los agentes, las automatizaciones y la investigación.
¿Qué es Max prompt size en la entrada del modelo de chat?
Un tope por modelo de cuánto prompt empaqueta Khoj en una petición. Configúralo para que quepa en la ventana de contexto del modelo; demasiado bajo trunca las notas recuperadas, y un id de contexto largo solo ayuda si este campo se sube para coincidir.
¿Esto aplica a la app alojada de Khoj?
No, los endpoints personalizados son una característica de autoalojamiento. La app alojada gestiona sus propios modelos del lado del servidor; las superficies de panel de administración y entorno de aquí pertenecen a un servidor que ejecutas tú mismo.