快速开始指南
从 OpenRouter 切换到 CheapTokens:base_url、密钥、模型 id
在 OpenAI SDK(Python 和 JavaScript)中更改 base_url、API key 和模型 id,发送首个请求并确认其正常工作。

你的应用已经通过 OpenAI SDK 调用 OpenRouter,现在想改为调用 CheapTokens。你只需改三个值——base_url、API key 和 model id——再删掉两个可选请求头。其余代码保持不变。
下面是 Python、JavaScript 和 curl 的精确代码行,一个快速确认切换成功的方法,以及一张说明哪个模型适合哪类任务的表格。如果你从未向 CheapTokens 发送过请求,首次 API 请求指南 介绍了账户和密钥;文档 有完整参考。
实际改动#
OpenRouter 的快速入门(2026 年 10 月 27 日核对)将 OpenAI 客户端配置为使用基础 URL https:/,并将模型命名为 provider/。CheapTokens 在 https:/ 使用相同的 OpenAI Chat Completions 格式。因此客户端类、chat. 以及读取响应的方式都不变。

每行只需替换一处:
- 基础 URL——用
https:/代替 OpenRouter 地址;/ api. cheaptokens. dev/ v1 - API key——来自你的 CheapTokens 账户的密钥,从环境变量读取;
- 模型 id——完整的 CheapTokens id,例如
deepseek-。id 请从 CheapTokens 文档获取:不同提供商对同一模型的命名不同,价格标签上的短 id 不被接受。ai/ DeepSeek- V4- Flash- 0731
还有一处删除。OpenRouter 的 HTTP-Referer 和 X- 请求头是可选的,仅用于向 OpenRouter 的排行榜提供数据。请从 default_headers / defaultHeaders 中移除它们;这里不需要。
切换后的代码#
同一个请求,三种运行时。选择你的应用使用的那一种。
切换后的代码
Python
import os
from openai import OpenAI
client = OpenAI(
base_url='https://api.cheaptokens.dev/v1',
api_key=os.environ['CHEAPTOKENS_API_KEY'],
)
resp = client.chat.completions.create(
model='deepseek-ai/DeepSeek-V4-Flash-0731',
messages=[{'role': 'user', 'content': 'Reply with one word: ready'}],
max_tokens=20,
)
print(resp.choices[0].message.content)JavaScript
import OpenAI from 'openai';
const client = new OpenAI({
baseURL: 'https://api.cheaptokens.dev/v1',
apiKey: process.env.CHEAPTOKENS_API_KEY,
});
const resp = await client.chat.completions.create({
model: 'deepseek-ai/DeepSeek-V4-Flash-0731',
messages: [{ role: 'user', content: 'Reply with one word: ready' }],
max_tokens: 20,
});
console.log(resp.choices[0].message.content);curl
curl https://api.cheaptokens.dev/v1/chat/completions \
-H "Authorization: Bearer $CHEAPTOKENS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "deepseek-ai/DeepSeek-V4-Flash-0731", "messages": [{"role": "user", "content": "Reply with one word: ready"}], "max_tokens": 20}'运行前还有一件事。如果你的请求带有 OpenRouter 专有字段——路由或回退列表、提供商偏好、~alias 模型 id——这些都属于 OpenRouter。请将请求限制为标准 Chat Completions 字段:model、messages、temperature、max_tokens、stream。
确认切换成功#
有回复还不够。在回复旁边打印三样东西:哪个模型作答、为什么停止,以及计费了多少 token。
print(resp.model)
print(resp.choices[0].finish_reason)
print(resp.usage.prompt_tokens, resp.usage.completion_tokens)
stop 的 finish_reason 表示模型自行完成。length 表示 max_tokens 截断了回答。usage 分别显示输入和输出 token,这两个数字构成你的账单——与你在 OpenRouter 上跟踪的两个数字相同。
自己试试试一试:如果把 max_tokens 设为 1,finish_reason 会说什么?显示答案
它会说 length——回答被 max_tokens 截断。这是测试代码能否处理截断回复的好方法。
哪个模型替代哪个#
按任务选择模型,而不是按你在 OpenRouter 上使用的名称。以下事实来自 2026 年 10 月 27 日核对的 CheapTokens 价格表;一个余额覆盖全部三个模型,价格不随时间变化。
向右滚动表格 →
| 模型 | model id |
上下文 | 最大回答 |
|---|---|---|---|
| DeepSeek-V4-Flash | deepseek- |
380K | 32,768 tokens |
| GLM-5.3-Flash | zai- |
390K | 8,192 tokens |
| MiniMax-M2.7 | MiniMaxAI/ |
180K | 8,192 tokens |
不确定哪一行适合你?从应用的功能出发:
选择你的情况
你的应用主要做什么?
选择一个选项以查看答案
短小、频繁的请求——分类、提取、支持回复
试试 zai-:390K 上下文,回答最多 8,192 tokens,输入和输出合计比 OpenRouter 更便宜。
长回答、代码、agent 循环
试试 deepseek-:回答最多 32,768 tokens,380K 上下文,全天统一价格。
目前按 OpenRouter 高价付费的稳定工作负载
试试 MiniMaxAI/:180K 上下文,回答最多 8,192 tokens,合计比 OpenRouter 更便宜。
相同流量的费用#
假设你的机器人发送 1,000 个请求,每个请求约 500 个输入 token 和 300 个输出 token。这只是假设——请用 usage 中的你自己的数字替换。下表是实时的:我们的价格和 OpenRouter 列来自当前价格表,输入和输出合计计算。
| 模型 | 输入 $/1M | 输出 $/1M | 每次请求 | 1,000 次请求 | OpenRouter,1,000 次请求 |
|---|---|---|---|---|---|
| GLM-5.3-Flash | $0.02 | $0.04 | $0.000022 | $0.022 | $0.0434 |
| DeepSeek-V4-Flash | $0.015 | $0.10 | $0.000038 | $0.0375 | $0.0708 |
| MiniMax-M2.7 | $0.05 | $0.15 | $0.00007 | $0.07 | $0.51 |
每次请求 500 个输入 token 和 300 个输出 token。每 100 万 token 的价格为当前价格,会随我们的资费一同变动;OpenRouter 列显示相同工作负载的参考价格。
在 DeepSeek-V4-Flash 上,这 1,000 个请求合计 $0.0375。完整价格见定价页面;计费依据的概念见输入与输出 token。
如果不起作用#
切换后,三种错误涵盖了大部分问题。将消息与原因对应:
配对
将每个症状与原因对应
点击左侧项目,然后点击其配对项
- 401 Unauthorized密钥缺失、拼写错误,或仍是 OpenRouter 的密钥
- 404 Not Found基础 URL 路径错误,或模型 id 不是完整的 CheapTokens id
- 回复中途截断max_tokens 低于回答所需;finish_reason 显示 length
401 和 404 故障排除文章 逐一介绍了每种情况及其确切消息,什么是 base_url 解释了为什么一个错误的斜杠会破坏路径。
发布前#
清单
切换检查清单



