Continue를 커스텀 OpenAI 호환 엔드포인트로 연결하기.

Updated 2026-07-29

Continue는 config.yaml에서 선언적으로 모델을 설정합니다. provider를 openai로 설정하고 apiBase를 https://api.apisrouter.com/v1로 지정하면, 추가하는 모든 모델 블록이 확장 프로그램에서 선택 가능해지며, chat·edit·apply 역할을 키 하나로 모델별로 할당할 수 있습니다.

빠른 답: provider openai와 apiBase를 가진 모델 블록.

Continue의 openai 프로바이더는 apiBase 오버라이드를 받아들이는데, 이는 모든 OpenAI 호환 서버를 위한 문서화된 경로입니다. config.yaml에 provider를 openai로, apiBase를 https://api.apisrouter.com/v1로 설정하고, 정확한 모델 id와 키를 넣은 모델 블록을 추가하세요. 모델이 Continue의 모델 선택기에 나타나며, 그 모델이 만드는 모든 요청은 표준 /v1/chat/completions를 통해 게이트웨이로 갑니다. 같은 메커니즘으로 원하는 만큼 많은 모델을 다룰 수 있습니다: id마다 블록 하나씩, 모두 같은 apiBase와 키를 공유합니다. Continue는 model 필드를 그대로 문자열로 취급하므로, 서로 다른 벤더의 id들 — Claude 옆에 GPT, 그 옆에 DeepSeek — 이 하나의 설정 파일 안에 나란히 자리합니다.

models:
  - name: Claude Sonnet 4.6
    provider: openai
    model: claude-sonnet-4-6
    apiBase: https://api.apisrouter.com/v1
    apiKey: sk-APIsRouter-...
    roles:
      - chat
      - edit
      - apply

Continue가 모델에 작업을 할당하는 방법: 역할(roles).

Continue(GitHub의 continuedev, 약 3.4만 스타)는 VS Code와 JetBrains용 IDE 에이전트이며, 그 설정을 정의하는 핵심 개념은 역할(roles)입니다. 모든 모델 블록은 roles 목록을 가지며, Continue는 각 종류의 작업을 그 역할을 가진 모델로 라우팅합니다: 대화 패널과 에이전트 작업에는 chat, 인라인 코드 변환에는 edit, 제안된 변경을 파일에 병합하는 데는 apply, 그리고 각 하위 시스템을 위한 autocomplete, embed, rerank. 바로 이것이 Continue에서 특히 멀티 벤더 엔드포인트를 흥미롭게 만드는 지렛대입니다. chat은 정당화할 수 있는 가장 강력한 모델을 원하고, edit과 apply는 더 짧고 기계적인 호출로 빠른 중간급 id로도 충분합니다. 모든 벤더를 하나의 apiBase가 처리하면, 이 구분은 순전히 YAML 작업이 됩니다: Claude id가 chat을, 빠른 id가 edit과 apply를 맡고, 그 전체에 키 하나만 있으면 됩니다. 솔직하게 짚어야 할 경계 하나: autocomplete는 fill-in-the-middle 작업이며, Continue의 autocomplete 역할은 채팅이 아니라 그 완성 형식으로 학습된 모델을 중심으로 설계되어 있습니다. chat-completions 게이트웨이는 chat, edit, apply 트래픽에는 적합한 곳이지만, autocomplete는 지금 사용 중인 FIM 지원 설정에 그대로 두세요. 그 역할을 챗 모델에 맡기고 좋은 제안을 기대해서는 안 됩니다.

전체 설정: 여러 모델, 역할 분리, 컨텍스트 선언.

설정 파일은 ~/.continue/config.yaml에 있습니다. 각 블록의 name은 선택기에 표시되는 레이블이고, model은 게이트웨이가 제공하는 정확한 id입니다. defaultCompletionOptions.contextLength는 모델의 컨텍스트 윈도우를 선언하며, Continue는 이를 사용해 요청에 담을 대화·파일 컨텍스트의 양을 결정합니다. 긴 컨텍스트 모델에 보수적인 기본값을 그대로 두면 필요 이상으로 일찍 잘리게 됩니다. 기능(capabilities)은 보통 자동으로 감지되지만, Continue가 인식하지 못하는 id에는 명시적으로 선언할 수 있습니다: capabilities: [tool_use]는 에이전트 모드에게 그 모델로 툴을 구동해도 된다고 알려줍니다. 키에 관해: YAML은 리터럴 apiKey 값을 받아들이며, 여러분의 컴퓨터를 벗어나지 않는 로컬 파일이라면 문제없습니다. Continue는 자체 허브를 통해 관리되는 설정을 위한 ${{ secrets.APISROUTER_API_KEY }} 형태의 시크릿 템플릿 문법도 지원하며, 공유 파일에 실제 값이 남지 않게 해줍니다. 설정 파일이 어디에 있는지에 맞는 형태를 사용하세요.

models:
  - name: Claude Sonnet 4.6
    provider: openai
    model: claude-sonnet-4-6
    apiBase: https://api.apisrouter.com/v1
    apiKey: ${{ secrets.APISROUTER_API_KEY }}
    roles: [chat, edit]
    capabilities: [tool_use]
    defaultCompletionOptions:
      contextLength: 200000

  - name: Claude Haiku 4.5
    provider: openai
    model: claude-haiku-4-5-20251001
    apiBase: https://api.apisrouter.com/v1
    apiKey: ${{ secrets.APISROUTER_API_KEY }}
    roles: [edit, apply]

  - name: GPT-5.5
    provider: openai
    model: gpt-5.5
    apiBase: https://api.apisrouter.com/v1
    apiKey: ${{ secrets.APISROUTER_API_KEY }}
    roles: [chat]

역할별 모델 선택.

역할 할당은 비교 메커니즘이기도 합니다. edit과 apply는 고정해 두고, chat 블록을 두 후보 id로 각각 일주일씩 바꿔보면서, 키별 사용량 뷰가 실제 작업량에서의 차이를 가격으로 알려주게 하세요. 각 후보는 같은 엔드포인트에 대한 YAML 세 줄이면 됩니다.

  • chat은 에이전트 루프와 긴 대화를 담당합니다: 파일 읽기, 수정 계획, 실제 컨텍스트를 바탕으로 한 질문 답변. 프론티어 모델(claude-sonnet-4-6, gpt-5.5)이 여기에 적합하며, 토큰 대부분이 여기서 소모됩니다.
  • edit은 선택된 코드 변환을 처리합니다. 호출이 chat보다 짧고 기계적이므로, claude-haiku-4-5-20251001이나 gpt-5.4-mini 같은 빠른 id를 쓰면 결과 저하 없이 edit 루프를 빠듯하게 유지할 수 있습니다.
  • apply는 제안된 변경을 파일에 병합합니다. 셋 중 가장 기계적인 역할이며, deepseek-v4-flash를 포함해 그 작업을 할 수 있는 가장 저렴한 모델의 가장 확실한 후보입니다.
  • embed와 rerank는 코드베이스 검색을 지원하며, 자체 모델 형태를 가진 별도의 하위 시스템입니다. chat 트래픽을 게이트웨이로 옮기더라도 이들을 건드릴 필요는 없습니다.

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

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
GPT-5.4 mini$0.75 / $4.50 per M$0.60 / $3.60 per M
DeepSeek V4 Flash$0.14 / $0.28 per M$0.10 / $0.30 per M

Continue 특유의 실패 패턴.

/v1 없는 apiBase. Continue는 여러분이 준 베이스에 /chat/completions 같은 경로를 덧붙이므로, https://api.apisrouter.com/v1이 올바르며 호스트만 있는 값은 그렇지 않습니다. 처음 사용할 때 404 형태의 오류가 난다면 거의 항상 이 문제입니다. YAML 들여쓰기가 설정을 조용히 바꿔놓습니다. models는 블록들의 목록이며, 들여쓰기가 잘못된 apiBase는 엉뚱한 항목에 붙거나 아무 데도 붙지 않습니다. 한 모델은 작동하는데 바로 옆 모델은 인증에 실패한다면, 게이트웨이를 의심하기 전에 들여쓰기를 비교해 보세요. 레거시 completions 토글. openai 프로바이더는 기본적으로 /chat/completions를 사용하며, 이는 게이트웨이가 제공하는 것과 같습니다. useLegacyCompletionsEndpoint: true는 블록을 레거시 /completions 경로로 돌리며, 어떤 블록에 이 설정이 켜져 있으면 그 모델에서 chat 형태의 요청이 작동을 멈춥니다. GPT 계열 id에 대한 responses API 기대. Continue의 일부 경로는 특정 OpenAI 모델 이름에 대해 OpenAI의 새로운 responses 프로토콜을 시도할 수 있습니다. chat-completions 게이트웨이는 그 프로토콜을 제공하지 않습니다. GPT 계열 블록이 경로 형태의 오류를 낸다면, 그 블록에 useResponsesApi: false를 설정해 /chat/completions에 머무르게 하세요. 낡은 contextLength. Continue는 모델이 실제로 받아들일 수 있는 값이 아니라 defaultCompletionOptions.contextLength에 따라 컨텍스트를 채웁니다. 200k 모델에 32k를 선언해도 눈에 띄게 무언가가 망가지지는 않습니다 — 그저 비용을 지불한 컨텍스트를 조용히 버릴 뿐입니다. 모델이 실제로 지원하는 값을 선언하세요.

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

  • 벤더마다 별도의 자격 증명 세트를 유지하지 않고도 VS Code나 JetBrains 안에서 Claude, GPT, DeepSeek을 선택하고 싶은, IDE를 우선하는 개발자.
  • 비용 프로필에 따라 역할을 나누는 팀: 프론티어 chat, 빠른 edit과 apply, 각 역할에 맞는 id를 두면서도 모두 하나의 청구 창구로 처리합니다.
  • 실제 작업에서 chat 모델을 비교하는 엔지니어. 각 후보는 새로운 프로바이더 연동이 아니라 같은 apiBase에 대한 YAML 블록 하나면 됩니다.
  • 온보딩을 표준화하는 팀 리더: config.yaml 템플릿 하나와 APISROUTER_API_KEY 하나가 벤더별 키 체크리스트를 대체하며, 키별 사용량이 각 좌석의 지출을 보여줍니다.
  • 특정 벤더의 결제 수단에 접근할 수 없는 개발자. 카드 없이 충전만으로 접근할 수 있어 프로바이더별 가입 의존성이 사라집니다.

엔드포인트 검증 및 첫 요청 디버깅.

YAML을 편집하기 전에 게이트웨이가 제공하는 모델을 조회하세요. /v1/models가 반환하는 id가 바로 model 필드가 일치해야 하는 정확한 문자열입니다. 첫 요청의 실패는 일정한 패턴을 따릅니다. 401은 그 특정 블록의 키가 잘못되었거나 시크릿 참조가 해석되지 않았다는 뜻입니다. 키가 블록별이므로 실패도 블록별입니다 — 파일 전체가 아니라 실패한 블록을 확인하세요. model-not-found 오류는 버전 접미사를 포함한 id 오타입니다. GPT 계열 id에서 경로 형태의 오류가 나면 위에서 다룬 responses API 토글을 확인하세요. 확장 프로그램에 커스텀 모델이 아예 나타나지 않는다면 YAML이 파싱되지 않은 것이니 먼저 파일 구조를 검증하세요. 요청이 순조롭게 흐르면, APIsRouter 콘솔이 요청별 모델, 토큰 수, 지출을 보여줍니다. Continue가 작업을 역할별로 나누기 때문에, 사용량 뷰는 실제 작업량에서 chat 대 edit 트래픽 비율을 처음으로 확인할 수 있는 곳이기도 하며, 이것이 모델 선택이 실제로 중요한 지점을 알려주는 숫자입니다.

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

자주 묻는 질문

openai 프로바이더로 Continue에서 Claude와 DeepSeek 모델을 쓸 수 있나요?

네. apiBase를 설정한 openai 프로바이더는 모든 OpenAI 호환 서버를 위한 문서화된 경로이며, Continue는 model 필드를 그대로 문자열로 전달합니다. 엔드포인트가 제공하는 모든 id가 작동하며, Claude와 DeepSeek id도 포함됩니다 — id마다 모델 블록 하나씩입니다.

모든 모델 블록이 하나의 apiBase와 키를 공유하나요?

각 블록은 자신만의 apiBase와 apiKey를 선언하므로, 값을 공유할 수도 있고 안 할 수도 있습니다. 여러 블록을 같은 엔드포인트에 같은 키로 지정하는 것은 일반적이며, YAML 앵커를 쓰면 그 쌍을 한 번만 선언하고 블록마다 참조할 수 있습니다.

어떤 역할이 게이트웨이를 통해 라우팅되어야 하나요?

chat, edit, apply입니다 — 모두 /v1/chat/completions로 말합니다. Autocomplete는 완성 형식 모델을 중심으로 구축된 fill-in-the-middle 작업이므로, 그 역할은 기존 FIM 설정에 그대로 두세요. embed와 rerank는 별도의 하위 시스템이며 변경이 필요 없습니다.

한 모델 블록은 작동하는데 다른 블록은 401을 반환하는 이유는?

Continue에서 키는 블록별이므로, 옆 블록이 작동한다고 해서 실패하는 블록에 대해 아무것도 증명되지 않습니다. 실패한 블록의 apiKey 값이나 시크릿 참조를 확인하고, 들여쓰기도 확인하세요: 들여쓰기가 잘못된 키는 엉뚱한 목록 항목에 붙습니다.

useLegacyCompletionsEndpoint는 무엇을 하며, 필요한가요?

모델 블록을 /chat/completions에서 레거시 /completions 경로로 돌립니다. chat-completions 게이트웨이에는 필요 없으니 설정하지 않은 채로 두세요. 이는 더 오래된 completion 전용 서버를 위해 존재합니다.

contextLength가 실제로 동작을 바꾸나요?

네. Continue는 defaultCompletionOptions.contextLength에 따라 대화와 파일 컨텍스트를 채웁니다. 긴 컨텍스트 모델에 이 값을 축소해서 설정하면 컨텍스트를 조용히 버리게 됩니다. 모델이 실제로 지원하는 값으로 설정하세요.