RichardAtCT/claude-code-openai-wrapper
OpenAI API-compatible wrapper for Claude Code
Claude Code OpenAI API Wrapper
설명 – Anthropic의 Claude Code 모델을 OpenAI API처럼 보이게 하는 자체 호스팅 서버입니다. 이 래퍼를 실행하면 기존의 모든 OpenAI 클라이언트 라이브러리(Python SDK, curl 등)를 계속 사용하면서, 요청은 공식 Claude Agent SDK를 통해 Claude Code로 라우팅됩니다.
중요성 – 많은 도구, 노트북 및 통합 기능이 OpenAI 엔드포인트 (/v1/chat/completions) 용으로 구축되어 있습니다. 이를 Claude용으로 다시 구현하는 것은 번거로운 일입니다. 이 래퍼를 사용하면 설정 변경 한 번으로 Claude Code로 교체할 수 있으며, 다음과 같은 이점을 얻을 수 있습니다:
- Claude SDK를 통한 실시간 비용 및 토큰 사용량 확인
- 호출 간 세션 연속성(대화 메모리)
- 선택적 도구 사용(파일 읽기/쓰기, bash 등)
- 다중 공급자 인증(Anthropic API key, AWS Bedrock, Google Vertex AI 또는 Claude CLI)
주요 기능
- OpenAI 호환 엔드포인트 –
/v1/chat/completions및/v1/messages(Anthropic 스타일)가 스트리밍 또는 비스트리밍 응답으로 작동합니다. - 실시간 모델 검색 –
ANTHROPIC_API_KEY가 있으면 래퍼가 Anthropic의 현재 모델 목록을 가져와(1시간 캐시) 최신 Sonnet 모델을 자동으로 기본값으로 선택합니다. - 빠른 기본 모드 – 도구는 기본적으로 비활성화되어 있어 순수 채팅 사용 시 5-10배의 속도 향상을 제공합니다. 도구는 요청별로 활성화할 수 있습니다.
- 세션 관리 –
session_id를 포함하여 대화 기록을 유지하며, 세션을 나열, 검사 및 삭제하는 엔드포인트가 존재합니다. 세션은 1시간 동안 활동이 없으면 만료됩니다. - 다중 공급자 인증 – 추가 코드 없이 Claude CLI 인증, 원시 API key, AWS Bedrock 또는 Google Vertex AI를 감지하고 사용합니다.
- 대화형 랜딩 페이지 –
http://localhost:8000/에 내장된 UI를 통해 API를 탐색하고, 명령어를 복사하며, 라이트/다크 테마를 전환할 수 있습니다. - 속도 제한 및 선택적 API-key 보호 – 남용을 방지하고 원격 액세스를 위해 서버를 보호할 수 있습니다.
- Docker 지원 – 빠른 배포를 위한 공식 Dockerfile 및 Docker-Compose 예제가 포함되어 있습니다.
시작하기 (2분 이내)
# Clone and install
git clone https://github.com/RichardAtCT/claude-code-openai-wrapper
cd claude-code-openai-wrapper
poetry install # creates a venv and pulls the Claude Agent SDK
# Authenticate (pick one)
export ANTHROPIC_API_KEY=your-key # or `claude auth login`
# Run the server (development mode with hot-reload)
poetry run uvicorn src.main:app --reload --port 8000
# Test with curl
curl http://localhost:8000/v1/models
이제 서버가 http://localhost:8000/v1/chat/completions에서 OpenAI 스타일의 호출을 수락합니다.
OpenAI Python SDK를 사용한 일반적인 사용법
from openai import OpenAI
client = OpenAI(base_url="http://localhost:8000/v1")
resp = client.chat.completions.create(
model="claude-sonnet-4-6",
messages=[{"role": "user", "content": "Write a Python hello-world script"}],
stream=False,
)
print(resp.choices[0].message.content)
extra_body={"enable_tools": True}를 추가하여 Claude가 실제로 파일을 읽고 쓰게 하거나, extra_body={"session_id": "my-session"}을 전달하여 컨텍스트를 유지하세요.
프로덕션 고려 사항
- 격리된 배포를 위해 Docker 이미지 (
docker build -t claude-wrapper .)를 사용하세요. - localhost 외부로 엔드포인트를 노출할 때는
API_KEY를 설정하거나 대화형 키 프롬프트를 활성화하여 보호하세요. - 필요에 따라 속도 제한 환경 변수 (
RATE_LIMIT_CHAT_PER_MINUTE등)를 조정하세요. - 엔터프라이즈 설정의 경우
CLAUDE_AUTH_METHOD를 설정하여 래퍼를 AWS Bedrock 또는 Google Vertex AI로 지정할 수 있습니다.
상태 – Production Ready로 표시됨. 모든 핵심 엔드포인트가 테스트되었으며, 스트리밍이 작동하고, 상태 확인, 버전 및 인증 상태 확인 기능이 포함되어 있습니다.
모든 세부 정보는 저장소의 README에서 직접 가져온 것이며, 추가 기능은 추론되지 않았습니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트