返回博客

工具与集成指南

将 LibreChat 连接到 CheapTokens:librechat.yaml 自定义端点

为自托管的 LibreChat 添加 CheapTokens 端点:在 librechat.yaml 中写一条条目,将密钥作为环境变量,菜单中显示三个模型。

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

指向 CheapTokens API 的 LibreChat 配置条目
本页内容
  1. 条目需要什么
  2. 三步完成连接
  3. 一个菜单中的三个模型
  4. 如果端点没有出现或回答报错

你的 LibreChat 已经运行起来了,但模型菜单只显示它自带的模型。要添加 CheapTokens,你需要在 librechat.yaml 中写一条 endpoints.custom 条目:一个名称、基础 URL https://api.cheaptokens.dev/v1、以环境变量形式提供的密钥,以及一个模型 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-compose.override.yml 中设置变量,所以在 docker-compose.yml 旁边创建该文件。变量名由你决定,随便选一个,只要在 YAML 中保持一致即可:

yaml
services:
  api:
    environment:
      CHEAPTOKENS_API_KEY: ct_your_key_here

该值是占位符:请使用你 CheapTokens 仪表盘中的密钥。

将端点添加到 librechat.yaml

在 docker-compose.yml 旁边创建 librechat.yaml。其结构参照 LibreChat 文档中的 Mistral 示例,使用我们的地址和 id:

yaml
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-compose.override.yml 中,这样它现在同时包含两者:

yaml
services:
  api:
    environment:
      CHEAPTOKENS_API_KEY: ct_your_key_here
    volumes:
      - ./librechat.yaml:/app/librechat.yaml

然后应用它:

bash
docker compose up -d
从密钥到菜单:环境变量、librechat.yaml、挂载,然后 CheapTokens 出现在模型列表中
从密钥到 LibreChat 菜单中 CheapTokens 端点的路径

在浏览器中打开 LibreChat,开始一个新对话,并在端点菜单中选择 CheapTokens。三个模型都在列表中。发送 "Say hi in one sentence",你应该能收到回答。如果没有,请跳到最后一节。

一个菜单中的三个模型#

这正是自托管聊天值得拥有的部分。假设你为一个小团队运行它。大多数问题是日常问题:改写这封邮件、解释这个错误。对于这些,zai-org/GLM-5.3-Flash 就足够了,它有 390K 上下文窗口,每次回答最多 8,192 个 token。当有人粘贴长文档并想要长回复时,他们可以在同一个对话中切换到 deepseek-ai/DeepSeek-V4-Flash-0731(380K 上下文,每次回答最多 32,768 个 token)。当两个回答不一致时,MiniMaxAI/MiniMax-M2.7(180K 上下文)是第三种意见。无需第二个订阅,无需第二个密钥:三者都从一个余额中计费。

这样的聊天要花多少钱?假设一个五人团队每天发送 200 条消息,每条携带约 3,000 个输入 token(历史记录会增长),并得到约 500 个 token 的回复:

模型 每次请求 200 次请求 OpenRouter,200 次请求
GLM-5.3-Flash $0.00008 $0.016 $0.0284
DeepSeek-V4-Flash $0.000095 $0.019 $0.056
MiniMax-M2.7 $0.00023 $0.045 $0.54

每次请求 3,000 个输入 token 和 500 个输出 token。每 100 万 token 的价格为当前价格,会随我们的资费一同变动;OpenRouter 列显示相同工作负载的参考价格。

在表中,每个模型对这 200 次请求的价格是输入和输出合计计算的,总计比 OpenRouter 更便宜。选择与你使用情况匹配的行,并与定价页面进行比较。

自己试试试一试:向两个模型发送同一个问题显示答案

打开一个新对话,选择 zai-org/GLM-5.3-Flash,并请求总结一段你很熟悉的段落。在同一个菜单中将模型切换为 deepseek-ai/DeepSeek-V4-Flash-0731,再次提问。比较两个回答的长度和语气——这就是你决定默认模型的依据。

如果端点没有出现或回答报错#

大多数问题属于以下三种情况之一。选择与你看到的现象匹配的那一个:

选择你的情况

你看到了什么?

菜单中缺少 CheapTokens

LibreChat 从未读取你的文件。检查 librechat.yaml 是否挂载到 /app/librechat.yaml(上面的覆盖文件),YAML 缩进是否完好,以及更改后是否运行了 docker compose up -d。

401 Unauthorized

密钥缺失或错误。检查 librechat.yaml 中 ${ 后面的名称是否与环境变量的名称完全一致,以及密钥中是否粘贴了空格或引号。关于此错误的更多信息见 API 401 或 404。

404 或模型错误

模型 id 错误。使用完整 id,例如 deepseek-ai/DeepSeek-V4-Flash-0731;不接受短名称。你可以按照 List models with GET /v1/models 中的步骤列出确切的 id。

一旦第一条消息成功通过,你就可以随时向 models.default 添加更多 id,以便在菜单中显示另一个模型。更喜欢不同的前端?同样的思路——基础 URL 加密钥——见将 Open WebUI 连接到 CheapTokens,总体情况见OpenAI 兼容 API:什么是 base_url。模型本身在 GLM 页面上。