Skip to content

ForgetMeAI/FreeQwenApi

 
 

Repository files navigation

FreeQwenApi — ForgetMeAI fork

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

ForgetMeAI 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

Авторизация 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.

От ForgetMeAI

Если fork помог — подпишитесь: t.me/forgetmeai

Там практичные AI-инструменты, локальные агенты, open-source находки и честные тесты без корпоративной лапши.

About

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

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • JavaScript 86.8%
  • Python 11.2%
  • PowerShell 1.1%
  • Other 0.9%