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 21 小时 13 分钟前 via Android
支持,用过你的 cws ,感谢 op
|
2
lovestudykid 16 小时 58 分钟前
配置文件可以在 GUI 设置吗,或者用 API 自动获取,一个个填太傻了
|
3
lovestudykid 16 小时 12 分钟前
@lovestudykid 另外可以适配下 Perplexity 么,把 citation 拼接到回复中
|
![]() |
4
awkamo OP @lovestudykid 目前暂时没精力做 GUI 。perplexity 适配这个可以有👀
|