Open WebUI 功能很强大,但没有多用户计费功能,也就是说,不能追踪每个用户的用量,也不能实现按量计费。另外,如果要接入多个模型供应商,比如 Deepseek R1 就有火山引擎、阿里云等等,也不是那么方便。
现有的各种解决方案我看了都不满意,于是自己做了一个,分享给大家,目标场景是自用+小范围共享,可以很方便地管理多个来源的模型的计费配置,记录各个用户的用量,适合朋友/熟人/小团体之间使用。
地址: https://github.com/moeakwak/openwebui-omni-router-pipeline (求 star ~)
目前还没时间写详细的配置教程,也暂无 README ,wiki 里有一个简单的使用说明,可能需要你对 Open WebUI 比较了解才能用起来。
<think>
tag整个 Pipeline 使用 SQLite 存储数据。
每条消息可显示费用(这里使用了某个中转 API ,倍率设置成了 3.2 ,所以按照官方价格消耗了 0.000122 ,给用户扣费了 0.000392 ):
通过自助机器人查看用户最近的请求记录(管理员可查看全局最近的使用情况):
时间段内使用情况统计(仅供演示,简化了计费):
可以为模型供应商设置倍率,则一次 completion 的实际费用是 用量×模型价格×模型供应商倍率。这个和很多 API 中转站很像:例如说你想要以 RMB 结算,但是很多供应商是美元结算,你可以在模型里设置成官方的费用(比如输入$5 ,输出$15 ),然后在模型供应商上设置 7.3 的倍率,避免了手动换算汇率。你还可以设置成更低或更高的倍率,这样一来,同一个模型不用反复修改费用。
计费支持按量计费、按次计费等等。这里有一个例子(完整文件在 https://github.com/moeakwak/openwebui-omni-router-pipeline/blob/main/omni_router.yaml ):
providers: - key: OpenAI url: https://api.openai.com/v1 api_key: sk-xxx price_ratio: 7.3 # 倍率会影响该 provider 下所有模型的计费 - key: Deepseek url: https://api.deepseek.com/v1 api_key: sk-xxx price_ratio: 1 - key: OpenRouter url: https://openrouter.ai/api/v1 api_key: sk-or-v1-xxx price_ratio: 7.3 models: - code: gpt-4o-2024-11-20 provider: OpenAI human_name: GPT-4o-2024-11-20 prompt_price: 2.5 completion_price: 10 - code: anthropic/claude-3.5-sonnet provider: OpenRouter human_name: Claude-3.5-Sonnet (OpenRouter) prompt_price: 3 completion_price: 15 update_usage_via_openrouter_api: true # 启用后,会通过 OpenRouter 的 API 更新 usage ,得到一个精确的 cost 结果 - code: deepseek-reasoner provider: Deepseek human_name: Deepseek R1 (Official) prompt_price: 4 completion_price: 16 no_system_prompt: true # 不在请求中添加 system prompt - code: deepseek/deepseek-r1:free provider: OpenRouter human_name: Deepseek R1 (OpenRouter, free) prompt_price: 0 completion_price: 0 update_usage_via_openrouter_api: true include_reasoning: true extra_args: { "temperature": 0.6 } # 请求 payload 中的额外参数,会覆盖已有参数 no_system_prompt: true
见 wiki:简易配置指南(中文)
1 boleyn1992 231 天前 via Android 支持,用过你的 cws ,感谢 op |
2 lovestudykid 231 天前 配置文件可以在 GUI 设置吗,或者用 API 自动获取,一个个填太傻了 |
3 lovestudykid 231 天前 @lovestudykid 另外可以适配下 Perplexity 么,把 citation 拼接到回复中 |
![]() | 4 awkamo OP @lovestudykid 目前暂时没精力做 GUI 。perplexity 适配这个可以有 |
![]() | 5 x4gz 214 天前 |