A while back, xtekky wrote a small library called deepseek4free for interacting with DeepSeek's chat infrastructure. It worked, but it was synchronous — meaning it blocked the event loop on every API call, making it painful to use in any async Python project.
I needed it for a Discord bot I was building, and the blocking behavior was causing real problems. So I rewrote it.
The result is dskpp (dsk++) — a drop-in async replacement that adds a few things the original never had.
What's new in dsk++
Fully async — built on curl_cffi async sessions, async for streaming, asyncio.to_thread() for WASM PoW
Concurrent file uploads — asyncio.gather() uploads multiple files simultaneously
Session deletion — await api.delete_chat_session(session_id)
Conversation history — await api.get_history(session_id)
Proper error hierarchy — AuthenticationError , RateLimitError , NetworkError , CloudflareError , UploadFilesUnavailable , APIError
Automatic Cloudflare detection and cookie refresh
Docker support via…