NextChat을 커스텀 OpenAI 호환 엔드포인트로 지정하기.

Updated 2026-07-29

NextChat은 서버 배포에서 환경 변수 BASE_URL 하나로 API 호스트를 오버라이드하거나, 클라이언트에서는 Settings 안의 앱 내 커스텀 엔드포인트로 오버라이드합니다. @OpenAI 접미사를 붙여 CUSTOM_MODELS에 카탈로그 id를 추가하면 Claude, Gemini, DeepSeek가 키 하나 아래 같은 모델 선택기에 나타납니다.

빠른 답: BASE_URL, 키 하나, 모델 목록.

서버 배포(Vercel, Docker, 또는 순수 Node)에서는 환경 변수 세 개가 전체 작업을 해냅니다. BASE_URL은 API 요청이 어디로 가는지 오버라이드합니다; README는 이를 "override openai api request base url"이라고 설명하며 기본값은 https://api.openai.com이고, NextChat이 스스로 요청 경로를 덧붙이므로 값에는 /v1 없이 입력합니다. OPENAI_API_KEY는 게이트웨이 키를 담습니다. CUSTOM_MODELS는 모델 선택기를 제어합니다: plus는 모델을 추가하고, minus는 하나를 숨기고, -all은 기본 목록을 지우고, name=displayName은 항목의 이름을 바꿉니다. 멀티벤더 id가 작동하게 만드는 세부사항은 프로바이더 접미사입니다. NextChat은 여러 벤더를 위한 별도의 클라이언트 코드 경로를 갖추고 있으므로, CUSTOM_MODELS에 추가한 순수 claude id는 Anthropic 경로로 흘러갈 수 있는데 그 경로는 다른 키와 요청 형식을 기대합니다. +claude-sonnet-4-6@OpenAI처럼 id에 @OpenAI를 붙이면 어느 벤더가 그 모델을 훈련했든 상관없이 모델을 OpenAI 호환 경로에 고정해 요청이 여러분의 BASE_URL로 표준 chat-completions 형식으로 갑니다.

BASE_URL=https://api.apisrouter.com        # no /v1
OPENAI_API_KEY=sk-APIsRouter-...
CUSTOM_MODELS=-all,+claude-sonnet-4-6@OpenAI,+gpt-5.5@OpenAI,+deepseek-v4-pro@OpenAI
DEFAULT_MODEL=claude-sonnet-4-6

NextChat이 엔드포인트를 해석하는 방식.

NextChat(GitHub의 ChatGPTNextWeb, 약 8.8만 스타)은 세상에 존재하는 가장 많이 배포된 채팅 프론트엔드 중 하나입니다: 원클릭 Vercel 배포가 가능한 가벼운 웹 앱에 iOS, macOS, Android, Windows, Linux용 패키징된 클라이언트가 더해집니다. 이 인기는 정확히 이 페이지가 쓰는 메커니즘, 즉 모든 것이 설정 표면이며 엔드포인트도 그저 또 하나의 설정일 뿐이라는 사실에서 나옵니다. 이 표면은 두 개가 있습니다. 서버 배포는 빌드와 부팅 시 환경 변수를 읽습니다: BASE_URL이 호스트를 결정하고, OPENAI_API_KEY가 인증하고, CUSTOM_MODELS가 그 배포판의 모든 사용자를 위한 선택기 모양을 만듭니다. 클라이언트와 웹 UI는 추가로 앱 내 경로를 노출합니다: Settings, Model Provider, OpenAI 선택 후 엔드포인트와 키 필드를 채우고 커스텀 모델 이름 필드에 추가 id를 나열합니다. 앱 내 경로는 값을 기기별로 로컬 저장하므로 개인 클라이언트에 맞는 표면이고, 환경 변수는 다른 사람들이 쓰는 배포판에 맞는 표면입니다. 어느 쪽이든 NextChat을 떠나는 요청은 model id를 순수 문자열로 하는 표준 채팅 완성입니다. BASE_URL 뒤에 멀티벤더 게이트웨이가 있으면 같은 배포판이 긴 답변에는 Claude를, 빠른 질문에는 빠른 Gemini id를, 이중 언어 트래픽에는 DeepSeek나 GLM을 서빙하며, 모두 키 하나로 이루어집니다.

전체 설정: 서버 배포 또는 앱 내 설정.

Vercel 배포의 경우, 프로젝트의 환경 설정에서 변수를 설정하고 다시 배포하세요; Vercel은 빌드 시점에 env 값을 굽기 때문에 재배포 없이 변수를 편집해도 아무것도 바뀌지 않습니다. Docker의 경우, 같은 변수를 -e 플래그나 env 파일로 전달하세요. CODE 변수는 공개 배포판에서 설정할 가치가 있습니다. 비밀번호로 접근을 게이트해 낯선 사람이 여러분의 키를 쓰지 못하게 막습니다. 앱 내 경로는 배포가 전혀 필요 없습니다. Settings에서 OpenAI 프로바이더를 선택하고, 엔드포인트를 https://api.apisrouter.com으로 교체하고, 키를 붙여넣고, 환경 변수와 같은 문법으로 커스텀 모델 이름 필드에 id를 추가하세요. 이것이 데스크톱과 모바일 클라이언트가 게이트웨이와 작동하는 방식이며, 서버 배포에 값을 확정하기 전에 테스트하는 가장 빠른 방법이기도 합니다. DEFAULT_MODEL은 새 채팅이 무엇으로 시작할지 고릅니다. 대부분의 사용자가 모델을 절대 바꾸지 않으므로 공유 배포판에서는 이것이 들리는 것보다 더 중요합니다: 기본 id가 지출의 대부분이 떨어지는 곳입니다. 일상적인 트래픽을 감당하길 원하는 모델로 의도적으로 설정하세요.

docker run -d -p 3000:3000 \
  -e BASE_URL=https://api.apisrouter.com \
  -e OPENAI_API_KEY=$APISROUTER_API_KEY \
  -e CUSTOM_MODELS="-all,+claude-sonnet-4-6@OpenAI,+claude-haiku-4-5-20251001@OpenAI,+gemini-3.5-flash@OpenAI" \
  -e DEFAULT_MODEL=claude-haiku-4-5-20251001 \
  -e CODE=your-access-password \
  yidadaa/chatgpt-next-web

선택기를 위한 모델 선택.

선택기 전체가 키 하나로 청구되므로, 조정 루프는 관찰적입니다: 일주일을 돌리고, 콘솔의 모델별 사용량을 읽고, 예상이 아니라 사람들이 실제로 클릭한 것을 중심으로 CUSTOM_MODELS를 다시 빚으세요.

  • 목록을 -all로 시작하세요. 기본 선택기는 OpenAI 전용의 긴 메뉴입니다; 이를 비우고 의도적인 네다섯 개 id를 추가하면 사용자에게 여러분이 가격을 매긴 선택지만 남는 선택기가 됩니다.
  • 기본 모델이 배포판을 짊어집니다. DEFAULT_MODEL로 claude-haiku-4-5-20251001이나 gemini-3.5-flash를 두면 일상적인 다수의 턴을 빠르고 저렴하게 유지하면서도 더 강한 id는 클릭 한 번 거리에 둡니다.
  • 장문 작업은 프론티어 자리를 받을 자격이 있습니다. claude-sonnet-4-6과 gpt-5.5는 초안이나 분석이 중요할 때 사용자가 손을 뻗는 픽입니다.
  • 이중 언어 배포판은 deepseek-v4-pro나 glm-5.2를 포함해야 합니다; NextChat은 엄청난 중국어권 설치 기반을 갖고 있고 이 id들이 그 트래픽에 원래부터 잘 맞습니다.
  • 이름 변경은 공짜 문서화입니다: claude-sonnet-4-6=Sonnet (writing) 형태의 항목은 비기술적 사용자에게도 선택기를 자명하게 만들어줍니다.

사용한 만큼 지불 · 공식 요금보다 저렴

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.5$5.00 / $30.00 per M$4.00 / $24.00 per M
Gemini 3.5 Flash$1.50 / $9.00 per M$1.20 / $7.20 per M
GLM-5.2$1.14 / $4.00 per M$1.10 / $4.00 per M

NextChat 특유의 실패 패턴.

/v1 실수는 대부분의 다른 도구와 반대 방향으로 일어납니다. NextChat이 스스로 BASE_URL에 요청 경로를 덧붙이므로 값에는 /v1 없이 넣어야 합니다; https://api.apisrouter.com/v1을 붙여넣으면 경로가 중복되어 404가 납니다. LibreChat 같은 도구는 base URL에 /v1이 포함되기를 기대하므로, 사람들이 양방향으로 잘못된 습관을 가져오는 이유가 바로 이것입니다. 키나 헤더에 대해 오류를 내는 Claude id는 @OpenAI 접미사가 빠졌다는 뜻입니다. 없으면 NextChat이 그 id를 네이티브 Anthropic 경로로 라우팅할 수 있는데, 이는 절대 여러분의 게이트웨이를 위한 BASE_URL을 참조하지 않고 벤더 형식의 인증을 기대합니다. 모든 게이트웨이 id를 @OpenAI로 고정하면 요청이 모두 호환 경로를 탑니다. 아무것도 바꾸지 않는 env 편집은 재배포 문제입니다. Vercel에서는 변수가 빌드 시 읽히고, Docker에서는 컨테이너를 재생성해야 합니다. 반면 앱 내 설정은 즉시 적용되지만 그 기기에서만 적용되며, 이것이 같은 혼란의 다른 절반입니다. CODE와 OPENAI_API_KEY는 놀라울 정도로 자주 뒤바뀝니다. CODE는 사용자가 UI에 입력하는 접근 비밀번호이고, 키는 서버가 지출하는 것입니다. 어떤 채팅이든 시작되기 전에 사용자가 unauthorized 페이지를 보고한다면 그것은 CODE 문제이고, 채팅이 엔드포인트에서 실패한다면 그것은 키 문제입니다.

어떤 사람들이 게이트웨이를 통해 NextChat을 쓰는가.

  • Vercel에서 개인 배포판을 운영하며 벤더별 구독 대신 그 뒤에 계량된 키 하나만 두고 싶은 사람.
  • NextChat 인스턴스를 공유하는 소규모 팀 — 접근 제어에는 CODE를, 게이트웨이 키 하나로 사용량 로그가 곧 비용 리포트가 되게 씁니다.
  • 앱 내 엔드포인트를 게이트웨이로 지정해 모든 기기에서 하나의 선택기로 Claude, Gemini, DeepSeek에 도달하는 데스크톱과 모바일 클라이언트 사용자.
  • 네이티브 프로바이더 사일로가 어색하게 만드는 GLM과 DeepSeek id를 하나의 배포판에서 Claude, GPT와 섞는 이중 언어 사용자.
  • 특정 벤더의 결제 수단에 접근할 수 없는 개발자. 카드 없이 충전만으로 사용할 수 있어 프로바이더별 가입 의존성이 사라집니다.

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

배포하기 전에 엔드포인트를 증명하세요: 키로 모델을 나열하고 CUSTOM_MODELS에 넣으려는 모든 id가 정확한 표기로 나타나는지 확인하세요. id는 문자열로 전달되므로 /v1/models 출력이 정답 표기입니다. 그런 다음 배포하고 선택기의 모델마다 메시지를 하나씩 보내세요. 전부에서 404가 나면 BASE_URL에 /v1을 넣은 실수입니다. 401은 키 문제이며, 잘못됐거나 빌드가 실제로 사용한 환경에 존재하지 않는 것입니다. Claude id에서만 나는 오류는 @OpenAI 접미사가 빠진 것입니다. 여러분이 추가한 적 없는 모델이 선택기에 보인다면 CUSTOM_MODELS가 -all 프리픽스를 잃었거나 변수가 빌드에 도달하지 못한 것입니다. 채팅이 흐르기 시작하면 APIsRouter 콘솔에서 요청별 모델, 토큰 수, 지출을 볼 수 있습니다. 사용자가 한 명 이상인 배포판에서 이 뷰는 모든 NextChat 관리자가 결국 묻게 되는 질문, 즉 어떤 모델이 조용히 잔액을 갉아먹고 있는지를 추측이 아니라 데이터로 답해줍니다.

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

자주 묻는 질문

NextChat의 BASE_URL에 /v1을 포함해야 하나요?

아니요. NextChat이 스스로 요청 경로를 덧붙이므로 BASE_URL=https://api.apisrouter.com을 /v1 없이 설정하세요. 포함시키면 경로가 중복되어 404가 납니다. 이것은 base URL에 /v1이 포함되기를 기대하는 LibreChat 같은 도구와는 반대 관례입니다.

하나의 엔드포인트를 통해 NextChat에 Claude나 Gemini 모델을 어떻게 추가하나요?

CUSTOM_MODELS에 @OpenAI 접미사를 붙여 추가하세요, 예를 들면 +claude-sonnet-4-6@OpenAI. 접미사는 id를 OpenAI 호환 요청 경로에 고정해 NextChat의 네이티브 Anthropic이나 Google 클라이언트 경로 대신 여러분의 BASE_URL로 가게 만듭니다.

환경 변수와 앱 내 설정의 차이는 무엇인가요?

환경 변수는 모든 사용자를 위한 서버 배포판을 설정하며 바꾸려면 재배포가 필요합니다. Settings의 앱 내 커스텀 엔드포인트는 기기별로 값을 로컬에 저장하고 즉시 적용되므로 개인 데스크톱과 모바일 클라이언트에 적합합니다.

선택기에서 기본 OpenAI 모델 목록을 어떻게 제거하나요?

CUSTOM_MODELS를 -all로 시작한 다음 명시적으로 id를 추가하세요: CUSTOM_MODELS=-all,+claude-sonnet-4-6@OpenAI,+gpt-5.5@OpenAI. 그러면 사용자는 여러분이 의도적으로 나열하고 가격을 매긴 모델만 보게 됩니다.

CODE 변수는 무엇을 하나요?

배포판을 위한 하나 이상의 접근 비밀번호를 설정합니다. 방문자는 채팅하기 전에 코드를 입력해야 하며, 이는 공개된 Vercel URL이 여러분의 키를 소비하지 못하게 막습니다. API 키 자체와는 무관합니다.

환경 변수를 바꿨는데 왜 아무 효과가 없었나요?

NextChat은 빌드 또는 컨테이너 시작 시점에 env 값을 읽습니다. Vercel에서는 변수를 편집하고 재배포하세요; Docker에서는 컨테이너를 재생성하세요. 재시작 없이 적용되는 것은 앱 내 설정뿐이며, 이는 기기별로 존재합니다.