커스텀 OpenAI base URL로 Khoj 세컨드 브레인 실행하기.

Updated 2026-07-29

Khoj는 두 표면을 가진 OpenAI 프록시 설정을 문서화합니다: 첫 실행 시 모델을 시딩하는 OPENAI_BASE_URL 환경 변수, 그리고 Api Base Url 필드가 있는 관리자 패널의 AI Model API 항목. 둘 중 하나를 https://api.apisrouter.com/v1로 지정하면 채팅, 에이전트, 자동화가 카탈로그의 어떤 모델에서든 실행됩니다.

빠른 답: 첫 실행에는 환경 변수, 이후에는 언제든 관리자 패널.

Khoj의 셀프 호스팅 compose 파일에는 다른 OpenAI API 호환 프로바이더를 위한 것이라고 스스로 밝힌 주석 처리된 OPENAI_BASE_URL 줄이 있습니다. 첫 시작 전에 이를 https://api.apisrouter.com/v1로, OPENAI_API_KEY를 게이트웨이 키로 설정하면 Khoj의 초기화가 유난히 유용한 일을 합니다: 엔드포인트의 모델 목록을 조회해 엔드포인트가 서빙하는 모든 id로 자체 채팅 모델 테이블을 시딩하므로, 수동 입력 없이도 카탈로그가 Khoj의 모델 선택기에 나타납니다. 이미 초기화된 서버에서는 대신 관리자 패널을 사용하세요. 게이트웨이를 가리키는 AI Model API 항목(필드: Name, Api Key, Api Base Url)을 만든 다음, Name이 정확한 모델 id이고 Model Type이 Openai로 설정되어 그 AI Model API에 연결된 Chat Model 항목을 만드세요. 두 표면 모두 docs.khoj.dev의 Khoj OpenAI 프록시 가이드에 문서화되어 있습니다.

services:
  server:
    environment:
      - OPENAI_BASE_URL=https://api.apisrouter.com/v1
      - OPENAI_API_KEY=sk-YOUR-APISROUTER-KEY

Khoj가 채팅 모델로 하는 일.

Khoj(GitHub의 khoj-ai, 약 3.6만 스타)는 셀프 호스팅 가능한 AI 세컨드 브레인입니다: 여러분의 노트와 문서(마크다운, org-mode, PDF 등)를 인덱싱한 다음, 그 위에서 채팅하고, 고유한 페르소나와 툴을 가진 커스텀 에이전트를 실행하고, cron으로 발동하는 자동화를 예약하고, 다단계 리서치 실행을 시작하게 해줍니다. 호스팅된 앱도 있지만, 커스텀 엔드포인트가 적용되는 곳은 셀프 호스팅 서버이며 이 페이지가 설명하는 배포판도 그것입니다. 이 기능들 하나하나가 선택한 채팅 모델을 통해 흘러갑니다. 문서 채팅은 검색된 노트 청크를 프롬프트에 채우고, 에이전트는 툴 호출과 페르소나 지시를 더하고, 자동화는 같은 파이프라인을 무인으로 실행하며, 리서치 모드는 질문당 여러 모델 호출을 연쇄합니다. Model Type Openai는 Khoj에게 연결된 AI Model API 항목의 Api Base Url로 /v1/chat/completions를 말하고 model Name을 순수 문자열로 전달하라고 지시하므로, 엔드포인트가 서빙하기만 한다면 Claude나 DeepSeek id도 그곳에서 작동합니다. 검색 임베딩은 다른 서브시스템입니다. 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를 설정하세요. 문서는 OpenAI 타입 모델에 대해서는 Tokenizer를 설정하지 않은 채로 두라고 권합니다. 선택기에 넣고 싶은 모델마다 반복하세요. 셋째, 모델을 선택하세요: /settings에서 새 채팅 모델을 기본값으로 선택하세요. 에이전트는 에이전트별로 모델을 오버라이드할 수 있으며, 이것이 하나의 Khoj 인스턴스가 일상 자동화에는 빠른 id를, 리서치에는 프론티어 id를 실행하는 방식입니다.

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가 유리합니다.
  • 리서치 모드는 호출을 곱합니다. 리서치 질문 하나가 여러 모델 턴을 연쇄할 수 있으므로, 그곳에 배정한 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를 쓰는가.

  • 모델 패밀리마다 벤더 계정 없이 노트에 대해 프론티어 모델 채팅을 원하는 셀프 호스터 — 키 하나로 Claude, GPT, DeepSeek, Gemini id를 커버합니다.
  • 매일 예약된 자동화를 운영하는 사용자 — 빠른 id가 반복 비용을 평평하게 유지하고 사용량 로그가 이를 눈에 보이게 합니다.
  • 인덱싱과 임베딩은 로컬에 두고 채팅 프롬프트만 감사 가능한 엔드포인트 하나에 노출하는 프라이버시 중시 설정.
  • 동일한 개인 코퍼스에서 채팅 모델을 비교하는 실험가들 — 각 후보는 같은 AI Model API를 대상으로 한 채팅 모델 행일 뿐입니다.
  • 특정 벤더의 결제 수단에 접근할 수 없는 개발자. 카드 없이 충전만으로 사용할 수 있어 프로바이더별 가입 의존성이 사라집니다.

엔드포인트 검증 및 첫 채팅 디버깅.

먼저 게이트웨이를 확인하세요: 키로 모델을 나열하고 등록하려는 id를 확인하세요. Khoj 자체의 자동 탐색도 첫 실행 시딩 중에 같은 호출을 하므로, 이 curl이 작동하면 시딩도 작동할 것입니다. 실패는 깔끔하게 국지화됩니다. 인증 오류는 AI Model API 항목의 Api Key가 잘못됐거나 여전히 시딩된 플레이스홀더라는 뜻입니다. Model-not-found는 채팅 모델 Name이 카탈로그 표기와 일치하지 않는다는 뜻입니다. 답변이 도중에 끊긴다면 보통 Max prompt size나 모델의 출력 상한이 대화에 비해 너무 낮게 설정됐다는 뜻입니다. 인덱싱과 검색 문제는 로컬 임베딩 파이프라인 문제이며 엔드포인트와는 무관합니다. 채팅이 흐르기 시작하면 APIsRouter 콘솔에서 요청별 모델, 토큰 수, 지출을 볼 수 있습니다. 자동화와 리서치 실행이 세컨드 브레인 비용이 숨는 곳이며, 키별 사용량은 매달의 한 번의 놀라움이 아니라 기능별로 그것을 보는 방법입니다.

curl -s https://api.apisrouter.com/v1/models \
  -H "Authorization: Bearer $APISROUTER_API_KEY" | head -50

자주 묻는 질문

Khoj가 OpenAI 호환 프록시나 게이트웨이를 지원하나요?

네, 문서화된 설정으로 지원합니다: 엔드포인트를 가리키는 Api Base Url을 가진 AI Model API 항목을 만든 다음 Model Type Openai로 채팅 모델을 추가하세요. compose 파일도 첫 실행 시딩을 위해 OPENAI_BASE_URL을 노출합니다.

Khoj가 이를 통해 Claude나 DeepSeek 모델과 채팅할 수 있나요?

네. Model Type Openai는 채팅 모델 Name을 순수 문자열로 /v1/chat/completions를 통해 Api Base Url로 전달합니다. 게이트웨이가 서빙하는 어떤 id도 작동하며, Claude, DeepSeek, GLM, Gemini id도 포함됩니다.

docker-compose에서 OPENAI_BASE_URL을 바꿨는데 왜 아무 일도 안 일어났나요?

그 변수는 첫 실행 초기화 중에만 프로바이더와 모델을 시딩합니다. 이미 초기화된 서버에서는 대신 관리자 패널의 AI Model API 항목을 편집하세요; 그것이 실시간 설정입니다.

커스텀 base URL이 Khoj의 문서 검색에 영향을 주나요?

아니요. Khoj는 기본적으로 로컬 sentence-transformers 모델로 문서를 임베드하고 검색합니다. AI Model API 항목은 채팅, 에이전트, 자동화, 리서치만 이동시킵니다.

채팅 모델 항목의 Max prompt size는 무엇인가요?

Khoj가 요청에 채워 넣는 프롬프트 양의 모델별 상한입니다. 모델의 컨텍스트 윈도우에 맞게 설정하세요; 너무 낮으면 검색된 노트가 잘려나가고, 롱컨텍스트 id는 이 필드를 맞게 올려야만 도움이 됩니다.

이것이 호스팅된 Khoj 앱에도 적용되나요?

아니요, 커스텀 엔드포인트는 셀프 호스팅 기능입니다. 호스팅된 앱은 서버 사이드에서 자체 모델을 관리합니다; 여기의 관리자 패널과 환경 변수 표면은 여러분이 직접 운영하는 서버에 속합니다.