返回博客

AI 入门指南

什么是 API 密钥以及如何安全存储

什么是 AI API 密钥、从哪里获取、为什么它必须远离你的代码和 git、如何发起第一次调用,以及密钥泄露时该怎么办。

作者:CheapTokens Team发布于 更新于 4 分钟阅读

封面:API 密钥作为 AI 账户的密码,保存在环境变量中
本页内容
  1. 什么是 API 密钥
  2. 从哪里获取密钥
  3. 密钥绝不能出现的地方
  4. 将密钥存储在环境变量中
  5. 发起第一次调用
  6. 保持密钥安全的习惯
  7. 如果密钥泄露了该怎么办
  8. 后续步骤

你注册了一个 AI API,它首先要求你提供的就是一个密钥。本指南将解释什么是 API 密钥、它从何而来、如何保证它的安全,以及如果它出现在不该出现的地方该怎么办。

什么是 API 密钥#

API 密钥是一长串字母和数字,用于告诉服务是谁在发送请求。可以把它看作程序的密码:你的脚本在每次请求时都会发送这个密钥,服务用它来找到你的账户,并从你的余额中扣除请求的费用。

由此可以得出两点:

  • 谁拥有密钥,谁就能花你的余额。 服务无法区分你和复制了你密钥的人。
  • 密钥不是模型,也不是余额。 它只是通行证。余额是你单独充值的另一回事,同一个密钥可用于你账户能使用的任何模型。

请求的费用按 token 计算。如果你还不了解 token,请先阅读 What is a token in AI?。

从哪里获取密钥#

每个 AI 服务都从自己的控制台签发密钥。例如,DeepSeek 的官方 API 在 platform.deepseek.com/api_keys 有一个 API 密钥页面,其文档从 DEEPSEEK_API_KEY 环境变量读取密钥(2026 年 10 月 21 日核查)。几乎在所有地方,大致流程都是一样的:

  1. 创建账户。
  2. 在控制台中打开 API 密钥页面。
  3. 按下创建新密钥的按钮,并给它起个名字,例如 my-first-script。
  4. 立即复制密钥。许多服务只显示一次。

使用 CheapTokens 时,从账户到密钥的步骤见 Your first API request with CheapTokens。CheapTokens 使用预付费美元余额:一个余额适用于所有模型。如果请求因余额为空而失败,请参阅 "Not enough tokens" error。

密钥绝不能出现的地方#

大多数泄露不是黑客攻击,而是复制粘贴错误:

  • 密钥直接写在代码中(api_key="sk-..."),然后被推送到 GitHub;
  • 密钥出现在截图、聊天消息或论坛提问中;
  • 密钥出现在前端代码中(网页或移动应用):任何人都可以打开并读取它;
  • 一个被提交到 git 的 .env 文件。

最后一种最常见。即使你在下一次提交中删除了该文件,密钥仍留在 git 历史中,因此任何曾被提交过的密钥都必须视为已泄露。

将密钥存储在环境变量中#

环境变量是存在于你的系统中、而非代码中的命名值。程序在启动时读取它,因此代码可以安全地共享,而密钥留在你的机器上。

在 Linux 或 macOS 中,为当前终端设置:

bash
export CHEAPTOKENS_API_KEY="YOUR_API_KEY"

在 Windows PowerShell 中:

powershell
$env:CHEAPTOKENS_API_KEY = "YOUR_API_KEY"

这只在关闭终端前有效。要在会话之间保留,请将该行放入你的 shell 配置文件,或者为项目使用 .env 文件,并在首次提交前将其加入 .gitignore:

text
# .gitignore
.env

然后在代码中读取密钥。绝不要在代码中直接输入它:

python
import os
from openai import OpenAI

client = OpenAI(
    base_url="https://api.cheaptokens.dev/v1",
    api_key=os.environ["CHEAPTOKENS_API_KEY"],  # read from the environment, not written in the code
)

如果变量缺失,os.environ[...] 会立即报错并停止程序,这比用空密钥发送请求要好。

发起第一次调用#

CheapTokens 支持 OpenAI Chat Completions 和 Anthropic Messages 格式,因此标准 SDK 可以直接使用:你只需更改基础 URL 和密钥。以下是使用 MiniMaxAI/MiniMax-M2.7 的完整测试:

python
import os
from openai import OpenAI

client = OpenAI(
    base_url="https://api.cheaptokens.dev/v1",
    api_key=os.environ["CHEAPTOKENS_API_KEY"],
)

response = client.chat.completions.create(
    model="MiniMaxAI/MiniMax-M2.7",
    messages=[{"role": "user", "content": "Explain what an API key is in two sentences."}],
    max_tokens=200,
)

print(response.choices[0].message.content)

使用 curl 的相同操作,其中 shell 会替换变量,密钥不会出现在命令中:

bash
curl https://api.cheaptokens.dev/v1/chat/completions \
  -H "Authorization: Bearer $CHEAPTOKENS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "MiniMaxAI/MiniMax-M2.7", "messages": [{"role": "user", "content": "Hello"}], "max_tokens": 100}'

像这样的简短测试很便宜。例如,一个包含 1,000 个输入 token 和 500 个输出 token 的请求,按当前价格花费 $0.00013。MiniMax-M2.7 还具有 180K 上下文,并给出最多 8,192 个 token 的回答,因此它是首次实验的舒适模型。如果回答在句子中间停止,请参阅 Why does an AI answer stop mid-sentence?。

请从 CheapTokens 文档复制模型 id,而不是从其他服务复制:不同提供商的模型名称不同。

保持密钥安全的习惯#

  • 每个项目一个密钥。 如果一个泄露,你只需替换那一个,其他一切都不受影响。
  • 给密钥起名,说明它们用在哪里(laptop-script、telegram-bot),这样你就知道替换后需要更新什么。
  • 在学习期间保持余额较小。 使用预付费余额时,泄露密钥造成的损失受余额限制,但那仍然是你的钱。
  • 不要将密钥粘贴到聊天中(与人或 AI 助手),并从日志和截图中删除它们。
  • 不要将密钥放入浏览器或移动应用。 从你控制的服务器调用 API,让应用与该服务器通信。

如果密钥泄露了该怎么办#

如果你将密钥推送到公共仓库、在消息中发送了它,或者只是不确定,请把它当作已经在别人手中:

  1. 首先撤销密钥。 打开你创建它的页面并删除或禁用它。在做任何其他事情之前先做这件事;清理工作放在后面。
  2. 创建一个新密钥,使用新名称。
  3. 在所有使用过它的地方替换它:环境变量、.env 文件、服务器、应用和工具。
  4. 检查你的余额和使用情况。 不是你发起的请求表明旧密钥被使用了。
  5. 清理源代码。 从代码中移除密钥,并将 .env 添加到 .gitignore。删除文件不会从 git 历史中移除密钥,这就是为什么第 1 步比重写历史更重要。

顺序很重要。已撤销的密钥即使留在旧提交中也是无害的。

后续步骤#

准备好尝试了吗?获取一个 CheapTokens 密钥,将其设置为 CHEAPTOKENS_API_KEY,然后运行上面的示例。

每个模型的端点、模型 id 和限制都在 CheapTokens docs 中。