必须正确配置DeepSeek API Key才能调用本地模型服务,否则返回401错误;需先验证服务健康状态,再通过密钥管理API或脚本生成Key,最后在Python请求头中以"Bearer YOUR_API_KEY"格式注入,并安全存储避免硬编码。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

将DeepSeek API Key配置到本地Python客户端,是调用本地部署模型服务的前提。没有正确配置,requests会返回401 Unauthorized错误,所有推理请求都会被API网关直接拒绝。
确认本地服务已正常运行
先验证DeepSeek服务是否已在本地启动并监听指定端口。执行命令:curl -X GET http://localhost:8080/health。若返回{"status":"healthy"},说明服务就绪;若提示连接被拒绝,需先运行docker ps检查deepseek-server容器是否处于Up状态。
默认端口为8080,若启动时指定了其他端口(如-p 9000:8080),后续所有请求必须将localhost:8080替换为localhost:9000,否则认证永远失败。
获取合法API Key
本地部署不支持官网注册获取Key,必须通过密钥服务生成:
统一LLM网关 - 一个API对接70+AI模型,使用单一API密钥即可调用GPT、Claude、Gemini、Qwen、Deepseek、Grok等主流模型。
方法一:调用密钥管理API(推荐)
① 使用管理员凭据发起POST请求:
curl -X POST http://localhost:5000/api/keys \<br>
-H "Content-Type: application/json" \<br>
-u "admin:your-admin-password" \<br>
-d '{"description": "dev-py-client", "permissions": ["read"]}'② 响应体中
api_key字段值即为可用密钥,形如sk-xxxxx...。【该密钥含JWT签名,有效期默认72小时,过期后需重新生成】
方法二:使用Python脚本生成(需已部署key-generator服务)
直接运行官方提供的生成脚本,传入client_id与client_secret,输出结果即为有效Key。注意:client_secret必须与密钥服务启动时的KEY_SECRET环境变量完全一致,否则签名验证失败。
在Python代码中配置Key
将API Key注入HTTP请求头,这是唯一被服务端识别的认证方式:
第一步:定义请求头字典
headers = {<br>
"Authorization": f"Bearer YOUR_API_KEY_HERE",<br>
"Content-Type": "application/json"<br>}
第二步:构造请求体并发送
payload = {<br>
"model": "deepseek-r1",<br>
"messages": [{"role": "user", "content": "你好"}]<br>}
response = requests.post("http://localhost:8080/v1/chat/completions", <br>
headers=headers, json=payload)
注意:Bearer后必须有一个空格,【缺少空格会导致401错误且无明确提示】。不要写成"BearerYOUR_API_KEY"或"Bearer: YOUR_API_KEY"。
安全存储Key避免硬编码
开发阶段可临时写死,但提交代码前必须移除:
方法一:从环境变量读取
在终端执行export DEEPSEEK_API_KEY="sk-abc123...",Python中用os.getenv("DEEPSEEK_API_KEY")获取。Windows用户改用set DEEPSEEK_API_KEY=...。
方法二:使用配置文件(.env)
创建.env文件,内容为DEEPSEEK_API_KEY=sk-abc123...,配合python-dotenv库自动加载。确保.gitignore已包含.env,防止密钥泄露。
方法三:读取加密密钥文件
若企业要求密钥必须AES加密存储,需先用Fernet解密api_keys.enc,再提取明文Key。解密密钥(FERNET_KEY)须通过KMS或HSM注入,不可写入代码。


















