'CJackHwang/ds2api' 3.x 공개… DeepSeek Web 대화를 OpenAI·Claude·Gemini 호환 API로 변환, Go 백엔드+React WebUI
깃허브에 DeepSeek Web 대화 기능을 OpenAI·Claude·Gemini 호환 API로 변환하는 'CJackHwang/ds2api' 3.x가 공개됐다. 백엔드는 Go로 전량 구현됐고, 프론트엔드 'webui/' 디렉터리의 React 관리 콘솔은 배포 시 자동으로 'static/admin'에 빌드된다. 다만 저자는 README에서 학습·연구·내부 검증 용도로만 사용하라며 상업적 사용·법적 책임에 대한 보장을 일절 하지 않는다고 명시했다.
아키텍처는 chi Router와 미들웨어(RequestID·RealIP·Logger·Recoverer·CORS) 위에 OpenAI·Claude·Gemini 세 개의 프로토콜 어댑터, Admin API, WebUI 정적 호스팅이 얹혀 있다. 비-OpenAI 요청은 'CLIProxy 변환 브릿지'를 거쳐 통일된 OpenAI ChatCompletions 엔진으로 라우팅된다. 인증 해석기는 API key·bearer·x-goog-api-key를 지원하고, 계정 풀과 대기 큐가 동시 슬롯을 관리한다.
OpenAI 호환 엔드포인트로는 'GET /v1/models', 'GET /v1/models/{id}', 'POST /v1/chat/completions', 'POST /v1/responses', 'GET /v1/responses/{response_id}', 'POST /v1/embeddings', 'POST /v1/files'를 지원한다. Claude 측은 'GET /anthropic/v1/models', 'POST /anthropic/v1/messages', 'POST /anthropic/v1/messages/count_tokens'와 단축 경로 '/v1/messages'·'/messages'를 노출한다. Gemini 측은 'POST /v1beta/models/{model}:generateContent'와 streamGenerateContent를 제공한다.
모델 라인업은 default·expert·vision 세 종으로 분류되며 각각 'deepseek-chat', 'deepseek-reasoner', 'deepseek-chat-search', 'deepseek-reasoner-search' 조합으로 thinking·search 기능 유무를 표현한다. gpt-5, gpt-5-mini, gpt-5-codex, gpt-4.1, o3, claude-opus-4-6, claude-sonnet-4-5, gemini-2.5-pro, gemini-2.5-flash 등 자주 쓰이는 별칭도 입력으로 받지만 '/v1/models' 응답은 정규화된 DeepSeek 원생 ID를 반환한다.
호환 클라이언트도 광범위하다. P0 등급에는 Codex CLI/SDK(wire_api=chat·responses), OpenAI SDK(JS/Python), Vercel AI SDK(openai-compatible), Anthropic SDK(messages), Google Gemini SDK(generateContent)가 모두 포함됐다. P1 등급에는 LangChain·LlamaIndex·OpenWebUI가 OpenAI 호환 인터페이스로 연결된다.
운영 기능은 다중 계정 토큰 자동 갱신과 이메일·휴대폰 이중 로그인 방식, 계정별 in-flight 상한과 대기 큐, 동적 권장 동시성 계산, 순수 Go로 구현된 'DeepSeekHashV1' PoW(밀리초 응답), 도구 호출 누출 방지를 포괄한다. Admin API는 설정 관리·핫 업데이트·프록시·계정 일괄 테스트·세션 정리·Vercel 동기화·버전 체크를 제공하고, WebUI는 중영 이중언어와 다크모드를 지원한다. 운영 프로브는 'GET /healthz'와 'GET /readyz'로 분리됐다.
배포는 GitHub Releases 압축본을 내려받는 방식이 가장 간편하며, Docker/GHCR 컨테이너, Vercel Serverless, 로컬 소스 빌드 순서로 권장된다. Docker Compose 기본 설정은 호스트 6011 포트를 컨테이너 5001로 매핑하며, 'DS2API_HOST_PORT=5001'로 직접 5001을 노출할 수 있다. Vercel 배포 시 '/v1/chat/completions'는 'api/chat-stream.js'(Node Runtime)로 SSE 실시간성을 확보한다.
Claude Code 연결 시 'ANTHROPIC_BASE_URL'을 DS2API 루트(예: http://127.0.0.1:5001)로 지정하고 'ANTHROPIC_API_KEY'를 config.json의 keys와 일치시키되 'sk-ant-*' 형태 키도 함께 등록할 것을 권장한다. claude-sonnet-4-5와 claude-haiku-4-5는 기본적으로 'deepseek-chat', claude-opus-4-6은 'deepseek-reasoner'로 매핑되며 'claude_mapping' 또는 'claude_model_mapping'으로 변경할 수 있다.
관련 기사
'curl/curl' 깃허브 트렌딩… HTTP·MQTT·SCP·WSS 등 27개 프로토콜 지원 명령줄 데이터 전송 도구, libcurl 라이브러리 동봉 (4.1만 스타)
'home-assistant/core' 깃허브 트렌딩… 로컬 제어·프라이버시 우선 오픈소스 홈 오토메이션, 라즈베리 파이·모듈식 아키텍처로 8.6만 스타
'abhigyanpatwari/GitNexus' 깃허브 트렌딩… 코드베이스를 지식 그래프로 인덱싱하는 MCP, Claude Code·Cursor·Codex 등에 깊은 아키텍처 컨텍스트 제공