Chạy second brain Khoj của bạn trên một base URL OpenAI tùy chỉnh.
Updated 2026-07-29
Khoj ghi rõ cài đặt OpenAI-proxy với hai bề mặt: một biến môi trường OPENAI_BASE_URL gieo mầm model ở lần chạy đầu, và một entry AI Model API trong panel admin với field Api Base Url. Trỏ một trong hai vào https://api.apisrouter.com/v1 và chat, agent, và automation chạy trên bất kỳ model catalog nào.
Câu trả lời nhanh: biến môi trường lúc chạy đầu, panel admin bất cứ lúc nào.
File compose tự host của Khoj mang một dòng OPENAI_BASE_URL đã comment, theo lời chính nó, dành cho các provider tương thích OpenAI API khác. Đặt nó thành https://api.apisrouter.com/v1 với OPENAI_API_KEY chứa một key gateway trước lần khởi động đầu tiên, và quá trình khởi tạo của Khoj làm một việc hữu ích khác thường: nó truy vấn danh sách model của endpoint và gieo mầm bảng chat-model của nó với mọi id endpoint phục vụ, nên catalog xuất hiện trong bộ chọn model của Khoj mà không cần nhập tay. Trên một server đã khởi tạo, hãy dùng panel admin thay vào đó. Tạo một entry AI Model API (field: Name, Api Key, Api Base Url) trỏ vào gateway, sau đó tạo các entry Chat Model có Name là model id chính xác, với Model Type đặt là Openai và liên kết tới entry AI Model API đó. Cả hai bề mặt đều có tài liệu trong hướng dẫn OpenAI-proxy của Khoj tại docs.khoj.dev.
services:
server:
environment:
- OPENAI_BASE_URL=https://api.apisrouter.com/v1
- OPENAI_API_KEY=sk-YOUR-APISROUTER-KEYKhoj làm gì với chat model của nó.
Khoj (khoj-ai trên GitHub, khoảng 36K star) là một second brain AI tự host được: nó lập chỉ mục ghi chú và tài liệu của bạn (markdown, org-mode, PDF, và nhiều hơn), sau đó cho phép bạn chat trên chúng, chạy agent tùy chỉnh với persona và tool riêng, lên lịch automation chạy theo cron, và khởi chạy các phiên nghiên cứu nhiều bước. Có một app đã host, nhưng server tự host là nơi endpoint tùy chỉnh áp dụng, và đó là deployment trang này mô tả. Mỗi tính năng trong số đó đều đổ qua chat model bạn chọn. Chat tài liệu nhồi các đoạn ghi chú truy xuất vào prompt, agent thêm gọi tool và chỉ dẫn persona, automation chạy cùng pipeline không người giám sát, và chế độ nghiên cứu xâu chuỗi nhiều lệnh gọi model mỗi câu hỏi. Model Type Openai báo cho Khoj nói /v1/chat/completions tới Api Base Url của entry AI Model API đã liên kết, chuyển tiếp model Name như một chuỗi thuần, đây là lý do một id Claude hoặc DeepSeek hoạt động ở đó miễn là endpoint phục vụ nó. Embedding tìm kiếm là một hệ thống con khác. Khoj nhúng tài liệu của bạn bằng một model sentence-transformers cục bộ theo mặc định, nên lập chỉ mục và tìm kiếm ngữ nghĩa tiếp tục hoạt động bất kể bạn làm gì với endpoint chat. Định tuyến chat qua một gateway chỉ di chuyển hóa đơn lý luận.
Cài đặt đầy đủ: các entry panel admin từng bước.
Trên một server đang chạy, toàn bộ tích hợp là ba màn hình admin. Đầu tiên, thêm AI Model API: mở /server/admin/database/aimodelapi/add, đặt tên, dán key gateway vào Api Key, và đặt Api Base Url thành https://api.apisrouter.com/v1. Thứ hai, thêm chat model: tại /server/admin/database/chatmodel/add, đặt Name thành một id catalog chính xác (claude-sonnet-4-6, deepseek-v4-flash), đặt Model Type thành Openai, liên kết entry Ai Model Api bạn vừa tạo, và đặt Max prompt size thành một giá trị vừa với cửa sổ context của model. Tài liệu khuyên để trống Tokenizer cho model kiểu OpenAI. Lặp lại cho mỗi model bạn muốn trong bộ chọn. Thứ ba, chọn model: trên /settings, chọn chat model mới của bạn làm mặc định. Agent có thể ghi đè model theo từng agent, đây là cách một instance Khoj chạy một id nhanh cho automation hằng ngày và một id đỉnh cao cho nghiên cứu.
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 modelChọn model cho một second brain.
Vì chat model là các hàng bạn thêm vào một AI Model API, giữ hai hoặc ba id trong bộ chọn không tốn gì. Cài đặt thực tế là một mặc định nhanh cộng một bước leo thang đỉnh cao, cả hai đều thanh toán qua cùng key nên log sử dụng cho thấy mỗi tầng thực sự tốn bao nhiêu trên ghi chú của bạn.
- Chat tài liệu nặng đầu vào: các đoạn ghi chú truy xuất áp đảo câu trả lời. Giá theo token đầu vào quyết định chi phí mỗi câu hỏi, điều này ưu ái claude-haiku-4-5-20251001, deepseek-v4-flash, hoặc gemini-3.5-flash cho việc gợi nhớ hằng ngày.
- Chế độ nghiên cứu nhân số lần gọi. Một câu hỏi nghiên cứu có thể xâu chuỗi nhiều lượt model, nên id bạn gán ở đó làm chuyển động hóa đơn hơn bất kỳ cài đặt nào khác; claude-sonnet-4-6 là lựa chọn cân bằng, gpt-5.4 là bước leo thang.
- Automation theo lịch chạy không người giám sát. Hãy định giá chúng như một gói thuê bao: số lệnh gọi mỗi ngày nhân số token mỗi lệnh gọi, đúng thứ log sử dụng theo từng key báo cáo.
- Kiến thức cá nhân giàu mâu thuẫn (kế hoạch thay đổi, ghi chú lỗi thời), và các model khác nhau về mức độ tốt trong việc gắn cờ ghi chú mâu thuẫn thay vì trộn chúng lại; hãy kiểm tra hai id trên cùng bộ câu hỏi trước khi chốt.
- Max prompt size là theo từng chat model trong Khoj, nên một id long-context chỉ đáng giá nếu bạn nâng field đó lên tương ứng.
Trả theo mức sử dụng · thấp hơn giá chính thức
Selected models are priced below official list prices. Exact input, output, cache, and per-request prices are shown for each model.
| Mô hình | Giá chính thức | Giá của chúng tôi |
|---|---|---|
| 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 |
Các kiểu lỗi đặc thù của Khoj.
Biến môi trường là hạt giống lần chạy đầu, không phải cài đặt trực tiếp. OPENAI_BASE_URL chỉ được đọc trong lúc khởi tạo để tạo mục provider và khám phá model; trên một server đã khởi tạo, sửa file compose không thay đổi gì bạn nhìn thấy được. Hãy dùng panel admin cho các thay đổi sau lần khởi động đầu, hoặc reset database nếu bạn thực sự muốn gieo mầm lại từ đầu. Bẫy key placeholder: khi OPENAI_BASE_URL được đặt mà không có OPENAI_API_KEY, Khoj điền key bằng một placeholder để các server cục bộ như Ollama vẫn hoạt động. Một gateway cần một key thật, nên nếu việc gieo mầm lần chạy đầu xảy ra mà không có key, chat sẽ thất bại với lỗi xác thực cho tới khi bạn dán key vào entry AI Model API trong panel admin. Auto-discovery gieo mầm mọi thứ. Vì khởi tạo liệt kê mọi model endpoint phục vụ, một gateway đa vendor có thể gieo mầm một bảng model dài. Vô hại, nhưng đáng để cắt tỉa trong panel admin để bộ chọn vẫn dùng được. Chat model Name phải chính xác. Khoj chuyển tiếp nó nguyên văn; một lỗi chính tả hiện ra là model-not-found ở tin nhắn đầu tiên, và output /v1/models của gateway là cách viết chuẩn. Và nếu tìm kiếm ngữ nghĩa trên ghi chú của bạn hành xử sai, đó là hệ thống con embedding cục bộ, không liên quan tới endpoint chat.
Ai định tuyến Khoj qua một gateway.
- Người tự host muốn chat model đỉnh cao trên ghi chú của họ mà không cần tài khoản vendor cho mỗi họ model; một key bao phủ id Claude, GPT, DeepSeek, và Gemini.
- Người dùng chạy automation theo lịch hằng ngày, nơi một id nhanh giữ chi phí định kỳ ổn định và log sử dụng làm nó hiển thị.
- Các thiết lập chú trọng quyền riêng tư giữ lập chỉ mục và embedding cục bộ và chỉ phơi bày prompt chat ra một endpoint có thể kiểm toán.
- Người thích tinh chỉnh so sánh chat model trên một corpus cá nhân giống hệt nhau: mỗi ứng viên là một hàng chat-model chống lại cùng AI Model API.
- Lập trình viên không có quyền truy cập billing của một vendor cụ thể. Truy cập dựa trên nạp tiền không yêu cầu thẻ loại bỏ phụ thuộc đăng ký theo từng provider.
Xác minh endpoint và debug chat đầu tiên.
Kiểm tra gateway trước: liệt kê model với key của bạn và xác nhận các id bạn định đăng ký. Auto-discovery của chính Khoj thực hiện đúng lệnh gọi này trong lúc gieo mầm lần chạy đầu, nên nếu curl này hoạt động, việc gieo mầm cũng sẽ vậy. Lỗi khoanh vùng rõ ràng. Lỗi xác thực nghĩa là Api Key trên entry AI Model API sai hoặc vẫn là placeholder đã gieo mầm. Model-not-found nghĩa là một chat model Name không khớp cách viết catalog. Câu trả lời bị cắt giữa chừng thường nghĩa là Max prompt size hoặc trần đầu ra của model đặt quá thấp cho hội thoại. Vấn đề lập chỉ mục và tìm kiếm là pipeline embedding cục bộ và không liên quan gì tới endpoint. Khi chat đã chạy, console APIsRouter hiển thị model theo từng request, số lượng token, và chi tiêu. Automation và các phiên nghiên cứu là nơi chi phí second-brain ẩn giấu, và sử dụng theo từng key là cách bạn thấy chúng theo từng tính năng thay vì một bất ngờ hằng tháng.
curl -s https://api.apisrouter.com/v1/models \
-H "Authorization: Bearer $APISROUTER_API_KEY" | head -50Câu hỏi thường gặp
Khoj có hỗ trợ một proxy hoặc gateway tương thích OpenAI không?
Có, như một cài đặt có tài liệu: tạo một entry AI Model API với Api Base Url trỏ vào endpoint, sau đó thêm chat model với Model Type Openai. File compose cũng phơi ra OPENAI_BASE_URL để gieo mầm lần chạy đầu.
Khoj có thể chat với model Claude hoặc DeepSeek qua cách này không?
Có. Model Type Openai chuyển tiếp chat model Name như một chuỗi thuần qua /v1/chat/completions tới Api Base Url. Bất kỳ id nào gateway phục vụ đều hoạt động, gồm cả id Claude, DeepSeek, GLM, và Gemini.
Vì sao đổi OPENAI_BASE_URL trong docker-compose không có tác dụng?
Biến này chỉ gieo mầm provider và model trong lúc khởi tạo lần chạy đầu. Trên một server đã khởi tạo, hãy sửa entry AI Model API trong panel admin thay vào đó; đó mới là cài đặt trực tiếp.
Base URL tùy chỉnh có ảnh hưởng tới tìm kiếm tài liệu của Khoj không?
Không. Khoj nhúng và tìm kiếm tài liệu của bạn bằng một model sentence-transformers cục bộ theo mặc định. Entry AI Model API chỉ di chuyển chat, agent, automation, và nghiên cứu.
Max prompt size trên entry chat model là gì?
Một giới hạn theo từng model về lượng prompt Khoj nhồi vào một request. Hãy đặt nó vừa với cửa sổ context của model; quá thấp sẽ cắt bớt ghi chú truy xuất, và một id long-context chỉ hữu ích nếu field này được nâng lên tương ứng.
Điều này có áp dụng cho app Khoj đã host không?
Không, endpoint tùy chỉnh là một tính năng tự host. App đã host quản lý model riêng của nó ở phía server; các bề mặt panel admin và môi trường ở đây thuộc về một server bạn tự chạy.