Home
Softono

FreeQwenApi

Open source JavaScript
218
Stars
86
Forks
24
Issues
10
Watchers
3 months
Last Commit

 About FreeQwenApi

Локальный API-прокси для Qwen AI с поддержкой сохранения контекста диалогов и управления сессиями через REST API

Platforms

Web Self-hosted

Languages

JavaScript

Links

Need Help Installing FreeQwenApi?

We provide expert installation service for this software. Our team will install, configure, and secure FreeQwenApi on your server. plans start at just $30.

FreeQwenApi

View on GitHub

FreeQwenApi

Локальный OpenAI-compatible прокси к Qwen Chat ГРАЦ ЕМУ - t.me/forgetmeai.
Текст, модели Qwen 3.7, файлы, Open WebUI, Hermes/LiteLLM, а теперь ещё генерация изображений и видео через Qwen Chat.

API Qwen

Что это такое

FreeQwenApi превращает веб-аккаунт Qwen Chat в локальный API endpoint:

http://localhost:3264/api

Это не локальная модель на вашей видеокарте и не официальный API Alibaba/Qwen. Это практичный browser-based proxy: вы авторизуетесь в Qwen Chat, проект сохраняет сессию и даёт локальный OpenAI-compatible API для ваших инструментов.

Возможности fork

  • Chat Completions API: POST /api/chat/completions, совместимый с OpenAI SDK, Open WebUI, LiteLLM и агентами.
  • Актуальные модели Qwen Chat: qwen3.7-max, qwen3.7-plus, qwen3.6-plus и другие модели из src/AvailableModels.txt.
  • Генерация изображений через Qwen Chat: POST /api/images/generations без DASHSCOPE_API_KEY.
  • Генерация видео через Qwen Chat: POST /api/videos/generations + polling задач через GET /api/tasks/status/:taskId.
  • Мультиаккаунты: добавление, перелогин, удаление, статусы OK / WAIT / INVALID, автоматическая round-robin ротация при лимитах.
  • Загрузка файлов: upload endpoint для файлов и вложений Qwen.
  • Open WebUI: можно подключить как OpenAI-compatible backend.
  • Hermes Agent / LiteLLM / Claude Code: готовые примеры конфигов для локальных AI-агентов.
  • Health/smoke tooling: /api/health, /api/status, /api/models, npm run smoke, npm run models:sync.
  • ForgetMeAI branding: watermark t.me/forgetmeai в README, CLI и health/media metadata.

Быстрый старт

git clone https://github.com/ForgetMeAI/FreeQwenApi
cd FreeQwenApi
npm install
npm run auth
npm run models:sync
SKIP_ACCOUNT_MENU=true npm start

В другом терминале:

npm run smoke

Если всё хорошо, API доступен здесь:

http://localhost:3264/api

Конфигурация

Все настройки задаются переменными окружения. Полный список с дефолтами и комментариями — в .env.example: порт, модель по умолчанию, таймауты, лимиты, пути, логирование, путь к Chrome и т.д.

Переменные читаются из окружения процесса. Задайте нужные удобным способом:

export PORT=3264 DEFAULT_MODEL=qwen3.7-max   # bash
$env:PORT=3264; npm start                    # PowerShell

либо через блок environment: в docker-compose.yml / флаги -e у docker run.

Авторизация Qwen Chat

Добавить аккаунт:

npm run auth

Или сразу конкретное действие:

npm run auth -- --add
npm run auth -- --list
npm run auth -- --relogin
npm run auth -- --remove

При добавлении аккаунта откроется Chromium. Войдите в Qwen Chat, затем вернитесь в терминал — токен будет сохранён в session/.

Не коммитьте и не публикуйте секреты:

  • session/
  • session/tokens.json
  • session/accounts/**/token.txt
  • .env
  • Authorization.txt
  • cookies / browser profile / реальные токены

Основные endpoints

Health

curl http://localhost:3264/api/health

Ответ содержит количество моделей, аккаунтов и watermark:

{
  "ok": true,
  "service": "FreeQwenApi",
  "watermark": "t.me/forgetmeai",
  "baseUrl": "/api",
  "models": 28
}

Список моделей

curl http://localhost:3264/api/models

Обновить список моделей из Qwen Chat metadata:

npm run models:sync

Подробный отчёт: docs/QWEN_CHAT_MODELS.md

Chat Completions

curl http://localhost:3264/api/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "qwen3.7-max",
    "messages": [
      {"role": "user", "content": "Ответь коротко: что такое FreeQwenApi?"}
    ],
    "stream": false
  }'

OpenAI SDK:

import OpenAI from 'openai';

const openai = new OpenAI({
  baseURL: 'http://localhost:3264/api',
  apiKey: 'dummy-key'
});

const response = await openai.chat.completions.create({
  model: 'qwen3.7-max',
  messages: [{ role: 'user', content: 'Привет!' }]
});

console.log(response.choices[0].message.content);

Генерация изображений через Qwen Chat

По умолчанию /api/images/generations использует Qwen Chat, а не DashScope. То есть отдельный DASHSCOPE_API_KEY не нужен — нужен активный Qwen Chat аккаунт.

curl http://localhost:3264/api/images/generations \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "Кинематографичный робот в неоновом Токио, стиль sci-fi poster",
    "model": "qwen3-vl-plus",
    "size": "16:9"
  }'

Пример ответа:

{
  "created": 1770000000,
  "watermark": "t.me/forgetmeai",
  "provider": "qwen-chat",
  "model": "qwen3-vl-plus",
  "data": [
    { "url": "https://cdn.qwenlm.ai/.../image.png", "revised_prompt": "..." }
  ]
}

Поддерживаемые форматы size для Qwen Chat:

  • 16:9
  • 9:16
  • 1:1
  • 4:3
  • также можно передать OpenAI-style 1024x1024, 1792x1024, 1024x1792 — они будут преобразованы в aspect ratio.

Старый DashScope-режим тоже оставлен:

{
  "provider": "dashscope",
  "model": "qwen-image-plus",
  "prompt": "..."
}

Подробности: IMAGE_VIDEO_GENERATION_GUIDE.md и docs/IMAGE_GENERATION.md

Генерация видео через Qwen Chat

Создать видео и дождаться результата на сервере:

curl http://localhost:3264/api/videos/generations \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "Камера медленно приближается к футуристическому городу ночью, cinematic, 5 seconds",
    "model": "qwen3-vl-plus",
    "size": "16:9",
    "wait": true
  }'

Если не хотите держать HTTP-соединение открытым:

curl http://localhost:3264/api/videos/generations \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "Робот идёт под дождём в неоновом городе",
    "size": "16:9",
    "wait": false
  }'

Ответ вернёт task_id. Проверить статус:

curl http://localhost:3264/api/tasks/status/TASK_ID

Или подождать завершения прямо в status endpoint:

curl "http://localhost:3264/api/tasks/status/TASK_ID?wait=true"

Open WebUI

Для локального Open WebUI:

Base URL: http://localhost:3264/api
API Key: dummy-key
Model: qwen3.7-max

Если Open WebUI в Docker:

Base URL: http://host.docker.internal:3264/api
API Key: dummy-key

Полная инструкция: docs/OPENWEBUI_SETUP.md

Hermes Agent / LiteLLM / Claude Code

Hermes custom provider:

custom_providers:
  - name: qwen-free
    base_url: http://localhost:3264/api
    model: qwen3.7-max
    api_key: dummy-key

Готовый пример: examples/hermes/config-snippet.yaml

Для Hermes Agent прокси поддерживает OpenAI-compatible agent loop:

  • /api/chat/completions и /api/v1/chat/completions принимают tools / legacy functions;
  • ответы с вызовами инструментов возвращаются как настоящие message.tool_calls или streaming delta.tool_calls с finish_reason: "tool_calls";
  • tool-result продолжения Hermes (role: "tool") не ломают контекст: прокси сворачивает OpenAI transcript в понятный Qwen Chat prompt и продолжает ответ после результата инструмента;
  • для Qwen Chat это адаптер поверх веб-чата, поэтому tool schemas эмулируются через системный prompt, но наружный контракт для Hermes остаётся OpenAI-compatible.

LiteLLM bridge для Claude Code:

model_list:
  - model_name: qwen3.7-max
    litellm_params:
      model: openai/qwen3.7-max
      api_base: http://localhost:3264/api
      api_key: dummy-key

Готовый пример: examples/litellm/qwen_litellm.yaml

Docker

Сначала добавьте аккаунт локально, потому что внутри контейнера нет GUI для входа:

npm run auth

Потом:

docker compose up --build -d

В docker-compose.yml важно пробросить session/:

services:
  qwen-proxy:
    build: .
    environment:
      - SKIP_ACCOUNT_MENU=true
      - PORT=3264
    ports:
      - "3264:3264"
    volumes:
      - ./session:/app/session
      - ./logs:/app/logs
      - ./uploads:/app/uploads

Рекомендуемые модели

  • Обычный чат / агенты: qwen3.7-max
  • Быстрее и легче: qwen3.7-plus
  • Кодинг: qwen3-coder-plus
  • Изображения/видео через Qwen Chat: qwen3-vl-plus
  • Open WebUI default: qwen3.7-max

Полезные команды

npm run auth                  # управление аккаунтами
npm run models:sync           # обновить список моделей
npm run smoke                 # быстрая проверка API
SKIP_ACCOUNT_MENU=true npm start

Проверки руками:

curl http://localhost:3264/api/health
curl http://localhost:3264/api/status
curl http://localhost:3264/api/models
curl http://localhost:3264/api/images/status
curl http://localhost:3264/api/videos/status

Документация

Ограничения

  • Это неофициальный browser-based proxy, Qwen может менять внутренний API.
  • Аккаунты Qwen Chat могут ловить лимиты; используйте несколько аккаунтов для round-robin.
  • Токены истекают — используйте npm run auth -- --relogin.
  • Генерация фото/видео зависит от доступности функций Qwen Chat на конкретном аккаунте.
  • URL сгенерированных медиа могут быть временными.
  • Для production используйте осторожно: это инструмент для экспериментов, демо и локальных workflow.