AI 使用量和成本
计量 AI 是文档产品中这样一个部分:一个错误的数字就会让所有者蒙受实实在在的金钱损失。此页面介绍其机制:计量什么、一次调用如何定价、费用从哪个余额中扣除、之后可以查看什么,以及为什么两个不同屏幕上的数字可能合理地存在差异。
你将获得什么#
你的项目发起的每次 AI 调用——读者的问题、你在面板中的问题、翻译、嵌入运行、代理步骤——都会写入一行记录,其中包含产生该调用的界面、运行的模型、输入和输出的令牌数、提供商收取的费用,以及从余额中扣除的金额。每次计量的 MCP 工具调用也会写入自己的记录,其中包含工具名称及其计费类别。
通过这些记录,你可以按模型、按界面、按预算类别、按对话、按翻译语言和页面以及按MCP 工具查看支出——此外还可以查看每项的每日明细。分析概览中的支出摘要磁贴显示的是这两本账本的总和。
读取这些信息完全免费。回答读者的问题则不是。
哪些会消耗余额,哪些不会#
使用量按金额而非请求次数计量:每次调用都会消耗该调用 所对应的定价金额,因此选择更便宜的模型可以让相同的余额发挥更大作用。这 正是模型选择器的用途,并且所有套餐都提供该功能。
| 会消耗项目余额 | 不产生费用 |
|---|---|
| 在聊天中向读者提供的 AI 答案 | 阅读任何分析报告 |
| 你在面板中向助手提出的问题 | 托管和提供文档服务 |
| 后续建议和对话标题 | 提供已翻译的页面 |
| 翻译页面 | 品牌设置、主题、导航、SEO 设置 |
| 构建语义索引及其嵌入 | 注册 webhook 并接收传送内容 |
| 后台代理运行 | MCP 发现调用 — 查找服务器能够执行的操作 |
| 计量的 MCP 工具调用 | 文档网站上的读者事件 |
读者事件会计价,但永远不会收费。“使用量”视图会在每类事件旁显示一个数值, 让你了解流量所代表的含义,而且不会从任何地方扣除费用。已计费金额和仅计量金额会 被保存在不同的总计中,正是为了确保同一屏幕不会将后者显示为发票。
使用你自己的提供商密钥进行的调用会被计量,但不会计费。该行仍会被
记录 — 包括提供商的实际成本、你的模型以及 token 数量 — 并且会按零而非直接
丢弃进行计价,因为仅仅由于使用了你的密钥,就让某个模型从明细中消失,会让人
误以为“我们从未调用过它”。这些调用也会单独计数,因此,与实际调用量相邻的
$0 会得到解释,而不会看起来像是出错。使用自己的密钥不会改变套餐
所包含的内容。
它是如何构建的#
两本计费账簿,刻意不合并为一张表#
| 账簿 | 每行对应 | 关键字段 |
|---|---|---|
| 令牌账单 | 一次 LLM 调用 | 界面 (ai-chat、agent-chat、translate、embed、followups、title、other)、预算类别 (users、admin、translations、embeddings)、模型、提示词/补全/总令牌数、提供商费用、调用时冻结的加价、持续时间、会话 ID、自有密钥标志、估算价格标志;翻译还会添加语言、页面,以及重新翻译而非复用的区块数量 |
| MCP 调用账单 | 一次工具调用 | 工具名称、调用时冻结的计费类别、标价、持续时间、调用是否成功、执行该调用的后台运行 |
它们是分开的表,因为 MCP 调用没有令牌账单——它有名称、类别和固定标价——还因为很大一部分 MCP 调用(发现、列出你的项目)根本不属于任何项目。将这些调用记录到任意项目下,会产生虚构的归属,而使用情况图表随后会将其作为事实呈现。
调用如何定价#
- 以提供商自行报告的成本为准。 如果提供商返回了调用成本, 则原样使用该数值,并且该行不会标记为估算值。这一数值具有本地计算无法比拟的权威性, 因为它已经考虑了提示缓存折扣和执行过程中的价格变更。
- 否则,使用模型目录中的费率。 从响应中获取实际的提示词和补全令牌 数量,再分别乘以该模型每百万令牌的输入和输出费率。目录中包含十二种聊天模型及其各自的费率, 此外还有单独的嵌入模型目录。
- 无法识别的模型将采用有意偏高的后备费率,
并将该行标记为
estimated,这样每个界面都可以将其标记为猜测值, 而不是将其当作事实呈现。模型查找仅支持精确匹配,从不使用模糊匹配: 曾经就因为子字符串匹配,将一个-mini模型按其全尺寸同名模型计价。
随后会应用加价,并将其冻结到该行中,这样即使费率发生变化,历史记录也能保持准确。
令牌数量来自模型 API 自身的使用情况报告。Docsbook 不会根据文本长度对其进行估算。
厘分,以及至关重要的舍入#
提供商的成本以厘分存储——即一分钱的千分之一—— 因为一次廉价回答的成本只占一分钱的一小部分,而使用整分会将几乎每一行都舍入为零, 使明细图表产生误导。
实际从钱包中扣除的是整分。扣除金额会向下取整到整分, 并在项目上结转余数,因此一百次低于一分钱的回答最终会花费一分钱, 而不是被免除费用或被过度收费。 资金按以下顺序使用:先使用试用额度,然后是每月额度, 最后是任何一次性余额。
一个你可以在屏幕上看到的结果。记录在该次调用中实际从钱包扣除金额的列,
在几乎每一行中都是 0,因为低于一分钱的调用只会移动结转金额。
因此,较新的界面——支出磁贴和使用情况视图——会根据提供商成本和冻结的加价,
重新计算每一行的标价,而不是对该列求和;另外两个较旧的界面仍会对其求和。
当两者不一致时,重新计算出的数值更为可信。
余额用尽时会发生什么#
Docsbook 采用按需付费模式。余额不会自动补充,余额用尽时,您的网站不会发生任何变化——只有 AI 工作会停止,而且会在能够自我说明原因的地方停止:
| 场景 | 会发生什么 |
|---|---|
| 读者聊天 | 请求会在模型运行前被拒绝,并返回原因代码,而不是生成错误的回答 |
| 管理代理循环 | 会在循环开始前以及每次迭代之前进行检查,因此一次较长的操作不会在执行过程中耗尽剩余余额 |
| 代理运行 | 该运行会被记录为失败,并显示一条面向用户的说明——余额已用尽,充值后,它会在下次触发时再次运行 |
| 批量翻译 | 任务会停止并明确说明原因;剩余页面不会被翻译,而不是被静默跳过 |
| 语义索引 | 任务记录甚至还未打开前,请求就会被拒绝 |
| MCP 工具 | 返回结构化拒绝信息,其中会说明工具、计费类别、项目、每次调用的价格、剩余余额以及充值链接。发现工具仍可继续使用 |
由于这些是检查而不是预留,钱包最多只能在余额归零后再进行一次调用;下一次调用会被安全拒绝。
超额用量是硬性停止之外的另一种选择,但它仅限主动启用且仅适用于付费方案。它设有上限,按固定间隔计费,并会在用量达到上限的 75%、85%、90%、95% 和 100% 时,通过 用量 Webhook向您发出预警。翻译和语义索引刻意不会使用超额用量:索引运行是一项规模较大、经过明确发起且可取消的操作,悄悄将其转为超额账单是不合理的。
聊天页面#
聊天页面报告了您的助手被询问的内容以及回答所产生的成本,数据来自一组没有区间控制的对话——因此卡片及其下方的列表不可能描述不同的数据集。
| 卡片 | 含义 |
|---|---|
| 收入 | 使用聊天功能的读者所带来的价值,按每位读者计数一次,采用与目标和潜在客户列相同的口径 |
| 成本 | 在相同时间范围内运行聊天功能产生的费用,数据来自使用情况账本 |
| 节省 | 通过已回答的对话避免的支持成本——这是估算值,采用单一的行业默认工单费率,而不是您实际测得的成本 |
| 问题 | 读者发起的聊天线程数 |
| 已回答 | 在模型重新阅读对话记录后,判断读者确实获得回答的对话所占比例 |
“已回答”基于阅读,而不是推断。 较早使用的信号——引用点击、点赞或外链点击——是一种在两个方向上都可能出错的代理指标:获得完美答案但未点击任何内容的读者会被标记为未评级,而点击了引用页面却没有阅读的读者会被标记为已回答。现在会由单独的模型流程阅读每份对话记录。判定结果只写入一次并重复使用,而且每次页面加载只会判断少量新对话,因此该数值会在几次访问后逐渐填充,而不会导致首次加载超时。少于五个已判定对话时,卡片会回退到较早的读取方式,并对此进行说明。仍在等待判定的对话会显示为未判定,绝不会显示为未回答。
将鼠标悬停在卡片上,可以查看该卡片最近 24 小时的数据(如果有);“已回答”显示的是数量(“2 of 3”),而不是百分比,因为在单日范围内,每个对话都会使百分比按整个百分点波动。收入和成本没有单独的日数据——两者都按屏幕上已有的时间范围读取。
为什么这是正确的方法#
| 规则 | 原因 | 来源 |
|---|---|---|
| 优先采用提供商报告的成本,而不是本地推导的成本 | OpenRouter 将 cost 字段返回为“向您的账户收取的总金额”,同时提供 cost_details.upstream_inference_cost——“上游 AI 提供商实际收取的成本”。本地重新推导无法得知这两者中的任何一个 |
OpenRouter:用量核算 |
| 只要应用了缓存,根据令牌数量重新推导的价格就是错误的 | OpenAI 会按照“针对重复使用的令牌采用模型降低后的缓存输入费率,折扣最高可达 90%”为重复使用的提示令牌计费,并在响应的用量详情中单独报告 | OpenAI:提示缓存 |
| 按调用次数统计工具调用,并记录失败调用 | MCP 规范将速率限制交由服务器负责——服务器“必须……限制工具调用的速率”——并要求客户端“记录工具使用情况以供审计”。只记录成功调用的账本将无法满足其中任何一项 | MCP 规范:工具 |
| 以低于一美分的精度存储低于一美分的金额 | 这里每次调用的真实金额都只是几分之一美分;在录入时进行四舍五入,会让实际一天的支出变成 $0 |
机制,本页 |
限制与未决问题#
- 无法按提供商细分支出。账本记录的是模型,而不是其背后的供应商,因此如今产品无法回答“有多少费用支付给了 Anthropic”这样的问题。
- 目前还无法在令牌账本中查看每次代理运行的支出。MCP 行记录了执行它们的运行;令牌行只携带一个自由格式的对话 ID,因此代理的模型费用是按对话而不是按运行进行归组的。
- 标记为
estimated的行是猜测值,并且回退费率被有意设置得很高。目录之外的模型会被有意按悲观方式定价——对于一个无人定价的模型,向客户少收费是更糟糕的错误——因此估算行是上限,而不是测量值。 - 两个较旧的页面仍然会汇总扣除美分列,因此会少报那些调用费用大多低于一美分的项目。支出磁贴和使用情况视图会改为重新计算列表价格。如果两个支出数值不一致,原因就在这里。
- 节省金额是估算值,并且会明确标注为估算值。它将已回答的对话数乘以行业默认的支持工单成本。它不是你的支持成本,而 Docsbook 也没有测量过你的实际成本。
- 使用自有密钥产生的支出不会以金额显示。这些调用会显示调用量、模型构成和令牌数量,并且
$0。它们实际给你带来的费用会体现在你的提供商账单上。 - 报告和保留时长并不相同。面板最多显示 30 天的使用情况,与读者分析数据的截止范围一致。AI 账本本身会保留 90 天——额外的时间余量用于确保有争议的账单仍可重建——并且每天进行清理。目前 MCP 调用行完全不会被清理,这就是按工具查看的范围是全部历史记录的原因。
- 问题在于:“节省”和“收入”是模型,“成本”则是测量值。可以验证的是账本:运行了哪个模型、提供商收取了什么费用、从余额中扣除了什么。无法从这些数据验证的是:一个已回答的问题是否原本会变成支持工单,或者使用聊天功能的读者是否原本不会购买。应将两个流入资金的数值视为读者之间的排名,而绝不要将其视为现金。
哪个计划#
面向读者的助手、代理运行和自动翻译是会消耗 Docsbook 服务商密钥费用的功能,也就是付费功能。本页面上的其他所有功能——账本、明细、模型选择器、自带密钥以及 MCP——在每个计划中都可用;尤其是 MCP 完全不受计划限制:唯一的限制是费用。当前的计划和费率请参阅定价页面。
查找位置#
- 随时间变化的支出,位于流量旁边 — 分析概览中的支出磁贴。
- 资金花在了什么上 — Usage 视图:按界面、类别和模型查看 AI;按工具和类别查看 MCP;已定价但未收费的事件。时间窗口为 24 小时、7 天和 30 天。
- 聊天中被询问了什么以及花费了多少 — 管理员侧边栏中的 Chat 行;打开一个对话即可查看其转录内容和单独的 费用明细。
- 来自代理 —
get_ai_usage,通过 MCP。