工具与集成指南
将 LibreChat 连接到 CheapTokens:librechat.yaml 自定义端点
为自托管的 LibreChat 添加 CheapTokens 端点:在 librechat.yaml 中写一条条目,将密钥作为环境变量,菜单中显示三个模型。

你的 LibreChat 已经运行起来了,但模型菜单只显示它自带的模型。要添加 CheapTokens,你需要在 librechat.yaml 中写一条 endpoints.custom 条目:一个名称、基础 URL https:/、以环境变量形式提供的密钥,以及一个模型 id 列表。重启容器后,菜单中就会出现一个 "CheapTokens" 端点。
下面的字段名来自 LibreChat 的自定义端点参考文档(docs 的 "Latest (dev)" 分支,查阅于 2026 年 10 月 30 日)。该页面没有版本号,所以如果你的安装版本较旧、某个字段的行为不同,请对照你所用版本的文档。API 侧的内容来自我们的文档:OpenAI Chat Completions 格式,所有模型共用一个余额。
条目需要什么#
有四个字段是必填的,每个都有明确的用途:
name—— 端点在菜单中的名称。apiKey—— 密钥。文档建议使用像${VAR}这样的引用,而不是密钥本身,这样密钥就不会出现在 YAML 中。baseURL—— 请求发往哪里:https:/。/ api. cheaptokens. dev/ v1 models.default—— 菜单中显示的模型 id 列表。
有两个可选字段值得设置。titleConvo: true 让 LibreChat 为你的对话命名(除非设为 false,否则会创建标题),modelDisplayLabel 是回答旁边的标签(默认为 "AI")。models.fetch 默认为 false,因此 LibreChat 不会向 API 请求模型列表;菜单来自 models.default。这就是下面要完整写出 id 的原因。
三步完成连接#
分步操作
连接 LibreChat(Docker)
把密钥交给容器
密钥必须作为环境变量传入 LibreChat 容器。LibreChat 的文档允许你在 environment 下的 docker- 中设置变量,所以在 docker- 旁边创建该文件。变量名由你决定,随便选一个,只要在 YAML 中保持一致即可:
services:
api:
environment:
CHEAPTOKENS_API_KEY: ct_your_key_here该值是占位符:请使用你 CheapTokens 仪表盘中的密钥。
将端点添加到 librechat.yaml
在 docker- 旁边创建 librechat.yaml。其结构参照 LibreChat 文档中的 Mistral 示例,使用我们的地址和 id:
endpoints:
custom:
- name: 'CheapTokens'
apiKey: '${CHEAPTOKENS_API_KEY}'
baseURL: 'https://api.cheaptokens.dev/v1'
models:
default:
- 'zai-org/GLM-5.3-Flash'
- 'deepseek-ai/DeepSeek-V4-Flash-0731'
- 'MiniMaxAI/MiniMax-M2.7'
titleConvo: true
modelDisplayLabel: 'CheapTokens'挂载文件并重启
容器必须能看到该文件。将 volumes 添加到同一个 docker- 中,这样它现在同时包含两者:
services:
api:
environment:
CHEAPTOKENS_API_KEY: ct_your_key_here
volumes:
- ./librechat.yaml:/app/librechat.yaml然后应用它:
docker compose up -d
在浏览器中打开 LibreChat,开始一个新对话,并在端点菜单中选择 CheapTokens。三个模型都在列表中。发送 "Say hi in one sentence",你应该能收到回答。如果没有,请跳到最后一节。
一个菜单中的三个模型#
这正是自托管聊天值得拥有的部分。假设你为一个小团队运行它。大多数问题是日常问题:改写这封邮件、解释这个错误。对于这些,zai- 就足够了,它有 390K 上下文窗口,每次回答最多 8,192 个 token。当有人粘贴长文档并想要长回复时,他们可以在同一个对话中切换到 deepseek-(380K 上下文,每次回答最多 32,768 个 token)。当两个回答不一致时,MiniMaxAI/(180K 上下文)是第三种意见。无需第二个订阅,无需第二个密钥:三者都从一个余额中计费。
这样的聊天要花多少钱?假设一个五人团队每天发送 200 条消息,每条携带约 3,000 个输入 token(历史记录会增长),并得到约 500 个 token 的回复:
| 模型 | 输入 $/1M | 输出 $/1M | 每次请求 | 200 次请求 | OpenRouter,200 次请求 |
|---|---|---|---|---|---|
| GLM-5.3-Flash | $0.02 | $0.04 | $0.00008 | $0.016 | $0.0284 |
| DeepSeek-V4-Flash | $0.015 | $0.10 | $0.000095 | $0.019 | $0.056 |
| MiniMax-M2.7 | $0.05 | $0.15 | $0.00023 | $0.045 | $0.54 |
每次请求 3,000 个输入 token 和 500 个输出 token。每 100 万 token 的价格为当前价格,会随我们的资费一同变动;OpenRouter 列显示相同工作负载的参考价格。
在表中,每个模型对这 200 次请求的价格是输入和输出合计计算的,总计比 OpenRouter 更便宜。选择与你使用情况匹配的行,并与定价页面进行比较。
自己试试试一试:向两个模型发送同一个问题显示答案
打开一个新对话,选择 zai-,并请求总结一段你很熟悉的段落。在同一个菜单中将模型切换为 deepseek-,再次提问。比较两个回答的长度和语气——这就是你决定默认模型的依据。
如果端点没有出现或回答报错#
大多数问题属于以下三种情况之一。选择与你看到的现象匹配的那一个:
选择你的情况
你看到了什么?
选择一个选项以查看答案
菜单中缺少 CheapTokens
LibreChat 从未读取你的文件。检查 librechat.yaml 是否挂载到 /(上面的覆盖文件),YAML 缩进是否完好,以及更改后是否运行了 docker compose up -。
401 Unauthorized
密钥缺失或错误。检查 librechat.yaml 中 ${ 后面的名称是否与环境变量的名称完全一致,以及密钥中是否粘贴了空格或引号。关于此错误的更多信息见 API 401 或 404。
404 或模型错误
模型 id 错误。使用完整 id,例如 deepseek-;不接受短名称。你可以按照 List models with GET /v1/models 中的步骤列出确切的 id。
一旦第一条消息成功通过,你就可以随时向 models.default 添加更多 id,以便在菜单中显示另一个模型。更喜欢不同的前端?同样的思路——基础 URL 加密钥——见将 Open WebUI 连接到 CheapTokens,总体情况见OpenAI 兼容 API:什么是 base_url。模型本身在 GLM 页面上。



