블로그로 돌아가기

AI 입문가이드

OpenAI 호환 API: base_url이란 무엇이며 어떻게 전환하나요

OpenAI 호환 API는 OpenAI와 동일한 요청을 받습니다. base_url, 키, 모델 id를 바꾸면 코드가 CheapTokens로 첫 요청을 보냅니다.

작성자: CheapTokens Team 게시됨 업데이트됨읽는 시간 5분

OpenAI 호환 API로 전환할 때 바꾸는 세 가지 값: base_url, API 키, 모델 id
이 페이지의 내용
  1. "OpenAI 호환"이란 무엇인가요?
  2. base_url이란 무엇인가요?
  3. 바꾸는 세 가지 값
  4. Python으로 보내는 첫 요청
  5. curl로 보내는 같은 요청
  6. 예상되는 결과
  7. 비용은 얼마인가요?
  8. 동작하지 않을 때
  9. 다음 단계

OpenAI 호환 API는 OpenAI의 Chat Completions API와 동일한 형식으로 요청을 받고 동일한 형식으로 응답하는 API입니다. 앱을 다른 제공자로 옮길 때 보통 세 가지 값만 바꾸면 됩니다: base_url(요청이 향하는 주소), API 키, 모델 id입니다. 메시지 목록과 응답을 읽는 방식 등 나머지 코드는 그대로 유지됩니다.

이 가이드는 그 개념을 쉬운 말로 설명하고, 마지막에 Python과 curl로 CheapTokens에 보내는 첫 요청 예제를 제공합니다. CheapTokens에 관한 사실은 2026년 10월 22일 기준 문서와 대조해 확인했습니다.

"OpenAI 호환"이란 무엇인가요?#

API는 인터넷을 통해 서비스와 통신하기 위한 규칙의 집합입니다(이 단어가 처음이라면 첫 API 요청이 동작하는 방식부터 시작하세요). OpenAI의 채팅 형식은 사실상의 표준이 되었습니다: 많은 제공자와 도구가 동일한 요청 본문을 받아들이고 동일한 응답 구조를 반환합니다. 이런 API를 OpenAI 호환이라고 부릅니다.

실제로 이는 호환되는 모든 제공자에서 다음 세 가지가 동일하다는 뜻입니다:

  • 요청: model 필드와 messages 목록을 가진 JSON 본문으로, 각 메시지는 role(system, user 또는 assistant)와 content을 가집니다.
  • 엔드포인트 경로: 기본 URL 뒤에 붙는 /chat/completions입니다.
  • 응답: 생성된 텍스트가 choices[0].message.content에 담긴 JSON 객체입니다.

형식이 공유되기 때문에 공식 SDK와 많은 앱이 호환되는 어떤 제공자와도 통신할 수 있습니다. 요청을 어디로 보낼지만 알면 됩니다.

base_url이란 무엇인가요?#

base_url은 모든 요청이 시작되는 주소입니다. SDK는 여기에 호출 경로를 붙여 전체 주소를 만듭니다.

구성 요소 예시
base_url https://api.cheaptokens.dev/v1
SDK가 추가하는 경로 /chat/completions
요청의 전체 주소 https://api.cheaptokens.dev/v1/chat/completions

따라서 다른 base_url을 설정하면 동일한 코드가 동일한 종류의 요청을 다른 서버로 보냅니다. CheapTokens의 기본 URL은 https://api.cheaptokens.dev/v1입니다. 이 API는 OpenAI Chat Completions 및 Anthropic Messages와 호환되며, 하나의 선불 잔액으로 모든 모델을 사용할 수 있습니다.

바꾸는 세 가지 값#

값 무엇인가 어디서 얻는가
base_url API 주소 https://api.cheaptokens.dev/v1
API 키 API용 비밀 비밀번호 CheapTokens 계정. API 키란 무엇이며 안전하게 보관하는 방법 참고
모델 id model 필드에 들어가는 모델의 정확한 이름 CheapTokens 문서

모델 id는 주의가 필요합니다. 제공자마다 같은 모델에 다른 id를 부여하므로 다른 서비스의 id는 여기서 동작하지 않습니다. CheapTokens 문서에서 id를 가져오세요. 현재 사용 가능한 id는 다음과 같습니다:

모델 모델 id 컨텍스트 응답당 최대 출력
GLM-5.3-Flash zai-org/GLM-5.3-Flash 390K 8,192 토큰
DeepSeek-V4-Flash deepseek-ai/DeepSeek-V4-Flash-0731 380K 32,768 토큰
MiniMax-M2.7 MiniMaxAI/MiniMax-M2.7 180K 8,192 토큰

DeepSeek-V4-Flash는 응답당 최대 32,768 토큰을 반환하며 컨텍스트는 380K입니다. GLM-5.3-Flash는 390K 컨텍스트를, MiniMax-M2.7은 180K 컨텍스트를 가집니다. 세 모델 모두 같은 잔액에서 과금되므로, 모델 간 전환은 모델 id만 바꾸면 됩니다.

Python으로 보내는 첫 요청#

openai 패키지를 설치한 다음, 키를 코드에 쓰지 말고 환경 변수에 저장하세요:

bash
pip install openai
export CHEAPTOKENS_API_KEY="YOUR_CHEAPTOKENS_KEY"

이제 코드입니다. 표준 OpenAI 예제와의 유일한 차이는 base_url 인자, 키, 모델 id입니다:

python
import os
from openai import OpenAI

client = OpenAI(
    base_url="https://api.cheaptokens.dev/v1",   # 1. where requests go
    api_key=os.environ["CHEAPTOKENS_API_KEY"],   # 2. your CheapTokens key
)

response = client.chat.completions.create(
    model="MiniMaxAI/MiniMax-M2.7",                # 3. model id from the docs
    messages=[
        {"role": "system", "content": "You answer briefly."},
        {"role": "user", "content": "Explain base_url in one sentence."},
    ],
)

print(response.choices[0].message.content)

예제의 키는 자리 표시자입니다: YOUR_CHEAPTOKENS_KEY을 자신의 키로 바꾸고 실제 키를 저장소에 절대 커밋하지 마세요.

이미 가진 앱이 설정 파일이나 환경 변수에서 설정을 읽는다면 코드를 전혀 수정할 필요가 없습니다. base URL, API base 또는 endpoint라는 필드를 찾아 같은 세 가지 값을 거기에 입력하세요.

curl로 보내는 같은 요청#

curl은 SDK가 내부에서 하는 일을 보여줍니다: 기본 URL에 경로를 더하고, Authorization 헤더에 키를 넣고, JSON 본문을 보냅니다.

bash
curl https://api.cheaptokens.dev/v1/chat/completions \
  -H "Authorization: Bearer $CHEAPTOKENS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "MiniMaxAI/MiniMax-M2.7",
    "messages": [
      {"role": "user", "content": "Explain base_url in one sentence."}
    ]
  }'

예상되는 결과#

모든 것이 올바르게 설정되면 Python 스크립트는 짧은 텍스트 응답을 출력하고, curl은 JSON 객체를 출력합니다. choices 목록을 확인하세요: 응답 텍스트는 choices[0].message.content에 있습니다. 이것이 보인다면 CheapTokens로 보낸 첫 요청이 성공한 것이며, 실제 앱으로 넘어갈 수 있습니다.

비용은 얼마인가요?#

과금은 토큰 단위로 이루어지며, 입력과 출력이 별도로 계산됩니다(입력 토큰 vs 출력 토큰 참고). 예를 들어 MiniMax-M2.7은 현재 100만 입력 토큰당 $0.05, 100만 출력 토큰당 $0.15입니다. 아래 표는 항상 모든 모델의 현재 가격을 보여주며, 피크 시간 할증은 없습니다.

모델 컨텍스트 입력 $/1M 출력 $/1M OpenRouter 입력 OpenRouter 출력
GLM-5.3-Flash reasoning 390K $0.02 $0.04 $0.0413 $0.0758
DeepSeek-V4-Flash 380K $0.015 $0.10 $0.0475 $0.1568
MiniMax-M2.7 180K $0.05 $0.15 $0.30 $1.20

가격은 100만 토큰당 USD 기준입니다. OpenRouter 수치는 비교를 위해 표시되었으며 변경될 수 있습니다.

전체 모델 목록의 가격은 CheapTokens 가격 페이지에서도 확인할 수 있습니다.

동작하지 않을 때#

  • 인증 오류(보통 401): 키가 없거나, 잘못 입력되었거나, 공백이 포함되어 있습니다. 스크립트를 실행하는 같은 터미널에서 환경 변수가 설정되어 있는지 확인하세요.
  • "Not found"(보통 404): base_url을 확인하세요. /v1로 끝나야 하며, SDK를 사용할 때 /chat/completions를 직접 추가하면 경로가 중복됩니다.
  • 알 수 없는 모델: 위 표나 문서에서 모델 id를 대소문자와 슬래시 앞부분까지 정확히 복사하세요.
  • 연결 불가 또는 타임아웃: 흔한 연결 오류와 해결 방법을 참고하세요.
  • 응답이 문장 중간에 잘림: max_tokens 한도에 도달한 것으로, AI 응답이 문장 중간에 멈추는 이유에서 다룹니다.

다음 단계#

첫 요청이 동작하면 Python에서 스트리밍을 추가하거나, 같은 세 가지 값을 편집기나 에이전트에 입력하거나, AI 모델 이름 읽는 방법을 읽어보세요. 설정 세부 사항과 전체 모델 목록은 CheapTokens 문서에 있습니다.