A Python package for interacting with the DeepSeek AI chat API. This package provides a clean interface to interact with DeepSeek's chat model, with support for streaming responses, thinking process visibility, and web search capabilities.
- and reverse wasm like it was required here
- whop.com/reverser-academy (beta)
β οΈ Service Notice: DeepSeek API is currently experiencing high load. Work is in progress to integrate additional API providers. Please expect intermittent errors.
π Note: If you encounter any errors, please ensure you are using the latest version of this library. The DeepSeek API may change frequently, and updates are released to maintain compatibility.
- π Streaming Responses: Real-time interaction with token-by-token output
- π€ Thinking Process: Optional visibility into the model's reasoning steps
- π Web Search: Optional integration for up-to-date information
- π¬ Session Management: Persistent chat sessions with conversation history
- β‘ Efficient PoW: WebAssembly-based proof of work implementation
- π‘οΈ Error Handling: Comprehensive error handling with specific exceptions
- β±οΈ No Timeouts: Designed for long-running conversations without timeouts
- π§΅ Thread Support: Parent message tracking for threaded conversations
- Clone the repository:
git clone https://github.com/yourusername/deepseek4free.git cd deepseek4free- Install dependencies:
pip install -r requirements.txtTo use this package, you need a DeepSeek auth token. Here's how to obtain it:
If you know how to use chrome devtools, simply run this snipped in the console:
JSON.parse(localStorage.getItem("userToken")).value
- Visit chat.deepseek.com
- Log in to your account
- Open browser developer tools (F12 or right-click > Inspect)
- Go to Application tab (if not visible, click >> to see more tabs)
- In the left sidebar, expand "Local Storage"
- Click on "https://chat.deepseek.com"
- Find the key named
userToken - Copy
"value"- this is your authentication token
Alternatively, you can get the token from network requests:
- Visit chat.deepseek.com
- Log in to your account
- Open browser developer tools (F12)
- Go to Network tab
- Make any request in the chat
- Find the request headers
- Copy the
authorizationtoken (without 'Bearer ' prefix)
If you encounter Cloudflare challenges ("Just a moment..." page), you'll need to get a cf_clearance cookie. Run this command:
python -m dsk.bypassThis will:
- Open an undetected browser
- Visit DeepSeek and solve the Cloudflare challenge
- Capture and save the
cf_clearancecookie - The cookie will be automatically used in future requests
You only need to run this when:
- You get Cloudflare challenges in your requests
- Your existing cf_clearance cookie expires
- You see the error "Please wait a few minutes before trying again"
The captured cookie will be stored in dsk/cookies.json and automatically used by the API.
from dsk.api import DeepSeekAPI # Initialize with your auth token api = DeepSeekAPI("YOUR_AUTH_TOKEN") # Create a new chat session chat_id = api.create_chat_session() # Simple chat completion prompt = "What is Python?" for chunk in api.chat_completion(chat_id, prompt): if chunk['type'] == 'text': print(chunk['content'], end='', flush=True)The thinking process shows the model's reasoning steps:
# With thinking process enabled for chunk in api.chat_completion( chat_id, "Explain quantum computing", thinking_enabled=True ): if chunk['type'] == 'thinking': print(f"π€ Thinking: {chunk['content']}") elif chunk['type'] == 'text': print(chunk['content'], end='', flush=True)Enable web search for up-to-date information:
# With web search enabled for chunk in api.chat_completion( chat_id, "What are the latest developments in AI?", thinking_enabled=True, search_enabled=True ): if chunk['type'] == 'thinking': print(f"π Searching: {chunk['content']}") elif chunk['type'] == 'text': print(chunk['content'], end='', flush=True)Create threaded conversations by tracking parent messages:
# Start a conversation chat_id = api.create_chat_session() # Send initial message parent_id = None for chunk in api.chat_completion(chat_id, "Tell me about neural networks"): if chunk['type'] == 'text': print(chunk['content'], end='', flush=True) elif 'message_id' in chunk: parent_id = chunk['message_id'] # Send follow-up question in the thread for chunk in api.chat_completion( chat_id, "How do they compare to other ML models?", parent_message_id=parent_id ): if chunk['type'] == 'text': print(chunk['content'], end='', flush=True)The package provides specific exceptions for different error scenarios:
from dsk.api import ( DeepSeekAPI, AuthenticationError, RateLimitError, NetworkError, CloudflareError, APIError ) try: api = DeepSeekAPI("YOUR_AUTH_TOKEN") chat_id = api.create_chat_session() for chunk in api.chat_completion(chat_id, "Your prompt here"): if chunk['type'] == 'text': print(chunk['content'], end='', flush=True) except AuthenticationError: print("Authentication failed. Please check your token.") except RateLimitError: print("Rate limit exceeded. Please wait before making more requests.") except CloudflareError as e: print(f"Cloudflare protection encountered: {str(e)}") except NetworkError: print("Network error occurred. Check your internet connection.") except APIError as e: print(f"API error occurred: {str(e)}")