返回博客

快速开始指南

从 OpenRouter 切换到 CheapTokens:base_url、密钥、模型 id

在 OpenAI SDK(Python 和 JavaScript)中更改 base_url、API key 和模型 id,发送首个请求并确认其正常工作。

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

封面:通过更改 base_url、密钥和模型 id,将 OpenAI-SDK 应用从 OpenRouter 切换到 CheapTokens
本页内容
  1. 实际改动
  2. 切换后的代码
  3. 确认切换成功
  4. 哪个模型替代哪个
  5. 相同流量的费用
  6. 如果不起作用
  7. 发布前

你的应用已经通过 OpenAI SDK 调用 OpenRouter,现在想改为调用 CheapTokens。你只需改三个值——base_url、API key 和 model id——再删掉两个可选请求头。其余代码保持不变。

下面是 Python、JavaScript 和 curl 的精确代码行,一个快速确认切换成功的方法,以及一张说明哪个模型适合哪类任务的表格。如果你从未向 CheapTokens 发送过请求,首次 API 请求指南 介绍了账户和密钥;文档 有完整参考。

实际改动#

OpenRouter 的快速入门(2026 年 10 月 27 日核对)将 OpenAI 客户端配置为使用基础 URL https://openrouter.ai/api/v1,并将模型命名为 provider/model-name。CheapTokens 在 https://api.cheaptokens.dev/v1 使用相同的 OpenAI Chat Completions 格式。因此客户端类、chat.completions.create 以及读取响应的方式都不变。

切换前后:从 OpenRouter 切换到 CheapTokens 时需要更改的三个值
需要替换的三个值。密钥以环境变量形式显示,绝不出现在代码中。

每行只需替换一处:

  • 基础 URL——用 https://api.cheaptokens.dev/v1 代替 OpenRouter 地址;
  • API key——来自你的 CheapTokens 账户的密钥,从环境变量读取;
  • 模型 id——完整的 CheapTokens id,例如 deepseek-ai/DeepSeek-V4-Flash-0731。id 请从 CheapTokens 文档获取:不同提供商对同一模型的命名不同,价格标签上的短 id 不被接受。

还有一处删除。OpenRouter 的 HTTP-Referer 和 X-OpenRouter-Title 请求头是可选的,仅用于向 OpenRouter 的排行榜提供数据。请从 default_headers / defaultHeaders 中移除它们;这里不需要。

切换后的代码#

同一个请求,三种运行时。选择你的应用使用的那一种。

切换后的代码

Python

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

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

bash
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。

python
print(resp.model)
print(resp.choices[0].finish_reason)
print(resp.usage.prompt_tokens, resp.usage.completion_tokens)
在终端中运行环境设置和检查脚本
设置一次密钥,运行检查,读取 model、finish_reason 和 usage。

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-ai/DeepSeek-V4-Flash-0731 380K 32,768 tokens
GLM-5.3-Flash zai-org/GLM-5.3-Flash 390K 8,192 tokens
MiniMax-M2.7 MiniMaxAI/MiniMax-M2.7 180K 8,192 tokens

不确定哪一行适合你?从应用的功能出发:

选择你的情况

你的应用主要做什么?

短小、频繁的请求——分类、提取、支持回复

试试 zai-org/GLM-5.3-Flash:390K 上下文,回答最多 8,192 tokens,输入和输出合计比 OpenRouter 更便宜。

长回答、代码、agent 循环

试试 deepseek-ai/DeepSeek-V4-Flash-0731:回答最多 32,768 tokens,380K 上下文,全天统一价格。

目前按 OpenRouter 高价付费的稳定工作负载

试试 MiniMaxAI/MiniMax-M2.7:180K 上下文,回答最多 8,192 tokens,合计比 OpenRouter 更便宜。

相同流量的费用#

假设你的机器人发送 1,000 个请求,每个请求约 500 个输入 token 和 300 个输出 token。这只是假设——请用 usage 中的你自己的数字替换。下表是实时的:我们的价格和 OpenRouter 列来自当前价格表,输入和输出合计计算。

模型 每次请求 1,000 次请求 OpenRouter,1,000 次请求
GLM-5.3-Flash $0.000022 $0.022 $0.0434
DeepSeek-V4-Flash $0.000038 $0.0375 $0.0708
MiniMax-M2.7 $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 解释了为什么一个错误的斜杠会破坏路径。

发布前#

清单

切换检查清单