Metadata-Version: 2.4
Name: free-deepseek-api
Version: 1.0
Summary: неофициальный клиент для chat.deepseek.com через браузерную автоматизацию (playwright)
Project-URL: Repository, https://github.com/just-blaing/free-deepseek-api
Author-email: blaing <just.blaing@gmail.com>
License: MIT
License-File: LICENSE
Keywords: browser-automation,chatbot,deepseek,playwright,unofficial-api
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Internet :: WWW/HTTP :: Browsers
Requires-Python: >=3.10
Requires-Dist: playwright>=1.40.0
Description-Content-Type: text/markdown

# free-deepseek-api

модуль на Python, сурс которого лежит здесь
смысл этого кода в том, что если вы настолько жадный и не хотите тратить даже немного денег (либо же у вас проект чисто на неделю), то этот модуль подходит идеально для вас. работает через браузерную автоматизацию (а если быть точнее через playwright) поверх [chat.deepseek.com](https://chat.deepseek.com/) - то есть никакого официального api, никакого api-ключа, никаких платежей, всё бесплатно

⚠️ **внимание:** это неофициальный способ доступа к DeepSeek. не используйте в коммерческих целях - сессию за это могут забанить (ну или прост вас посчитают ботом). для серьёзных/продовых проектов лучше используйте [официальный api](https://platform.deepseek.com/)

## какие есть у него функции?

я опирался на функции в самом api DeepSeek, поэтому доступны:

- **`ask(prompt)`** - отправить сообщение и получить ответ
- **`set_thinking(enable)`** - включить/выключить режим thinking (глубокое мышление)
- **`new_chat()`** - создать новый пустой диалог
- **`get_chat_titles()`** - получить список названий всех чатов
- **`open_chat_by_title(title)`** - открыть существующий чат по названию

## установка

```bash
pip install free-deepseek-api
playwright install chromium
```

## авторизация

так как это браузерная автоматизация, а не http api, тебе нужна сессия - файл `auth.json` с сохранёнными куками аккаунта DeepSeek. получить его оч просто, необходимо прописать в консоли:

```bash
deepseek-register
```

откроется браузер, ты залогинишься в свой аккаунт вручную, нажмёшь enter в консоли - и `auth.json` сохранится рядом в текущей папке (если ты с телефона, можно залогиниться на пк, а `auth.json` потом перенести и использовать на телефоне (например в termux))

## пример использования:

```python
import asyncio
from free_deepseek_api import DeepSeekClient


async def main():
    async with DeepSeekClient(auth_path="auth.json") as client:
        client.set_debug(True)  # опционально, для дебаг-логов
        answer = await client.ask("привет! как дела?")
        print(answer)
        await client.set_thinking(True)
        answer = await client.ask("реши: 17 * 34")
        print(answer)

asyncio.run(main())
```

без `async with`:

```python
client = DeepSeekClient(auth_path="auth.json")
await client.start()
answer = await client.ask("привет!")
await client.close()
```

## работа с чатами

```python
titles = await client.get_chat_titles()
print(titles)  # ['ваш чат про питон 1', 'ваш чат 2'...]

await client.open_chat_by_title("питон")
answer = await client.ask("продолжи предыдущую мысль")
```

## почему headless=True по умолчанию, а `deepseek-register` открывает браузер видимым?

для повседневной работы браузер запускается в headless-режиме потому что это попросту быстрее и так удобнее. а вот для регистрации браузер обязательно открывается видимым, иначе как ты залогинишься в свой акк?

## known issues / ограничения

- это не официальный api, поэтому DeepSeek может в любой момент поменять вёрстку сайта и что-то сломается. пишите issue если такое произошло
- не рассчитано на большую нагрузку/параллельные сессии - это всего лишь обёртка над одним браузерным табом, а не production-grade клиент
- `wait_time` в `ask()` - это просто `sleep`, а не умное ожидание конца генерации. для длинных ответов (особенно с thinking) может понадобиться увеличить это значение вручную
