Prerequisites
Before using the DeepSeek API, you need:
- A DeepSeek account (visit dev.deepseek.com)
- An API Key
- Understanding of your API quota
Getting Your API Key
- Log in to platform.deepseek.com
- Go to the "API Keys" page
- Click "Create API Key" to create a new key
- Securely save the generated key (it will only be shown once!)
Security Reminder
Never expose your API key in frontend code. Use a backend service proxy or manage it through environment variables.
Quick Start
Python SDK Method
pip install openai
from openai import OpenAI
client = OpenAI(
api_key="your-deepseek-api-key",
base_url="https://api.deepseek.com"
)
response = client.chat.completions.create(
model="deepseek-v4-flash",
messages=[
{"role": "user", "content": "Hello, tell me about yourself"}
]
)
print(response.choices[0].message.content)
cURL Method
curl https://api.deepseek.com/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your-api-key" \
-d '{
"model": "deepseek-v4-flash",
"messages": [
{"role": "user", "content": "Hello"}
]
}'
Model Selection
DeepSeek V4 provides two versions:
| Model | Characteristics | Best For |
|---|---|---|
| deepseek-v4-flash | Fast, low cost | Daily Q&A, simple tasks |
| deepseek-v4-pro | Powerful, deep reasoning | Complex analysis, code generation |
Thinking Mode Configuration
DeepSeek V4 supports thinking mode, controlled via the reasoning_effort parameter:
response = client.chat.completions.create(
model="deepseek-v4-pro",
messages=[{"role": "user", "content": "Explain quantum computing principles"}],
extra_body={
"reasoning_effort": "high" # low/medium/high
}
)
Streaming Output
from openai import OpenAI
client = OpenAI(
api_key="your-api-key",
base_url="https://api.deepseek.com"
)
stream = client.chat.completions.create(
model="deepseek-v4-flash",
messages=[{"role": "user", "content": "Write a poem"}],
stream=True
)
for chunk in stream:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)
System Prompts
response = client.chat.completions.create(
model="deepseek-v4-flash",
messages=[
{"role": "system", "content": "You are a professional Chinese writing assistant with an elegant style."},
{"role": "user", "content": "Help me write a business email"}
]
)
Quotas and Limits
- Free Tier: New users receive some free tokens
- Rate Limits: Different QPS limits based on account tier
- Context Limit: Maximum 1M tokens
- Model Switching: Dynamically specify models in requests
Common Error Handling
Error 1: AuthenticationError
# Check if API key is correct
# Ensure no extra spaces
api_key = "your-key-here" # Don't add "Bearer " prefix
Error 2: RateLimitError
import time
import ratelimit
@ratelimit.sleep_and_retry
@ratelimit.limits(calls=10, period=1)
def call_api():
# Your API call
pass
Error 3: BadRequestError
Common causes:
- Input exceeds max token limit
- Incorrect messages format
- Unsupported parameter values
Best Practices
1. Always add error handling logic
2. Implement retry mechanisms for temporary failures
3. Monitor API usage to avoid overages
4. Use environment variables for sensitive information
Advanced Tips
1. Multi-turn Conversation
messages = [
{"role": "system", "content": "You are a stock analysis assistant"},
{"role": "user", "content": "Analyze Moutai stock for me"},
{"role": "assistant", "content": "Based on the latest financial report..."},
{"role": "user", "content": "What about Wuliangye?"} # Model remembers context
]
2. Function Calling
response = client.chat.completions.create(
model="deepseek-v4-pro",
messages=[{"role": "user", "content": "What's the weather in Beijing today?"}],
tools=[{
"type": "function",
"function": {
"name": "get_weather",
"parameters": {
"type": "object",
"properties": {
"location": {"type": "string"}
},
"required": ["location"]
}
}
}]
)
Conclusion
DeepSeek API is becoming an increasingly popular choice among developers thanks to its excellent performance, affordable pricing, and OpenAI-compatible interface design. With the content in this article, you now have the ability to use DeepSeek API proficiently.
We recommend practicing more and exploring more advanced usage with real projects.