반응형
Claude, GPT, Gemini, Llama, DeepSeek를 각각 쓰려면 API 키 5개, 청구서 5개, 레이트 리밋 각개격파입니다. OpenRouter는 이걸 하나로 통합합니다. 모델만 바꾸면 됩니다. 코드는 그대로입니다.
[핵심 요약]
→ OpenRouter: 300개+ AI 모델을 단일 API 엔드포인트로 제공하는 LLM 게이트웨이
→ OpenAI 호환 API: base_url만 바꾸면 기존 코드 그대로 동작
→ 가격: 프로바이더 직접 가격 그대로 (마크업 없음) + 5.5% 플랫폼 크레딧 수수료
→ 무료 티어: 25개+ 무료 모델 (Gemma, Llama, Mistral 등) — 신용카드 불필요
→ BYOK: 자체 API 키 연결 시 월 100만 요청까지 무료 (이후 5% 수수료)
→ 폴백 라우팅: 프로바이더 장애 시 자동 대체 모델로 전환
→ 모델 variant: :free, :nitro, :floor, :thinking, :extended
→ 레이트 리밋: 무료 20 RPM / 크레딧 $10 이상 보유 시 1,000 req/일 무료 모델
OpenRouter가 필요한 이유
[직접 API 관리의 고통]
Anthropic API 키 → Claude Sonnet 4.6
OpenAI API 키 → GPT-5.4
Google API 키 → Gemini 3.1 Flash
Together AI 키 → Llama 3.3 70B
DeepSeek API 키 → DeepSeek V3
→ API 키 5개 별도 관리
→ 청구서 5개
→ 레이트 리밋 5개 따로 모니터링
→ 각 SDK 문서 따로 읽기
→ 모델 전환 시 코드 구조 변경
[OpenRouter 사용 후]
OpenRouter API 키 하나
→ 300개+ 모델 전부 접근
→ 청구서 1개 (크레딧 차감)
→ 모델 전환: model 파라미터 문자열 하나만 변경
→ OpenAI SDK 그대로 사용
→ 자동 폴백 라우팅
실전 1 — 계정 세팅
가입 및 크레딧 충전
[계정 세팅 순서]
1. https://openrouter.ai 접속 → Sign Up
2. GitHub / Google 소셜 로그인 or 이메일
3. API 키 생성:
Settings → API Keys → Create Key
→ 키 이름 입력 (예: "my-project-dev")
→ Credit limit 설정 (예: $10 — 초과 시 자동 차단)
→ 생성된 키 즉시 복사 (다시 볼 수 없음)
4. 크레딧 충전 (유료 모델 사용 시):
Settings → Credits → Add Credits
→ 신용카드, 암호화폐, 계좌이체 지원
→ 최소 금액 없음
→ 크레딧 만료 없음
5. 무료 시작:
→ 크레딧 없이도 무료 모델 사용 가능
→ 일 50 요청 (크레딧 $10 이상 보유 시 1,000 요청)
환경변수 설정
# .env
OPENROUTER_API_KEY=sk-or-v1-...
# 선택: 요청 메타데이터 (OpenRouter 모니터링 대시보드에서 식별용)
OPENROUTER_SITE_URL=https://myapp.com
OPENROUTER_APP_NAME=MyApp
실전 2 — 첫 API 호출
Python — OpenAI SDK 재사용
# pip install openai python-dotenv
from openai import OpenAI
import os
# OpenAI SDK + OpenRouter 엔드포인트 조합
client = OpenAI(
base_url="https://openrouter.ai/api/v1",
api_key=os.environ["OPENROUTER_API_KEY"],
)
response = client.chat.completions.create(
model="anthropic/claude-sonnet-4-6", # 모델 문자열만 바꾸면 됨
messages=[
{"role": "user", "content": "OpenRouter를 한 줄로 설명해줘"}
],
# OpenRouter 전용 헤더 (선택 — 대시보드 식별용)
extra_headers={
"HTTP-Referer": os.environ.get("OPENROUTER_SITE_URL", ""),
"X-Title": os.environ.get("OPENROUTER_APP_NAME", ""),
}
)
print(response.choices[0].message.content)
# 비용 확인
print(f"사용 토큰: {response.usage.total_tokens}")
TypeScript/JavaScript
// npm install openai
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://openrouter.ai/api/v1",
apiKey: process.env.OPENROUTER_API_KEY,
defaultHeaders: {
"HTTP-Referer": process.env.OPENROUTER_SITE_URL ?? "",
"X-Title": process.env.OPENROUTER_APP_NAME ?? "",
},
});
const response = await client.chat.completions.create({
model: "google/gemini-3-flash",
messages: [
{ role: "user", content: "OpenRouter를 한 줄로 설명해줘" }
],
});
console.log(response.choices[0].message.content);
순수 fetch (SDK 없이)
import httpx
import os
response = httpx.post(
"https://openrouter.ai/api/v1/chat/completions",
headers={
"Authorization": f"Bearer {os.environ['OPENROUTER_API_KEY']}",
"Content-Type": "application/json",
"HTTP-Referer": "https://myapp.com", # 선택
"X-Title": "MyApp", # 선택
},
json={
"model": "meta-llama/llama-3.3-70b-instruct",
"messages": [
{"role": "user", "content": "안녕하세요"}
]
}
)
data = response.json()
print(data["choices"][0]["message"]["content"])
# 비용 메타데이터 (OpenRouter 고유)
print(f"비용: ${data.get('usage', {}).get('cost', 0):.6f}")
실전 3 — 모델 식별자 체계
[OpenRouter 모델 ID 형식]
{provider}/{model-name}:{variant}
provider: anthropic, openai, google, meta-llama, deepseek, mistralai 등
model-name: 실제 모델명
variant: 선택 (없으면 기본 라우팅)
예시:
anthropic/claude-sonnet-4-6 # Claude Sonnet 4.6
anthropic/claude-opus-4-7 # Claude Opus 4.7
openai/gpt-5.4 # GPT-5.4
openai/gpt-4o-mini # GPT-4o Mini
google/gemini-3-flash # Gemini 3 Flash
google/gemini-3.1-flash-lite # Gemini 3.1 Flash Lite
meta-llama/llama-3.3-70b-instruct # Llama 3.3 70B
deepseek/deepseek-chat # DeepSeek V3
mistralai/mistral-large # Mistral Large
x-ai/grok-beta # Grok
모델 variant 종류
# :free — 무료 모델 (크레딧 소모 없음, 레이트 리밋 있음)
model = "meta-llama/llama-3.3-70b-instruct:free"
model = "google/gemini-3-flash:free"
# :nitro — 가장 빠른 프로바이더로 라우팅 (처리량 최적화)
model = "anthropic/claude-sonnet-4-6:nitro"
# :floor — 가장 저렴한 프로바이더로 라우팅 (비용 최적화)
model = "anthropic/claude-sonnet-4-6:floor"
# :thinking — 추론(Thinking) 모드 활성화
model = "anthropic/claude-opus-4-7:thinking"
model = "google/gemini-3.1-pro:thinking"
# :extended — 더 긴 컨텍스트 윈도우
model = "openai/gpt-5.4:extended"
전체 모델 목록 API로 가져오기
import httpx
import os
# 사용 가능한 모든 모델 조회
response = httpx.get(
"https://openrouter.ai/api/v1/models",
headers={"Authorization": f"Bearer {os.environ['OPENROUTER_API_KEY']}"}
)
models = response.json()["data"]
# 무료 모델만 필터링
free_models = [
m for m in models
if m.get("pricing", {}).get("prompt") == "0"
]
print(f"무료 모델 수: {len(free_models)}")
for m in free_models[:5]:
print(f" {m['id']} — 컨텍스트: {m.get('context_length', 'N/A')}K")
# 특정 기능 지원 모델 필터링
tool_calling_models = [
m for m in models
if "tools" in m.get("supported_parameters", [])
]
실전 4 — 주요 모델 선택 가이드
[2026년 5월 기준 주요 모델 비교]
────────────────────────────────────────────────────────
모델 ID 입력 출력 컨텍스트
────────────────────────────────────────────────────────
anthropic/claude-opus-4-7 $5.00 $25.00 1M
anthropic/claude-sonnet-4-6 $3.00 $15.00 1M
anthropic/claude-haiku-4-5 $0.80 $4.00 200K
openai/gpt-5.4 $2.00 $8.00 128K
openai/gpt-4o-mini $0.15 $0.60 128K
google/gemini-3-flash $0.10 $0.40 1M
google/gemini-3.1-flash-lite:free FREE FREE 1M
meta-llama/llama-3.3-70b:free FREE FREE 128K
deepseek/deepseek-chat $0.27 $1.10 64K
mistralai/mistral-small $0.10 $0.30 128K
────────────────────────────────────────────────────────
[태스크별 추천 모델]
코딩·에이전트 (최고 품질 필요):
→ anthropic/claude-opus-4-7
→ anthropic/claude-sonnet-4-6 (비용 효율)
빠른 응답·실시간 채팅:
→ google/gemini-3-flash (저렴 + 빠름)
→ anthropic/claude-haiku-4-5
무료 프로토타이핑:
→ meta-llama/llama-3.3-70b-instruct:free
→ google/gemini-3.1-flash-lite:free
→ mistralai/mistral-7b-instruct:free
비용 최적화 (일반 태스크):
→ deepseek/deepseek-chat ($0.27/M — 저렴)
→ google/gemini-3-flash ($0.10/M)
긴 문서 처리 (1M+ 컨텍스트):
→ google/gemini-3.1-pro (2M 컨텍스트)
→ anthropic/claude-opus-4-7 (1M)
추론·수학:
→ anthropic/claude-opus-4-7:thinking
→ deepseek/deepseek-r1 (추론 특화)
실전 5 — 비용 구조 정확히 이해하기
[OpenRouter 비용 = 프로바이더 비용 + 플랫폼 수수료]
플랫폼 수수료 구조:
→ Pay-as-you-go: 크레딧 충전 시 5.5% 수수료
(크레딧 $100 충전 → 실제 사용 가능 $94.5)
→ BYOK(자체 키 연결): 월 100만 요청까지 무료
이후 표준 비용의 5%
→ 무료 모델: 수수료 없음 (레이트 리밋만)
→ Enterprise: 협의
[5.5% 수수료가 합리적인 이유]
→ API 키 5개 관리 비용 절감
→ 자동 폴백 라우팅
→ 통합 모니터링 대시보드
→ 단일 청구서
[진짜 비용 계산 예시]
Sonnet 4.6 100만 입력 토큰:
→ 직접: $3.00
→ OpenRouter Pay-as-go: $3.00 × 1.055 = $3.165 (+$0.165)
→ OpenRouter BYOK: $3.00 + $0.15 = $3.15 (5%)
→ 월 $30 미만이면 수수료 신경 쓸 필요 없음
→ 대규모 트래픽이면 BYOK가 유리
비용 응답에서 확인하기
# 매 응답에서 비용 메타데이터 추출
response = client.chat.completions.create(
model="anthropic/claude-sonnet-4-6",
messages=[{"role": "user", "content": "안녕"}]
)
# OpenRouter 응답 비용 정보
print(f"입력 토큰: {response.usage.prompt_tokens}")
print(f"출력 토큰: {response.usage.completion_tokens}")
# 실제 비용 (OpenRouter raw 응답에 포함)
import httpx
raw = httpx.post(
"https://openrouter.ai/api/v1/chat/completions",
headers={"Authorization": f"Bearer {os.environ['OPENROUTER_API_KEY']}"},
json={
"model": "anthropic/claude-sonnet-4-6",
"messages": [{"role": "user", "content": "안녕"}]
}
).json()
cost = raw.get("usage", {}).get("cost", 0)
print(f"이번 요청 비용: ${cost:.8f}")
# → $0.00001500 같이 매우 작은 값
실전 6 — 무료 티어로 시작하기
# 무료 모델로 완전 무료 챗봇 만들기
# 크레딧 불필요, 신용카드 불필요
from openai import OpenAI
import os
client = OpenAI(
base_url="https://openrouter.ai/api/v1",
api_key=os.environ["OPENROUTER_API_KEY"],
)
# 무료 모델 목록 (2026년 5월 기준)
FREE_MODELS = [
"meta-llama/llama-3.3-70b-instruct:free", # Llama 3.3 70B
"google/gemini-3.1-flash-lite:free", # Gemini Flash Lite
"mistralai/mistral-7b-instruct:free", # Mistral 7B
"microsoft/phi-3-medium-128k-instruct:free", # Phi-3 Medium
"openrouter/free", # OpenRouter 자체 무료 모델
]
def chat_free(message: str, model: str = FREE_MODELS[0]) -> str:
"""무료 모델로 채팅"""
response = client.chat.completions.create(
model=model,
messages=[{"role": "user", "content": message}]
)
return response.choices[0].message.content
# 사용
print(chat_free("파이썬 리스트 컴프리헨션 설명해줘"))
[무료 티어 한도]
신용카드 없음:
→ 무료 모델: 일 50 요청
→ 유료 모델: 불가
크레딧 $10 이상 보유:
→ 무료 모델: 일 1,000 요청
→ 유료 모델: 크레딧 차감
레이트 리밋:
→ 무료 모델: 20 RPM (분당 요청)
→ 유료 모델: 프로바이더 한도 따름 (OpenRouter 자체 제한 없음)
마무리
✅ 1편에서 한 것
→ 계정 세팅 + API 키 발급
→ OpenAI SDK로 첫 호출 (base_url 교체만)
→ 모델 ID 체계 이해 (provider/model:variant)
→ 주요 모델 비교 + 태스크별 선택 가이드
→ 비용 구조 (5.5% 수수료 + BYOK)
→ 무료 티어 활용
❌ 2편에서 다룰 것
→ 모델 폴백 설정 (프로바이더 장애 대응)
→ 로드밸런싱 (여러 프로바이더 동시 활용)
→ 특정 프로바이더 고정 or 제외
→ DeepSeek 시간대 할인 자동 활용
→ 비용 최적화 고급 패턴
반응형