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에서 직접 가져온 것이며, 추가 기능은 추론되지 않았습니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트