快速开始指南
在 VS Code 中发送第一个 API 请求:一个 .http 文件,密钥来自 .env
使用 REST Client 扩展从 VS Code 向 CheapTokens 发送你的第一个聊天补全请求,将密钥排除在 git 之外,并找到回答和 token 用量。

你无需离开 VS Code 就能向 CheapTokens 发送第一个请求:安装 REST Client 扩展,编写一个 .http 文件,将密钥保存在与其相邻的 .env 中,然后按 Ctrl+Alt+R。响应会在文件旁边的面板中打开,文本和 token 数量是两个字段,你可以一眼找到。
如果你已经打开了一个编辑器,这比为了向模型说声“Hello”而再安装一个应用要好。而且请求保存在纯文本文件中,因此你可以明天重新运行它,或者(去掉密钥后)提交给队友。发送相同请求的其他方式见 使用 HTTPie 发送第一个请求 和 使用 CheapTokens 发送你的第一个 API 请求。
安装扩展并将密钥放入 .env#
REST Client 就是扩展 humao.。在 VS Code 中按 F1,输入 ext install,搜索 rest-client 并安装它。(已对照该扩展的 README 于 2026 年 11 月 9 日核实。)
现在处理密钥。README 描述了 {{$dotenv NAME}}:它从与你的 .http 文件位于同一目录的 .env 文件中读取值。这正是我们想要的,因为密钥永远不会出现在请求文件中。为实验创建一个文件夹,并在其中放入两个文件。
.env:
CHEAPTOKENS_API_KEY=paste-your-key-here.gitignore:
.env在你的 CheapTokens 账户中创建密钥,并用它替换占位符。为什么忽略行很重要,以及如果密钥意外进入提交该怎么办,见 安全存储 API 密钥。
排序
按正确顺序进行设置
拖动项目或使用箭头
- 安装 REST Client 扩展
- 将 .env 添加到 .gitignore
- 将密钥放入与 .http 文件相邻的 .env 中
- 在请求上按 Ctrl+Alt+R
编写 .http 文件#
在同一文件夹中创建 first.http。语法很短:请求行(POST URL HTTP/,方法可选,默认为 GET),头部行 Name: value 直到第一个空行,然后在空行之后是正文。请求之间用一行三个或更多 # 分隔。
### First request
POST https://api.cheaptokens.dev/v1/chat/completions
Authorization: Bearer {{$dotenv CHEAPTOKENS_API_KEY}}
Content-Type: application/json
{
"model": "zai-org/GLM-5.3-Flash",
"messages": [{ "role": "user", "content": "Hello" }]
}注意三件事。地址是 CheapTokens API 基础地址 https:/ 加上 /。模型使用其完整 id 编写,即 zai-:一个 390K 上下文的模型,每次回答最多可写 8,192 个 token。而密钥只是一个 {{$dotenv …}} 占位符,因此此文件可以安全提交。

如果你的设置没有读取 .env 文件,README 还描述了 {{$processEnv NAME}},它从你机器的环境变量中读取变量。
发送请求并找到答案#
点击请求行上方的“Send Request”,或按 Ctrl+Alt+R(macOS 上为 Cmd+Alt+R)。你也可以右键单击或使用 F1。响应会在单独的面板中打开。如果你更喜欢可以搜索和折叠的普通编辑器标签页,请在设置中将 rest- 设为 true。
响应是标准的 chat-completions JSON。第一天有两个地方很重要:
choices[0].是回答文本。紧挨着它,message. content finish_reason告诉你模型为什么停止。length表示回答被 token 限制截断。usage保存此请求的 token 计数:你发送的 token 和模型写入的 token。这是你付费的部分,所以每次都要查看它。

自己试试试一试:如何看出回答被截断了?显示答案
查看响应中的 finish_reason。如果它显示 length,说明模型在完成之前达到了 token 限制。在正文中添加一行 "max_tokens",或提高它,然后再次发送。
为了对费用有个感觉:假设你发送此请求 100 次,输入约 1,000 个 token,输出 300 个 token(这是示例假设,不是实测)。
| 模型 | 输入 $/1M | 输出 $/1M | 每次请求 | 100 次请求 | OpenRouter,100 次请求 |
|---|---|---|---|---|---|
| GLM-5.3-Flash | $0.02 | $0.04 | $0.000032 | $0.0032 | $0.0058 |
| DeepSeek-V4-Flash | $0.015 | $0.10 | $0.000045 | $0.0045 | $0.0112 |
| MiniMax-M2.7 | $0.05 | $0.15 | $0.000095 | $0.0095 | $0.114 |
每次请求 1,000 个输入 token 和 300 个输出 token。每 100 万 token 的价格为当前价格,会随我们的资费一同变动;OpenRouter 列显示相同工作负载的参考价格。
表格显示了该工作负载在每个模型上的实时价格,并有一列 OpenRouter 用于比较。一个很小的“Hello”花费要少得多。
一行替换模型#
纯文本文件的便利之处:改一行再发送。将模型 id 替换为 deepseek-(380K 上下文,每次回答最多 32,768 个 token,全天统一价格,输入和输出合计比 OpenRouter 便宜),然后再次按 Ctrl+Alt+R。相同的正文,相同的密钥,不同的回答,以及不同的 usage。
想保留两者?在 ### 行下方粘贴第二个请求,使用另一个模型 id。每个请求都有自己的 Send Request 链接,因此你可以依次运行它们并比较。不确定 id?使用 GET /v1/models 列出模型 会显示确切的字符串。
如果它不工作#
配对
将症状与原因对应起来
点击左侧项目,然后点击其配对项
- 401 Unauthorized密钥为空或错误,通常是因为 .env 与 .http 文件不在同一文件夹中
- 404 Not FoundURL 路径或模型 id 中有拼写错误
- 回答在句子中间停止,finish_reason 为 length达到了 token 限制,请提高 max_tokens
对于前两个问题,API 401 或 404:错误的密钥、基础 URL 或模型 id 会逐步介绍检查方法。完整的请求详情见 CheapTokens 文档,当前价格在 定价页面 上。
这就是整个工作流程:一个文件,一个位于 .env 中的密钥,一个快捷键。从这里开始,你可以添加系统消息、更改 max_tokens,或将相同的正文转换为任何语言的代码。



