diff --git a/README.md b/README.md index 00c5ee9..6664238 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # FreeDeepseekAPI
- Локальный OpenAI-compatible API proxy для DeepSeek Web Chat + Local OpenAI-compatible API proxy for DeepSeek Web Chat
@@ -12,38 +12,38 @@
- Быстрый старт • - Возможности • - Примеры • - Модели • + Quick Start • + Features • + Examples • + Models • Endpoints • Open WebUI
-FreeDeepseekAPI поднимает локальный API-сервер для **DeepSeek Web Chat** (`chat.deepseek.com`) и позволяет подключать DeepSeek Web к Open WebUI, LiteLLM, Hermes, Claude Code, OpenAI SDK-style клиентам и другим OpenAI-compatible инструментам. +FreeDeepseekAPI runs a local API server for **DeepSeek Web Chat** (`chat.deepseek.com`) and lets you connect DeepSeek Web to Open WebUI, LiteLLM, Hermes, Claude Code, OpenAI SDK-style clients, and other OpenAI-compatible tools. -Проект работает через ваш обычный залогиненный аккаунт DeepSeek в отдельном Chrome-профиле. Локальный сервер принимает API-запросы, а дальше сам ходит в DeepSeek Web через сохранённую browser-сессию. +The project works through your regular logged-in DeepSeek account in a separate Chrome profile. The local server accepts API requests and then talks to DeepSeek Web through the saved browser session. -> ⚠️ Это экспериментальный web-chat proxy. DeepSeek может менять внутренний Web API без предупреждения. Для production-кейсов надёжнее официальный платный API DeepSeek. +> ⚠️ This is an experimental web-chat proxy. DeepSeek may change the internal Web API without warning. For production use cases, the official paid DeepSeek API is more reliable. ForgetMeAI: https://t.me/forgetmeai --- -## Навигация +## Navigation -- [Что это даёт](#-что-это-даёт) -- [Возможности](#-возможности) -- [Быстрый старт](#-быстрый-старт) -- [Windows запуск](#-windows-запуск) -- [Linux / Chromium запуск](#-linux--chromium-запуск) -- [VPS / headless запуск](#-vps--headless-запуск) +- [What this gives you](#-what-this-gives-you) +- [Features](#-features) +- [Quick Start](#-quick-start) +- [Windows launch](#-windows-launch) +- [Linux / Chromium launch](#-linux--chromium-launch) +- [VPS / headless launch](#-vps--headless-launch) - [Diagnostics / doctor](#-diagnostics--doctor) -- [Session reuse и сброс чатов](#-session-reuse-и-сброс-чатов) +- [Session reuse and chat reset](#-session-reuse-and-chat-reset) - [Multi-account pool](#-multi-account-pool) -- [Идеи для консольной авторизации](#-идеи-для-консольной-авторизации) -- [Проверка работы](#-проверка-работы) -- [Примеры запросов](#-примеры-запросов) +- [Console auth ideas](#-console-auth-ideas) +- [Verify it works](#-verify-it-works) +- [Request examples](#-request-examples) - [Chat Completions](#chat-completions) - [Reasoning](#reasoning) - [Web search](#web-search) @@ -51,40 +51,44 @@ ForgetMeAI: https://t.me/forgetmeai - [Anthropic Messages API](#anthropic-messages-api) - [OpenAI Responses API](#openai-responses-api) - [Tool calling](#tool-calling) -- [Модели](#-модели) +- [Models](#-models) - [Endpoints](#-endpoints) - [Open WebUI](#-open-webui) -- [Обновить логин](#-обновить-логин) -- [Статус проекта](#-статус-проекта) +- [Chrome Extension](#-chrome-extension) +- [Dashboard Web](#-dashboard-web) +- [Update login](#-update-login) +- [Project status](#-project-status) --- -## ✨ Что это даёт +## ✨ What this gives you -- Использовать DeepSeek Web как локальный API endpoint. -- Подключать DeepSeek к Open WebUI и другим OpenAI-compatible клиентам. -- Получать обычные JSON-ответы или streaming SSE. -- Использовать reasoning-модели с отдельным `reasoning_content`. -- Работать с Anthropic Messages API shim для Claude Code / Anthropic SDK. -- Использовать OpenAI Responses API shim для новых OpenAI/Codex-style клиентов. -- Держать отдельные web-сессии для разных агентов/users. +- Use DeepSeek Web as a local API endpoint. +- Connect DeepSeek to Open WebUI and other OpenAI-compatible clients. +- Get regular JSON responses or streaming SSE. +- Use reasoning models with separate `reasoning_content`. +- Work with Anthropic Messages API shim for Claude Code / Anthropic SDK. +- Use OpenAI Responses API shim for new OpenAI/Codex-style clients. +- Keep separate web sessions for different agents/users. -## 🚀 Возможности +## Features - **OpenAI-compatible API:** `POST /v1/chat/completions` - **Anthropic-compatible shim:** `POST /v1/messages` - **OpenAI Responses shim:** `POST /v1/responses` -- **Streaming:** SSE chunks и обычные non-stream JSON-ответы -- **Reasoning output:** отдельный `reasoning_content` для thinking-моделей -- **Tool calling:** парсинг OpenAI tools, Anthropic tools и Responses function tools -- **Model capabilities:** `GET /v1/model-capabilities` с alias → real web mode -- **Agent sessions:** отдельная DeepSeek-сессия на `user` / agent id -- **Session recovery:** авто-сброс устаревших chains/sessions -- **Zero dependencies:** Node.js 18+, без npm-зависимостей +- **Streaming:** SSE chunks and regular non-stream JSON responses +- **Reasoning output:** separate `reasoning_content` for thinking models +- **Tool calling:** parsing OpenAI tools, Anthropic tools, and Responses function tools +- **Model capabilities:** `GET /v1/model-capabilities` with alias → real web mode +- **Agent sessions:** separate DeepSeek session per `user` / agent id +- **Session recovery:** auto-reset of stale chains/sessions +- **Zero dependencies:** Node.js 18+, no npm dependencies +- **Chrome Extension:** Browser extension for session management +- **Dashboard Web:** Administrative web interface with real-time metrics --- -## ⚡ Быстрый старт +## ⚡ Quick Start ```bash git clone https://github.com/ForgetMeAI/FreeDeepseekAPI.git @@ -93,29 +97,29 @@ npm run auth npm start ``` -`npm run auth` открывает меню авторизации: +`npm run auth` opens the auth menu: -1. выберите пункт `1`; -2. войдите в DeepSeek в отдельном Chrome-профиле; -3. отправьте короткое сообщение вроде `ok`; -4. вернитесь в терминал и нажмите Enter. +1. select item `1`; +2. log in to DeepSeek in a separate Chrome profile; +3. send a short message like `ok`; +4. return to terminal and press Enter. -`npm start` показывает меню запуска: +`npm start` shows the launch menu: -- `1` — авторизоваться / обновить DeepSeek login -- `2` — показать модели и статусы -- `3` — запустить proxy -- `4` — выйти +- `1` — authorize / update DeepSeek login +- `2` — show models and statuses +- `3` — start proxy +- `4` — exit -Для headless/CI-запуска без меню: +For headless/CI launch without menu: ```bash NON_INTERACTIVE=1 npm start -# или +# or SKIP_ACCOUNT_MENU=1 npm start ``` -По умолчанию сервер слушает: +By default the server listens on: ```text http://localhost:9655 @@ -123,7 +127,7 @@ http://localhost:9655 --- -## 🪟 Windows запуск +## Windows Launch ```powershell git clone https://github.com/ForgetMeAI/FreeDeepseekAPI.git @@ -132,18 +136,18 @@ npm run auth npm start ``` -Если Chrome установлен нестандартно, явно укажите путь: +If Chrome is installed in a non-standard location, specify the path explicitly: ```powershell $env:CHROME_PATH="C:\Program Files\Google\Chrome\Application\chrome.exe" npm run auth ``` -Если Chrome не найден, `npm run auth` теперь печатает готовые инструкции для Windows/macOS/Linux вместо загадочного stack trace. +If Chrome is not found, `npm run auth` now prints ready-to-use instructions for Windows/macOS/Linux instead of a cryptic stack trace. --- -## 🐧 Linux / Chromium запуск +## Linux / Chromium Launch ```bash git clone https://github.com/ForgetMeAI/FreeDeepseekAPI.git @@ -152,33 +156,33 @@ CHROME_PATH=$(which chromium) npm run auth npm start ``` -Если Chromium называется иначе: +If Chromium has a different name: ```bash CHROME_PATH=$(which chromium-browser) npm run auth -# или +# or CHROME_PATH=$(which google-chrome) npm run auth ``` --- -## 🖥 VPS / headless запуск +## VPS / Headless Launch -Самый надёжный flow без Chrome на сервере: +The most reliable flow without Chrome on the server: -1. На домашнем ПК, где есть GUI/Chrome: +1. On your home PC (where you have GUI/Chrome): ```bash npm run auth ``` -2. Скопируйте `deepseek-auth.json` на VPS: +2. Copy `deepseek-auth.json` to VPS: ```bash scp deepseek-auth.json user@your-vps:/opt/FreeDeepseekAPI/deepseek-auth.json ``` -3. На VPS импортируйте/проверьте файл и выставьте безопасные права: +3. On VPS import/verify the file and set safe permissions: ```bash cd /opt/FreeDeepseekAPI @@ -186,87 +190,87 @@ npm run auth:import -- --input ./deepseek-auth.json npm run doctor -- --offline ``` -4. Запускайте proxy без интерактивного меню: +4. Start proxy without interactive menu: ```bash NON_INTERACTIVE=1 npm start ``` -Можно импортировать не только готовый `deepseek-auth.json`, но и browser cookie export: +You can import not only a ready-made `deepseek-auth.json`, but also a browser cookie export: ```bash DEEPSEEK_TOKEN="- ForgetMeAI · Telegram -
+Contributions are welcome via pull requests. diff --git a/chrome-extension/README.md b/chrome-extension/README.md index 169369d..425a81a 100644 --- a/chrome-extension/README.md +++ b/chrome-extension/README.md @@ -1,31 +1,33 @@ -# DeepSeek → FreeDeepseekAPI (расширение) +# DeepSeek → FreeDeepseekAPI (extension) -Добавляет аккаунт DeepSeek в локальный FreeDeepseekAPI **одним кликом**: -перехватывает заголовки реального запроса к `chat.deepseek.com/api/...` -(`token` из `Authorization`, все cookie, `hif_*`) и отправляет на +Adds a DeepSeek account to your local FreeDeepseekAPI **with one click**: +intercepts headers from a real request to `chat.deepseek.com/api/...` +(`token` from `Authorization`, all cookies, `hif_*`) and sends them to `http://localhost:9655/api/accounts/import`. +Works in Firefox and Chrome/Edge (Manifest V3). + Работает в Firefox и Chrome/Edge (Manifest V3). ## Установка **Firefox** -1. Откройте `about:debugging#/runtime/this-firefox` -2. «Загрузить временное дополнение» → выберите `manifest.json` из этой папки. - (Временное дополнение: после перезапуска Firefox установить заново.) +1. Open `about:debugging#/runtime/this-firefox` +2. "Load Temporary Add-on" → select `manifest.json` from this folder. + (Temporary add-on: after Firefox restart, install again.) **Chrome / Edge** -1. Откройте `chrome://extensions` -2. Включите «Режим разработчика». -3. «Загрузить распакованное» → выберите эту папку. +1. Open `chrome://extensions` +2. Enable "Developer mode". +3. "Load unpacked" → select this folder. -## Использование -1. Запустите FreeDeepseekAPI (порт 9655). -2. Откройте `chat.deepseek.com` и войдите в нужный аккаунт. -3. **Отправьте любое сообщение** (например `ok`) — чтобы прошёл запрос, из которого берутся креды. -4. Клик по иконке расширения → **«➕ Добавить в FreeDeepseekAPI»**. +## Usage +1. Start FreeDeepseekAPI (port 9655). +2. Open `chat.deepseek.com` and log in to the desired account. +3. **Send any message** (e.g. `ok`) — so the request from which creds are taken occurs. +4. Click extension icon → **"➕ Add to FreeDeepseekAPI"**. -Для нескольких аккаунтов повторите из разных профилей/логинов браузера. +For multiple accounts, repeat from different browser profiles/logins. -Вспомогательные кнопки: «Собрать» (показать креды), «Копировать JSON», -«Скачать файл» (`deepseek-auth.json`) — на случай ручного импорта через дашборд. +Auxiliary buttons: "Collect" (show creds), "Copy JSON", +"Download file" (`deepseek-auth.json`) — for manual import via dashboard. diff --git a/chrome-extension/background.js b/chrome-extension/background.js index 481c500..938fcbd 100644 --- a/chrome-extension/background.js +++ b/chrome-extension/background.js @@ -1,18 +1,18 @@ -// DeepSeek → FreeDeepseekAPI — перехват заголовков реального запроса. -// token (Authorization: Bearer), cookie (все), hif (x-hif-*) берутся из -// настоящего запроса к chat.deepseek.com/api/... — как в HAR/cURL. +// DeepSeek → FreeDeepseekAPI — intercepts headers of real request. +// token (Authorization: Bearer), cookie (all), hif (x-hif-*) are taken from +// actual request to chat.deepseek.com/api/... — same as HAR/cURL. const WASM_DEFAULT = 'https://fe-static.deepseek.com/chat/static/sha3_wasm_bg.7b9ca65ddd.wasm'; const KEY = 'deepseek_capture'; -// extraHeaders нужен Chrome для доступа к Cookie/Authorization; Firefox даёт их без него. +// extraHeaders needed for Chrome to access Cookie/Authorization; Firefox provides them without it. const opts = ['requestHeaders']; try { if (chrome.webRequest.OnBeforeSendHeadersOptions && chrome.webRequest.OnBeforeSendHeadersOptions.EXTRA_HEADERS) { opts.push('extraHeaders'); } -} catch (e) { /* Firefox: опции нет — это нормально */ } +} catch (e) { /* Firefox: option doesn't exist — this is normal */ } chrome.webRequest.onBeforeSendHeaders.addListener( (details) => { diff --git a/chrome-extension/content.js b/chrome-extension/content.js index ad04f8c..8e62399 100644 --- a/chrome-extension/content.js +++ b/chrome-extension/content.js @@ -13,4 +13,4 @@ chrome.runtime.onMessage.addListener((request, sender, sendResponse) => { } sendResponse({ data }); } -}); +}); \ No newline at end of file diff --git a/chrome-extension/manifest.json b/chrome-extension/manifest.json index 5501740..2030591 100644 --- a/chrome-extension/manifest.json +++ b/chrome-extension/manifest.json @@ -2,7 +2,7 @@ "manifest_version": 3, "name": "DeepSeek → FreeDeepseekAPI", "version": "1.4", - "description": "Добавляет аккаунт DeepSeek в локальный FreeDeepseekAPI одним кликом. Перехватывает заголовки запроса chat.deepseek.com (token + cookie + hif).", + "description": "Adds a DeepSeek account to local FreeDeepseekAPI with one click. Intercepts chat.deepseek.com request headers (token + cookie + hif).", "author": "FreeDeepseekAPI", "browser_specific_settings": { "gecko": { @@ -27,4 +27,4 @@ "default_icon": { "16": "icons/icon16.png", "48": "icons/icon48.png", "128": "icons/icon128.png" } }, "icons": { "16": "icons/icon16.png", "48": "icons/icon48.png", "128": "icons/icon128.png" } -} +} \ No newline at end of file diff --git a/chrome-extension/popup.html b/chrome-extension/popup.html index 05f1be5..db990c1 100644 --- a/chrome-extension/popup.html +++ b/chrome-extension/popup.html @@ -57,19 +57,19 @@chat.deepseek.com, отправьте любое сообщение, затем нажмите кнопкуchat.deepseek.com, send any message, then click the button