返回博客

工具与集成指南

将 AnythingLLM 连接到 CheapTokens:Generic OpenAI 设置

将 AnythingLLM 的 Generic OpenAI 提供商指向 CheapTokens:Base URL、key、完整模型 id,以及要输入的上下文窗口和 Max Tokens。

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

AnythingLLM 通过 Generic OpenAI 提供商连接到 CheapTokens
本页内容
  1. 填写提供商设置
  2. 为什么这两个限制很重要
  3. 在 AnythingLLM 之外检查连接
  4. 向你的文档提问要花多少钱
  5. 如果它不工作

你可以通过 Generic OpenAI 提供商将 AnythingLLM 连接到 CheapTokens:将 Base URL 设为 https://api.cheaptokens.dev/v1,粘贴你的 API key,输入完整的模型 id,然后填写模型真实的上下文窗口和 Max Tokens。最后两项常被人跳过,而它们决定了长文档能否放得下、回答是否会被截断。

AnythingLLM 自己的文档(Generic OpenAI 页面,查阅于 2026 年 11 月 7 日,带有 v1.19.0 横幅)将该提供商描述为使用任何 OpenAI 兼容 LLM 提供商的方式。文档还警告说它面向开发者:设置错误会让它表现异常,并且模型 id 必须与端点提供的完全一致。所以我们要精确。

填写提供商设置#

打开 AnythingLLM 的 LLM 设置,选择 Generic OpenAI 作为提供商。然后依次填写五个字段。不同版本之间标签可能略有差异,所以按含义来。

分步操作

五个字段,按顺序

Base URL

输入 API 根地址,而不是完整端点:https://api.cheaptokens.dev/v1。文档自己的示例是以 /v1 结尾的根地址,AnythingLLM 会自行添加 /chat/completions。如果你粘贴完整路径,请求会发到错误的地址。

API key

粘贴你的 CheapTokens key。如果还没有,请先在仪表盘中创建。把它当作密码对待:不要放进截图或共享的工作区笔记中。

Chat model name

使用完整 id,例如 deepseek-ai/DeepSeek-V4-Flash-0731 或 zai-org/GLM-5.3-Flash。价格表中看到的短名称不会被 API 接受。不确定你有哪些 id?用 GET /v1/models 列出模型。

Model context window

AnythingLLM 在根据你的问题、检索到的文档片段和聊天历史构建提示词时使用的预算。输入模型真实的窗口:DeepSeek-V4-Flash 为 380000,GLM-5.3-Flash 为 390000。

Max Tokens

单次回答长度的上限。AnythingLLM 的默认值是 1024。DeepSeek-V4-Flash 输入 32768,GLM-5.3-Flash 输入 8192。

AnythingLLM 中的 Base URL:完整端点路径是错误的,API 根地址才是正确的
粘贴以 /v1 结尾的 API 根地址;AnythingLLM 会自行添加 /chat/completions

保存,打开一个工作区,然后提问。Embeddings(将文档转换为可搜索片段的部分)在 AnythingLLM 中是单独的设置,所以上面的提供商只改变由哪个模型来写回答。

为什么这两个限制很重要#

想象你把一份 60 页的合同放进工作区,并要求总结终止条款。使用默认值时,两件事会出错。你输入的上下文窗口可能远小于模型真实的窗口,所以 AnythingLLM 会裁剪发送的内容。而 Max Tokens 停留在 1024,所以长总结会在句子中间停止。

解决办法是告诉 AnythingLLM 模型的真实情况:

模型(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

一个值得保持的习惯:Max Tokens 是上限,不是目标。短问题仍然得到短回答;你只为模型实际写出的 tokens 付费。如果你想了解达到限制时会发生什么,为什么 AI 回答会在句子中间停止 讲解了 finish_reason 和 max_tokens,而 什么是上下文窗口 涵盖了输入侧。

AnythingLLM 文档还说,将 Max Tokens 设为 0 会让输出限制不出现在请求中。明确的数字更容易推理,所以我会填一个。

在 AnythingLLM 之外检查连接#

如果聊天窗口显示错误,知道问题出在 key 和模型 id 还是 AnythingLLM 内部会很有帮助。直接向 API 发送一个请求:

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": "Say hi in five words."}], "max_tokens": 50}'

该 API 兼容 OpenAI Chat Completions,所以可用的回复会在 choices[0].message.content 中包含文本、一个 finish_reason,以及一个包含该请求 token 计数的 usage 块。如果你得到这些,说明 key、Base URL 和模型 id 都没问题,你在 AnythingLLM 中看到的任何问题都来自上面的设置。关于端点的更多信息见 CheapTokens 文档。

向你的文档提问要花多少钱#

文档聊天是输入密集型的:每个问题都携带检索到的片段。假设你检索六个片段,每个约 600 tokens,加上问题和小段历史,接近 4,000 个输入 tokens,回答为 400 tokens。在 DeepSeek-V4-Flash 上,这样一个问题花费 $0.0001。以下是 200 个问题的相同工作负载在各模型上的对比,旁边是 OpenRouter 列:

模型 每次请求 200 次请求 OpenRouter,200 次请求
GLM-5.3-Flash $0.000096 $0.0192 $0.0334
DeepSeek-V4-Flash $0.0001 $0.02 $0.0672
MiniMax-M2.7 $0.00026 $0.052 $0.624

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

总计,将输入和输出一起计算,在这个工作负载上 DeepSeek-V4-Flash 比 OpenRouter 更便宜。要得到你自己的数字,拖动滑块:每个问题的 tokens 和每天的问题数就是它需要的全部。

成本计算器

一天向你的文档提问

每次请求的输入 token 数: 4,000 · 每次请求的输出 token 数: 400 · 每日请求数: 50

模型每天每月
GLM-5.3-Flash$0.0048$0.144
DeepSeek-V4-Flash$0.005$0.15
MiniMax-M2.7$0.013$0.39

你发送的片段数量是最大的杠杆。一个 RAG 问题要花多少钱 展示了账单如何随之变化,当前费率在 价格页面 上。

如果它不工作#

大多数失败是四种情况之一。将症状与原因对应起来:

配对

将每个症状与其原因对应

  • 提供商拒绝请求并抱怨 max_tokens将 GENERIC_OPEN_AI_MODEL_MAX_TOKEN_KEY 设为 max_completion_tokens 并重启 AnythingLLM
  • 401 UnauthorizedAPI key 缺失、输入错误或粘贴时带了空格
  • 404 或 "model not found"模型 id 是短名称,而不是模型列表中的完整 id
  • 回答在句子中间停止Max Tokens 仍是默认的 1024

GENERIC_OPEN_AI_MODEL_MAX_TOKEN_KEY 选项来自 AnythingLLM 的文档:它改变请求中由哪个字段名携带限制。关于 401 和 404 的详细信息,见 API 401 或 404:错误的 key、base URL 或模型 id。

使用其他聊天客户端?步骤与 Open WebUI、LibreChat 和 Cherry Studio 接近:一个 OpenAI 兼容的 base URL、一个 key、一个完整模型 id。