Observed since 21 Oct, 11:48 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
High-performance async Python client for the private DeepSeek API
A high-performance async Python client for the private DeepSeek API. Supports streaming, image uploads, multi-turn conversations, and new account registration.
➡️ Russian documentation: docs/ru/README.md
pip install aiodeepseek
A C++ extension build requires a compiler with AVX2 support and pybind11. More details are in docs/en/pow.md. You can also download a prebuilt release.
import asyncio
from aiodeepseek import DeepSeekClient
async def main():
async with DeepSeekClient(email="myname@example.com", password="password123") as client:
result = await client.ask("Hello!")
print(result.text)
asyncio.run(main())
import asyncio
from aiodeepseek import DeepSeekClient
async def main():
async with DeepSeekClient(token="YOUR_TOKEN") as client:
result = await client.ask("Hello!")
print(result.text)
asyncio.run(main())
import asyncio
from aiodeepseek import DeepSeekClient
async def main():
async with DeepSeekClient(token="YOUR_TOKEN") as client:
async for chunk in client.ask_stream("Tell me about Python"):
print(chunk, end="", flush=True)
asyncio.run(main())
import asyncio
from aiodeepseek import DeepSeekClient
async def main():
async with DeepSeekClient(token="YOUR_TOKEN") as client:
chat = client.new_conversation()
print((await chat.ask("What is your name?")).text)
print((await chat.ask("What can you do?")).text)
asyncio.run(main())
import asyncio
from pathlib import Path
from aiodeepseek import DeepSeekClient
async def main():
async with DeepSeekClient(token="YOUR_TOKEN") as client:
img = await client.upload_image(Path("photo.jpg"))
result = await client.ask("What is in the photo?", image=img)
print(result.text)
asyncio.run(main())
or by passing Path | bytes directly to ask:
import asyncio
from pathlib import Path
from aiodeepseek import DeepSeekClient
async def main():
async with DeepSeekClient(token="YOUR_TOKEN") as client:
result = await client.ask(
prompt="What is in the photo?",
image=Path("photo.jpg")
)
print(result.text)
asyncio.run(main())
import asyncio
from aiodeepseek import DeepSeekClient
async def main():
await DeepSeekClient.send_reg_code("myname@example.com")
code = input("Code from the email: ")
token = await DeepSeekClient.confirm_reg_code("myname@example.com", "password123", code)
print("Token:", token)
asyncio.run(main())
from aiodeepseek import DeepSeekClient
from aiodeepseek.types.enums import ModelType
async with DeepSeekClient(token="...", model=ModelType.VISION) as client:
...
| Value | Description |
|---|---|
ModelType.DEFAULT | Standard language model |
ModelType.EXPERT | Deep reasoning model |
ModelType.VISION | Model with machine vision support |
import asyncio
from aiodeepseek import DeepSeekClient
from aiodeepseek.types.exceptions import AuthorizationError, DeepSeekError
async def main():
try:
async with DeepSeekClient(token="invalid") as client:
await client.ask("Hello")
except AuthorizationError:
print("Token is invalid")
except DeepSeekError as e:
print(f"API error: {e}")
asyncio.run(main())
Before every request, the client automatically solves the PoW challenge issued by the DeepSeek server. Typical difficulty is 144,000 iterations. The calculation is implemented in C++ using AVX2, which keeps it barely noticeable in practice. More details are in docs/en/pow.md.
aiohttp >= 3.9Download counts and popularity will appear here as the collector receives them.
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 0.1.1 | 10 May 2026 | 1 |
This describes our collected data; it is not a security assessment.
Observed since 21 Oct, 11:48 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:d91f3ef45b25d5ef8bcbc1caec1787c1f4cb226052cb1eed519fa45b9933a388