Claude Code와 같은 Anthropic 클라이언트를 Gemini, OpenAI, LM Studio, Ollama 또는 직접적인 Anthropic 백엔드와 함께 사용하세요. 🤝
Anthropic 클라이언트를 Gemini, OpenAI 또는 Anthropic 모델 자체(일종의 투명 프록시)와 함께 사용할 수 있게 해주는 프록시 서버입니다. 모든 과정은 LiteLLM을 통해 이루어집니다. 🌉
- OpenAI API 키 🔑
- Google AI Studio (Gemini) API 키 (Google 제공자를 사용하는 경우) 🔑
- Vertex AI API가 활성화된 Google Cloud 프로젝트 (Gemini에 애플리케이션 기본 자격 증명을 사용하는 경우) ☁️
- uv 설치됨.
이 프록시는 uv를 사용하여 의존성을 관리합니다. 운영체제에 맞는 스크립트를 사용하여 간단히 시작할 수 있습니다.
git clone https://github.com/mixedsider/claude-code-proxy.git
cd claude-code-proxy리눅스 / macOS:
chmod +x install.sh start.sh
./install.sh # 최초 1회 실행: 환경 설정 (.env 생성 및 uv 설치 확인)
./start.sh # 서버 실행윈도우 (PowerShell):
.\install.ps1 # 최초 1회 실행: 환경 설정 (.env 생성 및 uv 설치 확인)
.\start.ps1 # 서버 실행Note
install 스크립트는 uv가 없는 경우 자동으로 설치하고, .env.example을 기반으로 .env 파일을 생성해 줍니다. 생성된 .env 파일을 열어 API 키를 입력한 후 서버를 실행하세요.
스크립트를 사용하지 않고 직접 실행하려면 아래 명령어를 사용하세요:
uv run uvicorn server:app --host 0.0.0.0 --port 8082.env 파일에서 다음 항목들을 설정하여 프록시의 동작을 제어할 수 있습니다:
ANTHROPIC_API_KEY: (선택 사항) Anthropic 모델로 직접 프록시하는 경우 필요.OPENAI_API_KEY: OpenAI API 키.GEMINI_API_KEY: Google AI Studio (Gemini) API 키.- 3단계 모델 계층 설정 (선택 사항):
BIG_MODEL_PROVIDER/BIG_MODEL:opus매핑용.MIDDLE_MODEL_PROVIDER/MIDDLE_MODEL:sonnet매핑용 (기본값: LM Studio / gemma-4-31b-it).SMALL_MODEL_PROVIDER/SMALL_MODEL:haiku매핑용 (기본값: Ollama / gemma4:e4b-it-q4_K_M).
서버 가동 후, tests.py를 사용하여 다양한 시나리오를 테스트할 수 있습니다. 주요 테스트 케이스는 다음과 같습니다.
외부 Anthropic API와의 비교 없이 프록시 서버의 응답 구조가 올바른지만 확인합니다. (API 키가 없어도 로컬 모델 테스트 시 유용합니다)
uv run python tests.py --proxy-only특정 계층(Big, Middle, Small)이나 로컬 모델(ollama, lm_studio)만 콕 집어서 테스트하고 싶을 때 사용합니다.
# BIG(Opus) 계층 매핑 테스트
uv run python tests.py --test tier_big --proxy-only
# MIDDLE(Sonnet) 계층 매핑 테스트
uv run python tests.py --test tier_middle --proxy-only
# SMALL(Haiku) 계층 매핑 테스트
uv run python tests.py --test tier_small --proxy-only
# Ollama 직접 호출 테스트
uv run python tests.py --test ollama --proxy-only설정된 BIG, MIDDLE, SMALL 전 계층의 매핑과 응답을 한 번에 확인합니다.
uv run python tests.py --tiers --proxy-onlyDocker를 사용하는 경우, 위에 설명된 대로 예시 환경 파일을 .env로 다운로드하고 편집합니다.
curl -O .env https://raw.githubusercontent.com/1rgs/claude-code-proxy/refs/heads/main/.env.example그런 다음, docker compose를 사용하여 컨테이너를 시작할 수 있습니다 (권장):
services:
proxy:
image: ghcr.io/1rgs/claude-code-proxy:latest
restart: unless-stopped
env_file: .env
ports:
- 8082:8082또는 명령어로 실행:
docker run -d --env-file .env -p 8082:8082 ghcr.io/1rgs/claude-code-proxy:latest-
Claude Code 설치 (아직 설치하지 않은 경우):
npm install -g @anthropic-ai/claude-code
-
프록시에 연결:
ANTHROPIC_BASE_URL=http://localhost:8082 claude
-
완료되었습니다! 이제 Claude Code 클라이언트는 프록시를 통해 설정된 백엔드 모델(기본값 Gemini)을 사용합니다. 🎯
프록시는 Claude의 3단계 모델 계층을 사용자가 정의한 백엔드 모델로 자동 매핑합니다:
| 계층 | Claude 모델 키워드 | 매핑 대상 (기본값/예시) | 프로바이더 예시 |
|---|---|---|---|
| BIG | opus / sonnet (설정에 따라) |
BIG_MODEL (예: gemini-2.5-pro) |
Google Gemini / OpenAI |
| MIDDLE | sonnet |
MIDDLE_MODEL (예: gemma-4-31b-it) |
LM Studio / Local |
| SMALL | haiku |
SMALL_MODEL (예: gemma2:2b) |
Ollama / Local |
가장 강력한 기능 중 하나는 외부 API와 로컬 모델을 혼합하여 사용하는 것입니다. .env 파일에서 다음과 같이 설정할 수 있습니다:
# BIG 모델은 Gemini Pro 사용 (외부 API)
BIG_MODEL_PROVIDER="google"
BIG_MODEL="gemini-2.5-pro"
# MIDDLE 모델은 LM Studio의 Gemma 사용 (로컬)
MIDDLE_MODEL_PROVIDER="lm-studio"
MIDDLE_MODEL="gemma-4-31b-it"
# SMALL 모델은 Ollama 사용 (로컬)
SMALL_MODEL_PROVIDER="ollama"
SMALL_MODEL="gemma4:e4b-it-q4_K_M"
# API 키 설정
GEMINI_API_KEY="AIza..."
OPENAI_API_KEY="sk-..."이렇게 설정하면 Claude Code에서 sonnet 모델을 요청할 때 실제로는 로컬의 gemma-4-31b-it 모델이 동작하게 됩니다.
다음 OpenAI 모델은 자동 openai/ 접두사 처리가 지원됩니다:
- o3-mini
- o1
- o1-mini
- o1-pro
- gpt-4.5-preview
- gpt-4o
- gpt-4o-audio-preview
- chatgpt-4o-latest
- gpt-4o-mini
- gpt-4o-mini-audio-preview
- gpt-4.1
- gpt-4.1-mini
다음 Gemini 모델은 자동 gemini/ 접두사 처리가 지원됩니다:
- gemini-2.5-pro
- gemini-2.5-flash
프록시는 모델 이름에 적절한 접두사를 자동으로 추가합니다:
- OpenAI 모델은
openai/접두사가 붙습니다. - Gemini 모델은
gemini/접두사가 붙습니다. - BIG_MODEL 및 SMALL_MODEL은 OpenAI 또는 Gemini 모델 목록에 있는지 여부에 따라 적절한 접두사가 붙습니다.
예시:
gpt-4o는openai/gpt-4o가 됩니다.gemini-2.5-pro-preview-03-25는gemini/gemini-2.5-pro-preview-03-25가 됩니다.- BIG_MODEL이 Gemini 모델로 설정된 경우, Claude Sonnet은
gemini/[모델명]으로 매핑됩니다.
.env 파일의 환경 변수를 사용하거나 직접 매핑을 제어할 수 있습니다:
예시 1: 기본값 (OpenAI 사용)
API 키 외에는 .env를 변경할 필요가 없거나 다음과 같이 설정합니다:
OPENAI_API_KEY="your-openai-key"
GEMINI_API_KEY="your-google-key" # PREFERRED_PROVIDER=google인 경우 필요
# PREFERRED_PROVIDER="openai" # 선택 사항, 기본값임
# BIG_MODEL="gpt-4.1" # 선택 사항, 기본값임
# SMALL_MODEL="gpt-4.1-mini" # 선택 사항, 기본값임예시 2a: Google 선호 (GEMINI_API_KEY 사용)
GEMINI_API_KEY="your-google-key"
OPENAI_API_KEY="your-openai-key" # 폴백을 위해 필요
PREFERRED_PROVIDER="google"
# BIG_MODEL="gemini-2.5-pro" # 선택 사항, Google 선호 시 기본값
# SMALL_MODEL="gemini-2.5-flash" # 선택 사항, Google 선호 시 기본값예시 2b: Google 선호 (애플리케이션 기본 자격 증명과 함께 Vertex AI 사용)
OPENAI_API_KEY="your-openai-key" # 폴백을 위해 필요
PREFERRED_PROVIDER="google"
VERTEX_PROJECT="your-gcp-project-id"
VERTEX_LOCATION="us-central1"
USE_VERTEX_AUTH=true
# BIG_MODEL="gemini-2.5-pro" # 선택 사항, Google 선호 시 기본값
# SMALL_MODEL="gemini-2.5-flash" # 선택 사항, Google 선호 시 기본값예시 3: 직접 Anthropic 사용 ("단순 Anthropic 프록시" 모드)
ANTHROPIC_API_KEY="sk-ant-..."
PREFERRED_PROVIDER="anthropic"
# 이 모드에서 BIG_MODEL 및 SMALL_MODEL은 무시됩니다.
# haiku/sonnet 요청은 Anthropic 모델로 직접 전달됩니다.사용 사례: 이 모드는 OpenAI나 Gemini로 재매핑하지 않고 실제 Anthropic 모델을 사용하면서도 프록시 인프라(로깅, 미들웨어, 요청/응답 처리 등)를 활용하고 싶을 때 유용합니다.
예시 4: 특정 OpenAI 모델 사용
OPENAI_API_KEY="your-openai-key"
GEMINI_API_KEY="your-google-key"
PREFERRED_PROVIDER="openai"
BIG_MODEL="gpt-4o" # 특정 모델 예시
SMALL_MODEL="gpt-4o-mini" # 특정 모델 예시예시 5: Ollama 사용
PREFERRED_PROVIDER="ollama"
OLLAMA_BASE_URL="http://localhost:11434" # 기본값
BIG_MODEL="llama3.3"
SMALL_MODEL="llama3.1:8b"예시 6: LM Studio 사용
PREFERRED_PROVIDER="lm-studio"
LM_STUDIO_BASE_URL="http://localhost:1234/v1" # 기본값
BIG_MODEL="qwen2.5-7b-instruct"
SMALL_MODEL="qwen2.5-1.5b-instruct"이 프록시는 다음과 같이 작동합니다:
- Anthropic의 API 형식으로 요청을 받음 📥
- LiteLLM을 통해 요청을 OpenAI 형식으로 번역 🔄
- 번역된 요청을 백엔드(OpenAI 등)로 전송 📤
- 응답을 다시 Anthropic 형식으로 변환 🔄
- 형식화된 응답을 클라이언트에 반환 ✅
프록시는 스트리밍 및 비스트리밍 응답을 모두 처리하며, 모든 Claude 클라이언트와의 호환성을 유지합니다. 🌊
기여는 언제나 환영합니다! 자유롭게 Pull Request를 제출해 주세요. 🎁
