DeepSeek API Key 获取、配置与安全实践 - BigModel
Home >博客

DeepSeek API Key 获取、配置与安全实践

Published Updated

DeepSeek API 的调用入口就一个:API Key。Key 一泄露,等于把账户里的余额直接送给别人刷。这篇文章不绕弯子,讲清楚从哪拿 Key、怎么放进环境变量、怎么在代码里安全读取,再补上限额、轮换和权限控制这几件容易踩坑的事。

第一步:拿到你的 DeepSeek API Key

Key 在平台后台生成,不在代码里,也不在文档里。登录 platform.deepseek.com,进左侧「API keys」页面,点「创建 API key」,起个名字方便以后分辨(比如 proj-main),创建后只会完整显示这一次,页面不保存明文。

# 创建完成后立刻复制,格式类似:
# sk-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
# 关掉页面就再也看不到明文,只能重新生成

顺手在同一个页面看一眼账户余额。DeepSeek 按量计费,余额不足时请求会直接报错,所以 Key 拿到后第一件事不是写代码,是确认余额够用。价格表在官方定价页(api-docs.deepseek.com/zh-cn/pricing),按 token 计费,不同模型单价不一样。

把 Key 写进环境变量,别写进代码

最稳的做法是环境变量。写进代码里的 Key 迟早会跟着代码一起被推到 GitHub,这不是「可能」发生,是几乎必然发生。下面分 macOS/Linux 和 Windows 两种写法。

# macOS / Linux:临时生效(当前终端)
export DEEPSEEK_API_KEY="sk-你的key"

# 永久生效:写进 shell 配置
echo 'export DEEPSEEK_API_KEY="sk-你的key"' >> ~/.zshrc
source ~/.zshrc

# Windows PowerShell:当前会话
$env:DEEPSEEK_API_KEY = "sk-你的key"

项目里更常见的做法是 .env 文件。文件只放本机,不提交 Git。

# .env(项目根目录)
DEEPSEEK_API_KEY=sk-你的key

# 确保 .gitignore 里有这一行,防止误提交
echo ".env" >> .gitignore

在代码里读取 Key

Python 里用 os.environ 读,配 python-dotenv 能自动加载 .env。别在文件顶部硬编码字符串,那不是配置,是事故。

import os
from dotenv import load_dotenv

load_dotenv()  # 读取项目根目录的 .env
api_key = os.getenv("DEEPSEEK_API_KEY")
if not api_key:
    raise SystemExit("DEEPSEEK_API_KEY 未设置")

from openai import OpenAI
client = OpenAI(api_key=api_key, base_url="https://api.deepseek.com")
resp = client.chat.completions.create(
    model="deepseek-chat",
    messages=[{"role": "user", "content": "你好"}],
)
print(resp.choices[0].message.content)

Node.js 这边同理,process.env.DEEPSEEK_API_KEY 读,dotenv 包负责加载 .env。

import "dotenv/config";
import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.DEEPSEEK_API_KEY,
  baseURL: "https://api.deepseek.com",
});
const resp = await client.chat.completions.create({
  model: "deepseek-chat",
  messages: [{ role: "user", content: "你好" }],
});
console.log(resp.choices[0].message.content);

用 curl 快速验证 Key 是否能用

写代码之前先用 curl 打一发,Key 有没有问题三秒钟见分晓。返回 200 且有 content 就正常;401 说明 Key 错了或失效;402 是余额不足;429 是触发限流。

curl -s https://api.deepseek.com/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $DEEPSEEK_API_KEY" \
  -d '{"model":"deepseek-chat","messages":[{"role":"user","content":"ping"}],"stream":false}'

限额:不是所有报错都是 Key 的问题

429 和 402 是两码事。429 是请求太密触发了速率限制(rate limit),不是 Key 坏了;402 是余额不足,得充值。这两个错误在代码里最好分开处理:429 退避重试,402 直接停并告警。

import time

def chat_once(client, messages):
    try:
        return client.chat.completions.create(
            model="deepseek-chat", messages=messages
        )
    except Exception as e:
        # 429:等几秒重试;401/402:直接抛出,不重试
        if "429" in str(e):
            time.sleep(3)
            return chat_once(client, messages)
        raise

具体的限流数值(每分钟多少次、并发多少)以官方文档为准,不同套餐不一样,别拿别人的数字当自己的。

Key 轮换:泄露了怎么办

发现 Key 泄露,第一反应不是改密码,是去 platform.deepseek.com 的 API keys 页面把旧 Key 删掉、重新生成一个。旧 Key 立即失效,新 Key 马上替换到环境变量。别指望「过两天再处理」,泄露的 Key 每分钟都在烧钱。

# 轮换流程一句话总结
# 1. 平台后台删除旧 Key
# 2. 创建新 Key
# 3. 更新 .env / 服务器环境变量
# 4. 重启使用该 Key 的服务
# 5. 检查最近调用记录,确认没有异常消耗

定期轮换也建议做,比如每 90 天换一次。多环境(开发/生产)用不同的 Key,方便定位是哪个环境出的问题。

DeepSeek API Key 从创建、环境变量配置到轮换的安全管理流程示意

权限与安全控制

几件小事,做了能省很多麻烦:

  • Key 只给需要的服务,别一个 Key 到处传。
  • 代码仓库里搜一下有没有硬编码的 Key:grep -r "sk-" .,有就立刻清。
  • Git 历史里已经提交过的 Key,删文件不够,得用 filter 或工具清历史,或者干脆轮换 Key。
  • 服务器上的 .env 权限收紧:chmod 600 .env。
# 快速排查仓库里是否泄露
grep -rn "sk-[A-Za-z0-9]\{20,\}" . --include="*.py" --include="*.js" --include="*.env*"
# 收紧文件权限
chmod 600 .env

常见问题

Key 失效了,为什么代码没报错?
看返回码。401 才是 Key 问题;如果请求成功但结果不对,排查的是参数不是 Key。

环境变量改了,代码还是用旧 Key?
改了 .env 或 export 后要重启进程,进程启动时读的环境变量不会自己刷新。

一个 Key 能用于多个项目吗?
能,但不建议。分项目用独立 Key,出了事能快速定位、单独轮换,不牵连别的项目。

API Key 和 API Secret 有什么区别?
DeepSeek 目前只用 API Key 做 Bearer 鉴权,没有单独的 Secret 概念。第三方框架里偶尔提到 Secret,多半是其他平台的用法。

FAQ

Key 失效了,为什么代码没报错?
看返回码。401 才是 Key 问题;如果请求成功但结果不对,排查的是参数不是 Key。
环境变量改了,代码还是用旧 Key?
改了 .env 或 export 后要重启进程,进程启动时读的环境变量不会自己刷新。
一个 Key 能用于多个项目吗?
能,但不建议。分项目用独立 Key,出了事能快速定位、单独轮换,不牵连别的项目。
API Key 和 API Secret 有什么区别?
DeepSeek 目前只用 API Key 做 Bearer 鉴权,没有单独的 Secret 概念。第三方框架里偶尔提到 Secret,多半是其他平台的用法。

目录

信息

  • 点击2
  • 发布日期2026/10/16
0/500
友善分享您的看法。

更多帖子

探索本节更多文章