简介:本文通过图文结合的方式,详细讲解如何调用DeepSeek-R1 API,涵盖环境准备、认证配置、API调用及错误处理全流程,适合开发者及企业用户快速上手。
调用DeepSeek-R1 API需满足以下条件:
API Key和Secret Key(图1)。DeepSeek-R1采用HMAC-SHA256签名算法,流程如下:
POST /v1/chat/completions HTTP/1.1Host: api.deepseek.comDate: Wed, 21 Oct 2023 07:28:00 GMTContent-Type: application/jsonx-api-key: YOUR_API_KEY
Secret Key对原字符串进行HMAC-SHA256加密,生成Base64编码的签名。
import requestsimport hmacimport hashlibimport base64from datetime import datetimeimport time# 配置参数API_KEY = "your_api_key"SECRET_KEY = "your_secret_key"ENDPOINT = "https://api.deepseek.com/v1/chat/completions"def generate_signature(method, path, body, timestamp):canonical_request = f"{method} {path} HTTP/1.1\n"canonical_request += f"Host: api.deepseek.com\n"canonical_request += f"Date: {timestamp}\n"canonical_request += "Content-Type: application/json\n"canonical_request += f"x-api-key: {API_KEY}\n\n"canonical_request += bodyhmac_code = hmac.new(SECRET_KEY.encode('utf-8'),canonical_request.encode('utf-8'),hashlib.sha256).digest()return base64.b64encode(hmac_code).decode('utf-8')# 构造请求timestamp = datetime.utcnow().strftime('%a, %d %b %Y %H:%M:%S GMT')payload = {"model": "deepseek-r1","messages": [{"role": "user", "content": "解释量子计算原理"}],"temperature": 0.7}# 生成签名signature = generate_signature("POST","/v1/chat/completions",str(payload),timestamp)# 发送请求headers = {"Date": timestamp,"Authorization": f"HMAC-SHA256 Signature={signature}","x-api-key": API_KEY,"Content-Type": "application/json"}response = requests.post(ENDPOINT,json=payload,headers=headers)print(response.json())
| 参数 | 类型 | 说明 |
|---|---|---|
model |
string | 固定值deepseek-r1 |
messages |
array | 对话历史,格式为[{"role": "user/assistant", "content": "文本"}] |
temperature |
float | 0-1控制随机性,值越高回答越创意 |
启用流式传输可实时获取生成内容:
headers["Accept"] = "text/event-stream"response = requests.post(ENDPOINT, json=payload, headers=headers, stream=True)for chunk in response.iter_lines():if chunk:print(chunk.decode('utf-8'))
| 状态码 | 原因 | 解决方案 |
|---|---|---|
| 401 | 认证失败 | 检查API Key和签名算法 |
| 429 | 频率限制 | 实现指数退避重试 |
| 500 | 服务端错误 | 记录日志并联系技术支持 |
Secret KeyQ1:调用返回403错误怎么办?
A:检查签名计算是否正确,特别注意:
x-api-key头与签名使用的Key匹配Q2:如何监控API使用量?
A:在开发者控制台「用量统计」页面可查看:
通过本文的详细讲解,开发者可快速掌握DeepSeek-R1 API的调用方法。实际开发中建议先使用Postman进行接口测试,再集成到代码中。如遇技术问题,可通过开发者社区或官方文档获取支持。