快速开始指南
从 Google Colab 发出第一个请求:将 API 密钥保存在 Secrets 中
在 Colab 笔记本中发送你的第一个聊天补全请求,密钥存储在 Colab Secrets 中,然后读取回答和 token 用量。

你可以在 Colab 笔记本中运行第一个请求,无需在电脑上安装任何东西。将密钥保存在 Colab Secrets 中,用 userdata. 读取它,将 openai 包指向 https:/,并打印 choices[0]. 和 usage。密钥永远不会出现在单元格中,因此分享笔记本不会分享你的密钥。
最后这一点正是值得费心的原因。假设你完成了笔记本并把链接发给同学。如果密钥被粘贴到单元格中,他们现在就拥有了它。如果它保存在 Secrets 中,他们只会得到代码,别的什么都没有。
本指南建立在使用普通 requests 的第一个请求之上。这里唯一的新内容是密钥存放的位置以及笔记本如何读取它。关于在笔记本电脑上实现同样思路,请参阅将密钥存储在环境变量中。
你需要什么#
- 一个 Google 账号,以及在 colab.research.google.com 上新建的笔记本。
- 一个 CheapTokens API 密钥和已充值的余额。密钥和余额在你的账户中;文档展示了具体步骤。
- 五分钟。
The API 兼容 OpenAI Chat Completions,因此标准的 openai Python 包只需换一个 base_url 即可使用。openai-python README(2026 年 11 月 5 日查阅)列出 Python 3.10 或更高版本以及 pip install openai。
将密钥放入 Colab Secrets#
在笔记本的左侧边栏中有一个钥匙图标,点击它会打开 Secrets 面板。添加一个新 secret,将其命名为 CHEAPTOKENS_KEY,将你的密钥粘贴为值,并为你正在使用的笔记本开启笔记本访问权限。按钮的措辞可能会变化,因此请寻找钥匙图标,而不是菜单路径。
现在就选好你想要的名称:它就是你要传给代码的字符串。名称写错是很容易犯的错误,错误部分展示了它的表现。

运行第一个请求#
Colab 使用 google. 读取 secrets,这是 Google colabtools 模块中的一个函数(文档字符串于 2026 年 11 月 5 日查阅)。安装 SDK,读取 secret,发送一个请求。
分步操作
三个单元格中的第一个请求
安装包
在第一个单元格中运行此代码。-q 标志会保持输出简短,并且无论该包是否已在运行时中都能工作。
!pip install -q openai读取密钥并创建客户端
密钥来自 Secrets。这里没有粘贴任何内容。
from google.colab import userdata
from openai import OpenAI
client = OpenAI(
api_key=userdata.get('CHEAPTOKENS_KEY'),
base_url='https://api.cheaptokens.dev/v1',
)发送一个请求并打印结果
使用带开发者前缀的完整模型 id。不接受短 id。
resp = client.chat.completions.create(
model='deepseek-ai/DeepSeek-V4-Flash-0731',
messages=[{'role': 'user', 'content': 'Explain a token in one sentence.'}],
max_tokens=200,
)
print(resp.choices[0].message.content)
print(resp.usage.prompt_tokens, resp.usage.completion_tokens)第一个 print 显示模型的回答。第二个打印两个数字:你发送的 token 数和模型写入的 token 数。这就是该请求的全部账单,因此我们每次都打印它。
请求的费用#
Token 是你付费的对象,所以请看输出的第二行。假设像上面这样的简短问题大约使用 40 个输入 token,回答是 150 个输出 token。按当前价格,该请求花费 $0.000016,一千个这样的请求花费 $0.0156。将 40 和 150 替换为你的笔记本打印出的两个数字。
DeepSeek-V4-Flash 在这里是默认模型是有原因的:380K 上下文,每次回答最多 32,768 个输出 token,并且全天统一价格,没有高峰时段。一个余额覆盖所有模型,因此你可以在此单元格中更换模型而无需更改其他任何内容。试试 zai-(390K 上下文,最多 8,192 个输出 token)并再次运行该单元格。查看所有模型和价格获取完整列表。
自己试试试一试:resp.choices[0].finish_reason 是什么?显示答案
在其他打印语句下方添加 print(resp.。如果回答自然结束,你会看到 stop。设置 max_tokens=5 并再次运行:回答被截短,你会看到 length,这意味着是限制阻止了它,而不是模型。
当单元格失败时#
来自 secrets 一侧的错误会首先出现,在任何请求离开 Colab 之前。colabtools 源代码(2026 年 11 月 5 日查阅)指出 userdata.get 可能引发三种错误。

SecretNotFoundError:没有该名称的 secret。将userdata.中的字符串与 Secrets 面板中的名称逐字母比较。大小写很重要。get('. . . ') NotebookAccessError:secret 存在,但此笔记本无权访问它。在 Secrets 面板中打开访问开关并重新运行该单元格。TimeoutException:Colab 没有响应获取 secret 的请求。错误消息说 secrets 只能在代码从 Colab UI 运行时获取,因此请在 Colab 笔记本本身中运行该单元格,而不是在导出的脚本中。
如果 secret 加载成功但请求仍然失败,问题就在 API 一侧。401 意味着密钥错误或缺失;404 通常指向错误的 base URL 或模型 id。API 401 或 404:密钥、base URL、模型 id 会逐一讲解两者,而使用 GET /v1/models 列出模型展示了如何复制确切的 id。
分享与轮换#
分享笔记本时,调用 userdata.get 的代码也会随之分享;密钥不在任何单元格或输出中,因此没有什么可泄露的。打开笔记本的人需要自己的同名 secret,否则他们会得到 SecretNotFoundError(见上文)。
如果你创建了新密钥,请在 Secrets 面板中更新值;代码保持不变,因为它只命名 secret。
有一个习惯仍然很重要:永远不要打印密钥。像 print(userdata. 这样的单元格会把它放入输出中,而输出会随笔记本一起保存。
快速检查
在共享的 Colab 笔记本中,API 密钥应该放在哪里?
显示答案
答案: 在 Colab Secrets 中,用 userdata.get 读取
单元格及其输出会随笔记本一起保存并分享;代码只命名 secret。
下一步:将回答放入循环、聊天或小型工具中。文档涵盖了 API 的其余部分。



