Rfym21/Qwen2API

让 QwenLM 物尽其用

Qwen‑Proxy (Qwen2API)

무엇인가요 – 알리바바의 Qwen 채팅 서비스(https://chat.qwen.ai 및 Qwen CLI)를 OpenAI 호환(일부 Anthropic 호환) HTTP API로 변환하는 자체 호스팅 프록시입니다. OpenAI API를 사용하는 모든 클라이언트(예: ChatGPT‑Next‑Web, LobeChat, LangChain, Claude‑Code 등)는 코드 변경 없이 Qwen 모델을 사용할 수 있습니다.

주요 기능

  • OpenAI API 표면 – /v1/models, /v1/chat/completions, /v1/images/*, /v1/videos, 그리고 Anthropic 스타일의 /v1/messages 엔드포인트.
  • 함수 호출 / 도구 – OpenAI tools 및 Anthropic tool_use 완전 지원, 스트리밍 단계적 arguments 및 엄격한 tool_choice=required 처리 포함.
  • 다중 계정 로테이션 – 여러 Qwen 계정을 설정 가능; 프록시는 라운드로빈 방식으로 전환(각 계정에 개별 외부 프록시 설정 가능)하여 IP 기반 차단을 회피.
  • 계정별 외부 프록시 – HTTP, HTTPS, SOCKS5/SOCKS5H 프록시를 개별 계정에 연결 가능.
  • 256 K 컨텍스트 CLI 엔드포인트 – /cli 경로는 매우 큰 컨텍스트 창과 도구 지원을 갖춘 Qwen CLI 모델을 노출.
  • 다중 모달 – 이미지/동영상 생성, 이미지 편집, 동영상 이해가 OpenAI 스타일 엔드포인트를 통해 제공.
  • 웹 UI – 계정 추가, 계정별 프록시 설정, 사용량 모니터링, 모델 매핑 편집이 가능한 내장 관리 대시보드.
  • 지속성 옵션 – 메모리 내(기본값), JSON 파일, 또는 Redis로 계정 데이터, 설정, 로그 저장.
  • Docker 및 바이너리 배포 – 공식 Docker 이미지, Docker‑Compose 파일, 런타임, 백엔드, 프론트엔드, 토크나이저를 통합한 단일 파일 Bun 바이너리 제공.

시작 방법

  1. Docker(가장 빠름)
    docker run -d \
      -p 3000:3000 \
      -e API_KEY=sk-admin123,sk-user456 \
      -e ACCOUNTS=user1@mail.com:pass1|http://proxy:8080 \
      -e DATA_SAVE_MODE=none \
      -v $(pwd)/caches:/app/caches \
      --name qwen2api rfym21/qwen2api:latest
    
  2. Docker‑Compose – 제공된 docker-compose.yml을 다운로드하고 docker compose up -d를 실행.
  3. 로컬 소스 – 리포지토리 복제 후 Bun으로 설치(bun install --frozen-lockfile), .env.example를 .env로 복사, 변수 수정 후 bun run start 실행.
  4. 스탠드얼론 바이너리 – bun run build:binary를 실행하여 단일 실행 파일(qwen2api‑windows‑x64.exe, qwen2api‑linux‑x64 등) 생성. .env 파일을 옆에 두고 직접 실행 가능.

설정 요약

변수 목적
API_KEY 쉼표로 구분된 API 키 목록. 첫 번째 키는 관리자 키(UI 접근용); 나머지는 일반 API 호출용.
ACCOUNTS email:password 형식의 Qwen 계정 목록, 선택적으로 `
PROXY_URL 계정이 자체 프록시를 정의하지 않을 때 사용하는 전역 외부 프록시.
DATA_SAVE_MODE none(기본값), file, redis – 계정 데이터 및 설정의 지속 저장 위치.
CACHE_MODE default(메모리 내) 또는 file – 이미지 캐시 파일 저장 위치.
QWEN_CHAT_PROXY_URL / QWEN_CLI_PROXY_URL 자체 미러를 운영하는 경우 상류 Qwen 엔드포인트를 오버라이드 가능.
AGENT_TURN_MAX_ATTEMPTS 오류를 반환하기 전 도구 호출 라운드의 최대 재시도 횟수.
MODELS_CACHE_TTL 상류 모델 목록 캐시 유효 시간(초), 0은 만료 없음.

일반적인 사용 예 (OpenAI 호환 클라이언트)

curl -H "Authorization: Bearer sk-admin123" \
     -H "Content-Type: application/json" \
     -d '{"model":"Qwen3.6-Plus","messages":[{"role":"user","content":"안녕하세요"}],"stream":false}' \
     http://localhost:3000/v1/chat/completions

응답은 OpenAI 스키마(id, object, choices, usage)를 따릅니다.

왜 필요할까

  • 기존 OpenAI 기반 도구를 재사용하면서 Qwen의 강력한 다중 모달 및 256 K 컨텍스트 모델에 접근.
  • 원본 자격 증명을 공개하지 않고 단일 Qwen 구독을 여러 사용자 또는 서비스 간 공유.
  • 계정 및 계정별 프록시를 로테이션하여 IP 기반 제한 회피.
  • 로컬 또는 컨테이너에서 실행 가능하며, 모든 트래픽을 신뢰할 수 있는 네트워크 내에 유지.

제한 사항 / 참고 사항

  • 프록시는 원본 Qwen SDK를 제공하지 않으며, 단지 요청을 전달하고 응답을 변환할 뿐.
  • 일부 Anthropic 필드는 부분적으로만 지원됨. 완전한 Anthropic 구현이 아니라 최선의 호환성 목표.
  • 지속 저장(파일 또는 Redis)은 선택 사항. 없을 경우 계정 토큰은 메모리에만 유지되며 재시작 시 손실.
  • 서비스는 신뢰할 수 있는 환경을 전제로 하며, 프록시 URL은 API 응답에 그대로 반환됨.

TL;DR – Qwen‑Proxy는 Bun 기반 서버로, 어떤 OpenAI 호환 클라이언트도 알리바바의 Qwen 모델과 통신할 수 있게 하며, 함수 호출, 다중 모달 생성, 계정 로테이션, 웹 UI를 지원. Docker, Docker‑Compose 또는 단일 바이너리로 배포하고, Qwen 계정과 API 키를 설정한 후 익숙한 OpenAI 엔드포인트를 사용 시작하세요.

관련

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