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スタイルのエンドポイントで利用可能。
  • Web 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 モデルと通信できるようにし、関数呼び出し、マルチモーダル生成、アカウントローテーション、Web UI をサポート。Docker、Docker‑Compose、または単一バイナリでデプロイ。Qwen アカウントと API キーを設定し、馴染み深い OpenAI エンドポイントで利用を開始。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト