홈 → 가이드 → OpenCode에서 커스텀 API 쓰기: 설정, Claude, small_model, 실제 비용
OpenCode는 공급자를 opencode.json에서 읽으므로 설정은 파일 하나면 됩니다. 놀라웠던 건 청구액이었습니다. 한 단어로만 답하라고 했는데 요청이 2번, 입력 토큰이 12,000개를 넘었습니다. OpenCode 1.19.0을 우리 게이트웨이에서 세 모델로 돌려 토큰이 어디에 쓰이는지, 어떻게 줄이는지 확인했습니다.
다음 내용을 ~/.config/opencode/opencode.json(또는 프로젝트의 opencode.json)에 넣습니다:
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"apiclan": {
"npm": "@ai-sdk/openai-compatible",
"name": "APICLAN",
"options": {
"baseURL": "https://apiclan.us/v1",
"apiKey": "{env:APICLAN_GPT_KEY}"
},
"models": {
"gpt-6-astra": {},
"gpt-6.1-sol": {}
}
}
}
}
APICLAN_GPT_KEY)로 설정합니다.models에는 그 키가 속한 그룹의 모델만 적습니다. 이 게이트웨이의 키는 각각 하나의 그룹에 속하므로 GPT, DeepSeek, Claude는 공급자 항목과 키를 따로 둬야 합니다.opencode를 실행하고 /models를 입력해 APICLAN → gpt-6-astra를 고릅니다. 스크립트에서는 opencode run -m apiclan/gpt-6-astra "..."를 씁니다.| baseURL | 결과 |
|---|---|
https://apiclan.us/v1 | ✓ |
https://apiclan.us | ✗ 404 Not Found |
@ai-sdk/openai-compatible은 baseURL 뒤에 /chat/completions만 붙이므로 /v1은 직접 써야 합니다. 없으면 OpenCode는 Not Found만 내고 멈춥니다.
provider 안에 Anthropic 패키지를 쓰는 공급자를 하나 더 추가하고 Claude 그룹 키를 넣습니다:
"claude": {
"npm": "@ai-sdk/anthropic",
"name": "APICLAN Claude",
"options": {
"baseURL": "https://apiclan.us/v1",
"apiKey": "{env:APICLAN_CLAUDE_KEY}"
},
"models": { "claude-fable-5-1": {} }
}
여기서도 baseURL은 /v1로 끝나야 합니다. Anthropic 패키지는 /messages만 붙이며, https://apiclan.us만 넣었을 때 실측에서 404가 났습니다. ANTHROPIC_BASE_URL에 /v1을 넣으면 안 되는 Claude Code와는 반대입니다.
빈 프로젝트에서 OpenCode에 「Reply with just OK」라고 요청했습니다. 모든 모델이 요청을 두 번 보냈습니다. 하나는 세션 제목 생성, 다른 하나는 OpenCode의 시스템 프롬프트와 도구 정의가 담긴 실제 답변입니다.
| 모델 | 요청 수 | 입력 토큰(제목 + 답변) | 소요 시간 | 비용 |
|---|---|---|---|---|
gpt-6-astra | 2 | 4,640 + 7,678 | 20.5 s | $0.050 |
deepseek-v4-pro | 2 | 528 + 5,708 | 34.1 s | $0.005 |
deepseek-v4.1-flash | 2 | 529 + 3,027 | 21.8 s | $0.0006 |
OpenCode는 GPT 모델에 DeepSeek(약 3,000)보다 훨씬 긴 시스템 프롬프트(약 7,700토큰)를 보내고, GPT에서는 제목 생성에만 4,640토큰을 썼습니다. 그래서 같은 「OK」가 gpt-6-astra에서는 deepseek-v4.1-flash의 약 77배 비용이 들었습니다. 2026년 10월 12일, OpenCode 1.19.0으로 측정했고 비용은 우리 게이트웨이의 실제 과금액입니다.
OpenCode는 세션 제목 같은 부수 작업에 small_model을 씁니다. 저렴한 모델을 별도 공급자에 두고 지정하세요:
"small_model": "apiclan-ds/deepseek-v4.1-flash",
"provider": {
"apiclan": { ... },
"apiclan-ds": {
"npm": "@ai-sdk/openai-compatible",
"options": {
"baseURL": "https://apiclan.us/v1",
"apiKey": "{env:APICLAN_DS_KEY}"
},
"models": { "deepseek-v4.1-flash": {} }
}
}
주 모델이 gpt-6-astra일 때 제목 요청은 $0.0187에서 $0.00003으로, 한 단어 대화 전체는 $0.050에서 $0.031로 줄었습니다. 새 세션마다 38% 절약되며 답변 내용은 그대로입니다.
모든 모델에 같은 과제를 줬습니다. fizzbuzz.py와 pytest 테스트를 작성하고 명령은 실행하지 않기. 그다음 각 함수를 1~30의 정답과 대조했습니다.
| 모델 | 요청 수 | 소요 시간 | 비용 | 정답 | 테스트 assert 수 |
|---|---|---|---|---|---|
gpt-6-astra | 3 | 40 s | $0.069 | ✓ | 2 |
deepseek-v4-pro | 3 | 61 s | $0.008 | ✓ | 7 |
deepseek-v4.1-flash | 3 | 25 s | $0.0011 | ✓ | 7 |
세 모델 모두 요청 세 번으로 올바른 코드를 작성했습니다. deepseek-v4.1-flash가 가장 빨랐고 비용은 gpt-6-astra의 약 1/60이었으며, 두 DeepSeek 모델은 테스트도 더 꼼꼼했습니다. deepseek-v4-pro는 단계마다 먼저 추론해서 가장 느렸습니다. 소요 시간에는 OpenCode 자체의 몇 초 기동 시간이 포함됩니다.
baseURL에 /v1이 없습니다.apiKey가 참조하는 환경 변수가 OpenCode를 실행한 셸에 설정되지 않았습니다.is not supported by any configured account in this group) → models에 키의 그룹에 없는 모델을 적었습니다.다른 코딩 도구: Cline에서 커스텀 API 쓰기 · Codex에서 커스텀 API 쓰기.
구독 없음, 월 최소 사용액 없음, 영업 통화 없음. USDT로 충전하고 쓴 만큼만 지불하세요 — 1 USDT는 2 크레딧의 API 잔액이 됩니다.
30초 빠른 시작 읽기언어: English · 简体中文 · 繁體中文 · 日本語 · 한국어 · Deutsch · Français · Español · Türkçe · Português · Italiano · Bahasa Indonesia · Tiếng Việt · Bahasa Melayu · Polski · Čeština · فارسی · Русский
이 페이지의 가격은 실제 과금 데이터에서 자동으로 채워집니다. 제3자 조건은 해당 업체의 공개 문서에서 인용했습니다.