AI 공급자
채팅 빌더가 부를 AI 공급자 아홉 곳 가운데 기본 하나를 고르고, 공급자별 API 키 · 연결 주소 · 기본 모델을 정한 뒤 연결을 확인하는 방법과, 선택 기능인 Jev 와 맥락 제안 스위치를 설명합니다.
목차
「설정」의 첫 항목이자 설정을 열면 처음 보이는 화면입니다. 채팅 빌더는 조립 계획을 한국어로 설명할 때 이 화면에서 고른 공급자의 모델을 부릅니다. 같은 공급자와 모델을 맥락 제안을 만들 때도 씁니다. 프로젝트의 코드는 AI 가 쓰지 않고 cob 가 만듭니다(소개).
Cocode IDE 는 모델 사용료를 대신 내 주지 않습니다. 쓰려는 공급자의 API 키를 직접 준비해 넣고(BYOK), 사용료는 그 공급자에게 직접 냅니다. 키를 넣는 방법과 환경 변수 이름은 준비물에 있습니다.
공급자 아홉 곳
화면 맨 위의 「공급자」 아래에 카드 아홉 장이 이 순서로 놓입니다. 한 줄에 최대 셋씩 놓이고, 창이 좁아지면 줄마다 놓이는 장수가 줄어듭니다.
| 카드 | API 키 | 연결 주소 | 기본 모델 |
|---|---|---|---|
| OpenAI | 필요 | 바꿀 수 있음 | 있음 |
| Anthropic | 필요 | 바꿀 수 있음 | 있음 |
| Google Gemini | 필요 | 바꿀 수 없음 — 「Google 플러그인의 실제 URL입니다 · 변경할 수 없습니다」 | 있음 |
| OpenRouter | 필요 | 바꿀 수 있음 | 있음 |
| xAI | 필요 | 바꿀 수 있음 | 있음 |
| DeepSeek | 필요 | 바꿀 수 있음 | 있음 |
| Groq | 필요 | 바꿀 수 있음 | 있음 |
| Ollama | 필요 없음 | 기본은 내 컴퓨터의 localhost 이고 바꿀 수 있음 |
없음 — 설치한 모델 이름을 직접 입력 |
| 사용자 지정 OpenAI-compatible | 필요 | 기본값이 없어 직접 적용해야 함 | 없음 — 목록을 조회해 고르거나 직접 입력 |
「기본 모델」이 있는 공급자는 모델 칸을 비워 두면 그 모델을 씁니다. 어떤 모델인지는 모델 칸에 흐리게 보입니다.
참고
Google Vertex AI(IAM 인증) · AWS Bedrock(요청 서명) · Azure 의 배포별 인증은 이 화면이 다루지 않습니다. 이 화면은 API 키 하나와 연결 주소로 연결하는 방식만 지원합니다.
카드를 읽고 기본 공급자를 정하기
카드마다 공급자 이름과, 아래 줄에 키의 상태가 보입니다.
| 카드의 아래 줄 | 뜻 |
|---|---|
| ● 키체인에 저장됨 | 운영체제 키 저장소에 이 연결의 키가 있습니다 |
● 환경 변수 이름 |
앱 프로세스의 환경 변수에서 키를 찾았습니다 |
| ○ 키 없음 | 이 연결에는 키가 없습니다 |
| ● 로컬 · API 키 불필요 | Ollama 카드입니다 |
| 확인 중… | 설정을 읽는 중입니다 |
채팅 빌더가 쓰는 공급자는 하나이고, 그 카드에 「기본」 표지가 붙습니다. 카드를 누르면 그 공급자의 설정이 아래에 열릴 뿐 기본이 바뀌지는 않습니다. 그래서 기본이 아닌 공급자의 키도 미리 넣어 둘 수 있습니다. 기본으로 삼으려면 열린 설정 카드 오른쪽 위의 「기본으로 설정」을 누릅니다(이미 기본이면 「기본 공급자」라는 글자가 대신 보입니다).
한 번도 고르지 않았을 때는 키가 있는 공급자 가운데 위 표에서 가장 앞선 것이 기본이 되고, 키가 있는 공급자가 하나도 없으면 Anthropic 입니다. 키가 필요 없는 Ollama 는 키가 없어도 쓸 수 있지만 저절로 기본이 되지는 않으니, 쓰려면 「기본으로 설정」을 눌러야 합니다.
참고
직접 고른 기본 공급자에 키가 없으면 다른 공급자에 키가 있어도 그 공급자로 넘어가지 않습니다. 채팅에 키가 없다는 안내가 나옵니다(조립 계획 읽기의 「계획이 나오지 않을 때」).
처음 설정하기
- 공급자 카드를 고릅니다. 쓰려는 공급자 카드를 누르면 아래에 「
<공급자>설정」 카드가 열립니다. - 연결 주소를 확인합니다. 「API base URL」 칸에 공급자의 기본 주소가 들어 있습니다. 그대로 쓰면 되고, 프록시나 호환 서버를 쓰려면 주소를 고친 뒤 「URL 적용」을 누릅니다. 사용자 지정 공급자는 주소를 적용하기 전에는 키도 저장할 수 없습니다.
- API 키를 저장합니다. 「API 키」 칸에 키를 넣고 「저장」(또는 Enter)을 누릅니다. 이미 저장된 키가 있으면 「바꾸기」와 「삭제」가 보입니다.
- 모델을 정합니다. 「기본 모델」 칸에 모델 이름을 적거나, 「모델 목록 조회」를 눌러 나온 「조회한 모델 선택」에서 고릅니다. 이 칸은 입력하는 대로 저장되고 따로 저장 단추가 없습니다.
- 연결을 확인합니다. 「연결」의 「연결 확인」을 누르면 결과가 한 줄로 나옵니다(아래 표).
- 기본으로 설정합니다. 이 공급자를 채팅에서 쓰려면 「기본으로 설정」을 누릅니다.
연결 주소 칸
- 주소는
https://로 시작하거나,localhost·127.x.x.x·::1같은 내 컴퓨터 주소에 한해http://로 쓸 수 있습니다. 사용자 이름 · 비밀번호(user:pass@)와?뒤의 질의,#뒤의 조각은 넣을 수 없습니다. 어긋나면 「HTTPS 또는 loopback HTTP URL을 입력하세요 — 인증 정보·쿼리·fragment는 제외하세요」가 나옵니다. - 그 아래의 「실제 API base URL」 줄이 지금 쓰이는 주소(스킴 · 호스트는 소문자로, 기본 포트와 끝의
/는 없앤 값)를 보여 줍니다. 적용에 성공하면 「URL을 적용했습니다」가 나오고, 저장하지 못하면 「URL을 저장하지 못했습니다 — 이전 연결을 유지합니다」가 나옵니다. - 칸을 비우고 적용하면 공급자의 기본 주소로 돌아갑니다. 기본 주소가 없는 사용자 지정 공급자는 비워 둘 수 없습니다.
- 키는 연결 주소마다 따로 저장됩니다. 주소를 바꾸면 기본 주소의 키를 가져가지 않고 「이 URL 전용 키를 씁니다 · 기본 연결의 키는 가져오지 않습니다」라는 안내가 나옵니다.
API 키 칸
- 입력한 글자는 가려져 보이고, 저장에 성공하면 「키체인에 저장했습니다」가 나오면서 칸이 비워집니다. 저장된 키는 다시 보여 주지 않고, 칸 안내만 「새 키를 입력하면 바꿉니다」로 바뀝니다. 지우면 「키체인에서 삭제했습니다」가 나옵니다.
- 키 줄 아래의 글이 지금 어느 키가 쓰이는지 알려 줍니다. 키체인에 저장된 키와 환경 변수 키가 모두 있으면 키체인 값이 우선합니다(「키체인에 저장된 키를 씁니다. 환경 변수 … 에도 키가 있지만 키체인 값이 우선합니다.」). 환경 변수 키는 그 공급자의
…_BASE_URL환경 변수가 없으면 공식 주소로 연결할 때만 쓰이고, 그 변수가 있으면 연결 주소와 같을 때만 쓰입니다(다르면 공식 주소에서도 무시됩니다)(준비물). - 키 저장소를 쓸 수 없는 컴퓨터에서는 입력칸 대신 「이 기기에서는 OS 키 저장소를 쓸 수 없습니다 — … 환경 변수로 키를 설정하세요.」가 보입니다. 저장이 실패하면 「키를 저장하지 못했습니다 — 키 저장소를 확인하세요」가 나옵니다.
주의
Linux 에서는 「저장」이 실패할 수 있습니다. 앱이 키 저장소 도구(secret-tool)를 부를 때 데스크톱 세션의 D-Bus 환경 변수(DBUS_SESSION_BUS_ADDRESS · XDG_RUNTIME_DIR · DISPLAY)를 넘기지 않는 것을 소스에서 확인했습니다. 그래서 키 보관 데몬이 있어도 「키를 저장하지 못했습니다」가 나올 수 있습니다. 소스를 읽어 확인한 내용(2026-10-09 소스 기준이고, 2026-10-08 에 내려받을 수 있던 0.1.0 도 같습니다)이고 Linux 실기기에서 돌려 보지는 않았습니다. Linux 에서는 환경 변수로 키를 주세요.
기본 모델 칸과 모델 목록
- 모델 이름은 공급자별로 따로 저장됩니다. 칸을 비우면 저장된 선택이 지워져 기본 모델로 돌아갑니다.
- 입력창 아래에 보이는 모델 이름(
<모델> · <공급자>)을 누르면 이 화면이 열립니다. 대화마다 모델을 따로 고르는 곳은 없습니다. 모델 칸 아래의 안내는 「대화마다 작성기에서 바꿀 수 있습니다」라고 하지만, 지금 작성기에는 모델을 고르는 곳이 없고 모델 이름을 누르면 이 화면이 열릴 뿐입니다. - 「모델 목록 조회」는 키가 있어야(Ollama 는 없어도) 눌러집니다. 공급자에게 모델 목록을 요청해 모델 ID 순으로 보여 주고, 하나를 고르면 모델 칸에 들어가 저장됩니다. 목록은 칸의 값을 덮어쓰지 않으며, 목록에 있다고 해서 그 모델로 생성이 된다는 보장은 아닙니다(「생성 성공을 의미하지 않습니다」).
| 목록 아래의 글 | 뜻 |
|---|---|
| 모델 목록 조회 완료 (N개) · 생성 성공을 의미하지 않습니다. | 목록을 끝까지 받았습니다 |
| 모델 목록을 일부만 조회했습니다 (N개) — 조회 한도에 도달했습니다. | 일부만 받았습니다. 직접 입력하거나 다시 조회하세요 |
| 모델 목록 조회를 지원하지 않는 URL입니다 (HTTP 404) — 직접 입력하세요. | 그 주소에 모델 목록 경로가 없습니다 |
| 키가 거부되었습니다 — 모델 목록을 조회하지 못했습니다 (HTTP 401) · 이 키로는 모델 목록에 접근할 수 없습니다 (HTTP 403) · 모델 목록 조회 한도를 넘었습니다 (HTTP 429) | 공급자가 키 · 권한 · 한도로 거절했습니다 |
| 모델 목록에 연결하지 못했습니다 · 모델 목록 조회 시간이 초과되었습니다 · 모델 목록 응답 형식을 확인할 수 없습니다 | 네트워크 · 시간 · 응답 형식 문제입니다 |
| 모델 목록 조회 완료 — 모델이 없습니다. · 모델 목록을 조회하지 못했습니다 (HTTP N). · 키가 없어 모델 목록을 조회할 수 없습니다 — 이 연결의 키를 설정하세요. | 목록이 비었거나, 위에 따로 적지 않은 HTTP 오류이거나, 이 연결의 키가 없습니다 |
연결 확인이 하는 일
「연결 확인」은 공급자의 모델 목록 주소로 요청 하나를 보내 HTTP 상태만 봅니다. 키는 요청 머리글에만 실리고 주소에는 실리지 않으며, 응답 내용은 읽고 버립니다. 모델에게 글을 쓰게 하지 않습니다. 10초 안에 답이 없으면 실패로 봅니다. 키가 필요한 공급자는 키가 있어야, 사용자 지정 공급자는 주소를 적용해야 이 단추가 눌러집니다.
| 결과 줄 | 뜻 |
|---|---|
| 응답 확인 (N.N초) | 공급자가 2xx 로 답했습니다. 주소와 키가 통했다는 뜻입니다 |
| 요청이 거부되었습니다 — 키를 확인하세요 (HTTP 400) | 소스의 주석은 Google 이 틀린 키에 401 대신 400 으로 답한다고 적습니다 |
| 키가 거부되었습니다 — 키를 확인하세요 (HTTP 401) | 키가 틀렸거나 만료되었습니다 |
| 이 키로는 접근할 수 없습니다 (HTTP 403) | 키에 이 요청의 권한이 없습니다 |
| 요청 한도를 넘었습니다 — 잠시 뒤 다시 확인하세요 (HTTP 429) | 한도를 넘었습니다 |
| 공급자 서버 오류입니다 (HTTP 5xx) · 예상하지 못한 응답입니다 (HTTP N) | 공급자 쪽 문제이거나 모델 목록을 주지 않는 주소입니다 |
| 응답이 없습니다 (N.N초) — 네트워크를 확인하세요 · 연결하지 못했습니다 — 네트워크를 확인하세요 | 시간 안에 답이 없거나 네트워크가 막혔습니다 |
| 키가 없어 확인할 수 없습니다 · 연결을 확인하지 못했습니다 | 키가 없거나 확인 중 예외가 났습니다 |
빠른 판단 (Jev) — 선택 사항
화면 아래쪽의 「빠른 판단 (Jev)」 카드는 도메인 · 레시피 · 실패 원인을 빠르게 고를 때 쓰는 별도 서비스의 키를 넣는 곳입니다. 키가 없어도 채팅 빌더는 멈추지 않고 카탈로그 일치 규칙으로 판단합니다. 키는 「Jev 키」 칸에 같은 방식으로 저장하고(칸 안내는 ts_ 로 시작하는 키), 키체인에 저장한 키가 환경 변수 TYPESAFE_API_KEY 보다 우선합니다. 카드 아래 줄이 지금 어느 키를 쓰는지 알려 줍니다. Jev 에 무엇이 가는지는 요구 쓰기의 「요구가 가는 곳」과 실행 결과와 게시에 있습니다.
참고
카드 설명은 판단 근거를 계획 카드에 적는다고 하지만, 지금 계획 카드에는 그런 줄이 없습니다. Jev 나 규칙의 판단은 설명 글에 참고 사실로 전해질 뿐이고 카드의 레시피는 cob 가 정합니다.
채팅 맥락 제안 — 선택 사항
그 아래의 「채팅 맥락 제안」 카드에는 스위치 「채팅에 맥락 제안 보이기」가 하나 있고 처음부터 켜져 있습니다. 켜 두면 같은 공급자를 한 번 더 불러 채팅에 다음 단계 제안을 붙이므로 호출이 늘어나고, 끄면 새로 만들지 않고 떠 있던 제안도 숨깁니다. 저장하지 못하면 「설정을 저장하지 못했습니다」가 나오고 스위치가 이전 상태로 돌아갑니다. 제안이 붙는 자리 · 호출 수 · 보내는 내용은 맥락 제안에 있습니다.
참고
2026-10-08 에 내려받을 수 있던 0.1.0 에서는 이 스위치 이름이 「계획 아래에 맥락 제안 보이기」이고 카드 설명도 계획 카드 아래만 말합니다. 빈 첫 화면과 끝난 실행 아래에 제안이 붙는 것은 그 뒤에 추가된 빌드입니다.
자주 겪는 문제
카드가 「○ 키 없음」인데 환경 변수를 설정했습니다
환경 변수는 Cocode IDE 앱 프로세스가 가지고 있어야 읽힙니다. 터미널에서 export 한 변수는 이미 떠 있는 앱에는 전해지지 않으니 앱을 다시 실행하세요. 주소를 바꾼 연결이라면 그 주소와 일치하는 …_BASE_URL 환경 변수도 필요합니다. 자세한 규칙은 준비물에 있습니다.
「연결 확인」이 눌러지지 않습니다
키가 필요한 공급자에 키가 없거나, 사용자 지정 공급자에 아직 주소를 적용하지 않았거나, 주소를 적용하는 중이거나, 다른 확인이 진행 중인 경우입니다. 「실제 API base URL」 줄이 「설정 필요」이면 주소부터 적용하세요.
연결 확인은 통과했는데 채팅에서 「모델 응답을 받지 못했습니다」가 나옵니다
연결 확인은 모델 목록 요청만 확인하고 그 모델로 글을 생성해 보지는 않습니다. 모델 이름이 그 계정에서 쓸 수 없는 것이거나 응답이 시간 안에 끝나지 않은 경우일 수 있습니다. 채팅의 안내 문구는 조립 계획 읽기의 「계획이 나오지 않을 때」 표에 정리해 두었습니다.
다음 단계
채팅 빌더가 쓰는 cob 가 준비되어 있는지 확인하는 화면은 빌더로 이어서 보세요.