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

你注册了一个 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 日核查)。几乎在所有地方,大致流程都是一样的:
- 创建账户。
- 在控制台中打开 API 密钥页面。
- 按下创建新密钥的按钮,并给它起个名字,例如
my-first-script。 - 立即复制密钥。许多服务只显示一次。
使用 CheapTokens 时,从账户到密钥的步骤见 Your first API request with CheapTokens。CheapTokens 使用预付费美元余额:一个余额适用于所有模型。如果请求因余额为空而失败,请参阅 "Not enough tokens" error。
密钥绝不能出现的地方#
大多数泄露不是黑客攻击,而是复制粘贴错误:
- 密钥直接写在代码中(
api_key="sk-..."),然后被推送到 GitHub; - 密钥出现在截图、聊天消息或论坛提问中;
- 密钥出现在前端代码中(网页或移动应用):任何人都可以打开并读取它;
- 一个被提交到 git 的
.env文件。
最后一种最常见。即使你在下一次提交中删除了该文件,密钥仍留在 git 历史中,因此任何曾被提交过的密钥都必须视为已泄露。
将密钥存储在环境变量中#
环境变量是存在于你的系统中、而非代码中的命名值。程序在启动时读取它,因此代码可以安全地共享,而密钥留在你的机器上。
在 Linux 或 macOS 中,为当前终端设置:
export CHEAPTOKENS_API_KEY="YOUR_API_KEY"在 Windows PowerShell 中:
$env:CHEAPTOKENS_API_KEY = "YOUR_API_KEY"这只在关闭终端前有效。要在会话之间保留,请将该行放入你的 shell 配置文件,或者为项目使用 .env 文件,并在首次提交前将其加入 .gitignore:
# .gitignore
.env然后在代码中读取密钥。绝不要在代码中直接输入它:
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/ 的完整测试:
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 会替换变量,密钥不会出现在命令中:
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,让应用与该服务器通信。
如果密钥泄露了该怎么办#
如果你将密钥推送到公共仓库、在消息中发送了它,或者只是不确定,请把它当作已经在别人手中:
- 首先撤销密钥。 打开你创建它的页面并删除或禁用它。在做任何其他事情之前先做这件事;清理工作放在后面。
- 创建一个新密钥,使用新名称。
- 在所有使用过它的地方替换它:环境变量、
.env文件、服务器、应用和工具。 - 检查你的余额和使用情况。 不是你发起的请求表明旧密钥被使用了。
- 清理源代码。 从代码中移除密钥,并将
.env添加到.gitignore。删除文件不会从 git 历史中移除密钥,这就是为什么第 1 步比重写历史更重要。
顺序很重要。已撤销的密钥即使留在旧提交中也是无害的。
后续步骤#
- 使用密钥发起你的第一个请求:Your first API request with CheapTokens。
- 了解你为何付费:What is a token in AI?。
- 余额用完时充值:"Not enough tokens" error。
准备好尝试了吗?获取一个 CheapTokens 密钥,将其设置为 CHEAPTOKENS_,然后运行上面的示例。
每个模型的端点、模型 id 和限制都在 CheapTokens docs 中。



