☰
HaloWebUI模型计费与用量统计深度解析:Token消耗与成本核算一篇讲透
2026/10/15 16:57:42 网站建设 项目流程

【免费下载链接】HaloWebUI

基于官方OpenWebUI,汉化界面提高中文使用体验,增加了模型计费和用量统计

项目地址:https://gitcode.com/gh_mirrors/ha/HaloWebUI
点击查看免费下载

HaloWebUI 是一款基于 Open WebUI 深度定制的自托管大模型管理平台,界面全面汉化,其中最实用的能力之一就是模型计费与用量统计:它把每次对话的 Token 消耗完整落库,再按模型、按用户、按天三个维度聚合,让团队能准确核算大模型调用成本。本文带你从零看懂这套机制:数据从哪来、在界面上怎么看、最终怎么换算成钱。

为什么需要 Token 用量统计与成本核算 💡

同时接入多个大模型(Ollama、OpenAI 兼容接口、Anthropic Claude、Google Gemini、智谱 GLM 等)时,每次调用都会产生真实的 API 费用。如果平台本身不记录用量,管理员只能翻上游账单"对暗号"。HaloWebUI 的做法是:

  • 消息级:每条 AI 回复记录输入/输出 Token 数;
  • 管理端:自动聚合成日趋势、模型排行、用户排行;
  • 核算级:导出 Token 数据后,乘以单价即可得到成本报表。

数据来源:Token 消耗数据是怎么来的 📥

Token 用量并不是 HaloWebUI 自己"估算"的,而是直接采用模型服务返回的usage字段:

  1. 流式请求需开启 usage 回传:对 OpenAI 兼容接口,HaloWebUI 会发送stream_options: { include_usage: true },接口返回末尾的用量信息才会包含 Token 统计(见中文文案 src/lib/i18n/locales/zh-CN/translation.json)。
  2. 多厂商字段自动归一化:不同厂商字段名不同,后端统一兼容处理,例如prompt_tokens/input_tokens/promptTokenCount(Gemini)都会被归一为"输入 Token",completion_tokens/output_tokens/candidatesTokenCount归一为"输出 Token",核心逻辑在 backend/open_webui/routers/analytics.py。
  3. 持久化到消息表:每条 assistant 消息的prompt_tokens、completion_tokens保存在ChatMessage表中(backend/open_webui/models/chats.py,建表迁移见 a1b2c3d4e5f6_add_chat_message_table.py),所有统计都是基于这张表的聚合查询。

还有一个贴心的自动补录机制:流式场景下消息内容可能先落库、Token 用量后到。查询统计时,_ensure_tokens_backfilled 会从会话历史中把缺失的用量自动补回消息表,保证报表不缺数。

聊天页:单条消息的 Token 消耗怎么看 👀

对话结束后,AI 回复底部会显示三个指标:速度(Token/秒)、消耗(Token 总数)、耗时,计算逻辑见 ResponseMessage.svelte。

把鼠标悬停在用量区域,还会弹出一张毛玻璃卡片,展示完整明细(formatUsageHtml):

明细项含义
总消耗本次回复的 Token 总数
输入 Token上下文 + 提示词占用的 Token
输出 Token模型生成的 Token
推理 Token思考型模型的思维链消耗
缓存 Token命中提示词缓存的部分

某项若上游未返回,会显示"未返回",不会硬凑数字,这一点在核算成本时很重要。

管理端:用量统计看板的四个维度 📊

管理员登录后可进入分析(Analytics)页面,由 src/lib/components/admin/Analytics.svelte 实现,对应接口封装在 src/lib/apis/analytics/index.ts。支持1~365 天时间范围选择,并可按分组过滤成员:

  • 总览:消息量、Token 用量、活跃度的每日趋势图;
  • 模型:按模型聚合消息数与 Token 消耗(GET /analytics/models,analytics.py),一眼看出哪个模型最"烧 Token";
  • 用户:按用户聚合活跃度与 Token 消耗(GET /analytics/users),方便分摊部门成本;
  • 数据清理:对选定模型的历史统计记录执行清理(POST /analytics/cleanup),先预览、再删除,避免误伤。

如何核算真实成本:Token 消耗 × 单价 💰

HaloWebUI 记录的是"用量","单价"来自你与上游服务商的约定。核算公式很简单:

成本 = Σ(输入 Token × 输入单价 + 输出 Token × 输出单价)

以一次"输入 2,000 Token、输出 800 Token"的回复为例(单价为示例值,请以实际账单为准):

项目Token 数示例单价金额
输入2,000¥15 / 百万 Token¥0.030
输出800¥60 / 百万 Token¥0.048
合计2,800—¥0.078

三个核算要点:

  1. 推理 Token 通常按输出计费:思考型模型的reasoning_tokens会显著推高成本,看板里的"输出 Token"已能反映整体水位;
  2. 缓存 Token 通常更便宜:命中提示词缓存的输入 Token 单价更低,长上下文场景下善用缓存可省钱;
  3. 警惕重复扣费:请求已发出但网络中断时,上游可能已完成计费。HaloWebUI 的错误提示也给出了对应建议——"先检查上游日志或计费记录,确认没有拿到结果后再重试或切换其他接口,避免重复扣费"。

配置与权限相关说明 ⚙️

  • 功能开关:管理端分析面板由环境变量ENABLE_ADMIN_ANALYTICS控制,默认开启,定义见 backend/open_webui/config.py;
  • 权限隔离:所有统计接口(含清理)均要求管理员权限,普通用户只能看到自己消息上的用量;
  • 时区友好:日趋势按本地时区切分日期(analytics.py),国内团队无需手动换算。

总结 ✅

HaloWebUI 的模型计费与用量统计链路非常清晰:上游 usage 字段 → 消息表落库(含自动补录)→ 聊天页明细展示 → 管理端三维聚合 → 单价换算成本。无论你是想给团队分摊 API 费用,还是单纯想知道"这个月到底烧了多少 Token",这套机制都能让你在分钟级完成成本核算。想进一步体验,可克隆仓库 https://link.gitcode.com/i/b7a750abbd11eccc70456b28d03d7d18 后按 INSTALLATION.md 部署,再配合 docs/ 目录下的官方文档快速上手。

【免费下载链接】HaloWebUI

基于官方OpenWebUI,汉化界面提高中文使用体验,增加了模型计费和用量统计

项目地址:https://gitcode.com/gh_mirrors/ha/HaloWebUI
点击查看免费下载

相关推荐

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询