使用Python快速接入DeepSeek API的步骤指南
1. 前期准备
-
注册DeepSeek账号
-
访问DeepSeek官网注册账号
-
完成邮箱验证等认证流程
-
-
获取API密钥
-
登录后进入控制台 → API管理
-
创建新的API Key并妥善保存
-
-
安装必要库
pip install requests # 可选:处理复杂场景 pip install python-dotenv # 管理环境变量
2. 快速接入示例代码
import requestsdef deepseek_chat(prompt):api_key = "your_api_key_here" # 替换真实API密钥endpoint = "https://api.deepseek.com/v1/chat/completions" # 确认最新端点headers = {"Authorization": f"Bearer {api_key}","Content-Type": "application/json"}payload = {"model": "deepseek-chat", # 根据文档选择模型"messages": [{"role": "user", "content": prompt}],"temperature": 0.7}try:response = requests.post(endpoint, json=payload, headers=headers)response.raise_for_status() # 自动处理HTTP错误return response.json()['choices'][0]['message']['content']except requests.exceptions.RequestException as e:print(f"请求失败: {e}")return None# 使用示例
if __name__ == "__main__":result = deepseek_chat("如何做番茄炒蛋?")print("API返回结果:", result)
3. 进阶实践建议
-
环境变量管理
创建.env
文件:DEEPSEEK_API_KEY=your_actual_key
修改代码:
from dotenv import load_dotenv import osload_dotenv() api_key = os.getenv("DEEPSEEK_API_KEY")
-
流式响应处理
def stream_response(prompt):payload.update({"stream": True})with requests.post(endpoint, json=payload, headers=headers, stream=True) as res:for chunk in res.iter_lines():if chunk:print(chunk.decode()) # 实际需解析JSON
-
错误处理增强
except requests.HTTPError as http_err:status_code = http_err.response.status_codeif status_code == 429:print("请求过于频繁,请稍后重试")elif status_code == 401:print("API密钥无效,请检查验证信息")else:print(f"HTTP错误 {status_code}: {http_err}")
4. 关键注意事项
-
速率限制
-
免费套餐通常限制5-10次/分钟
-
重要操作建议添加重试逻辑:
from time import sleepretries = 3 for _ in range(retries):try:# 执行请求breakexcept requests.exceptions.HTTPError as e:if e.response.status_code == 429:sleep(2 ** _) # 指数退避else:raise
-
-
计费方式
-
通常按token计费(输入+输出)
-
可在请求中添加:
payload["max_tokens"] = 500 # 控制最大输出长度
-
-
文档参考
-
务必查阅官方最新文档:
-
模型列表更新
-
参数说明(temperature, top_p等)
-
特殊功能(函数调用、JSON模式等)
-
推荐实践路线:
-
先用简单示例验证接口连通性
-
添加基础错误处理
-
根据需求逐步增加:
-
对话历史管理
-
流式输出处理
-
复杂参数调优
-
-
生产环境建议使用官方SDK(如果有)
遇到问题排查顺序:
-
API密钥是否正确且未过期
-
网络连接是否正常(特别是国内访问)
-
请求格式是否符合文档要求
-
查看返回的错误信息
-
联系官方技术支持(如文档中提供)