纯API调用,最好用的LLM WebUI非LibreChat莫属。
背景
过年期间在家寻找好用的LLM WebUI。本以为是一件容易事情,LLM这么火,少不了好用的LLM框架。
结果被各种框架喂了一星期的屎,最后屎里淘金终于找到了一个轻量好用的LLM WebUI框架LibreChat,个中酸楚不足为外人道……
要求
- 纯API调用,不运行本地模型
- 聊天回复快,不能太卡
- 支持数据库跨端聊天
- 支持认证,要开放到公网
- 轻量级,内存占用越低越好
- (最好有)多用户隔离
- (最好有)知识库、RAG等功能但不要占用太多内存
- (最好有)插件系统,支持联网搜索等
本以为这只是最基础的合理要求,没想到市面上的卧龙凤雏就连最基本的聊天功能都做不好!
横评
AnythingLLM
- 逆天指数
★★★★☆ - 内存占用
~500MiB - 优点
无从谈起,根本没用上 缺点
- 流程逆天
开局强制配置API KEY,否则进不去主页面(我就没进去)。 - 功能不全
配置OPENAI的API必须是官方API,不能自定义Endpoint。 - 老设备没人权
文档没提示配置要求,但真正运行起来会莫名报错。一番查询最后才发现,这个框架完全不兼容不支持AVX2指令的旧CPU,且没有任何备选方案。欣赏一下Issues中其他用户的吐槽。
- 流程逆天
Lobe Chat
- 逆天指数
★★★★★ - 内存占用
~600MiB 优点
- 操作习惯
国人开发的框架,UI最符合国人习惯。 - 配置页面
API KEY配置方便,有多种插件可选。 - 多用户
支持多用户,但每个用户需要自行配置API KEY。 - Serverless
支持Serverless方式在Vercel+Cloudflare上免费部署。 - 功能全面
支持插件商店,支持计费。
- 操作习惯
缺点
- 部署困难
无内置鉴权,想正确部署需要数十个环境变量。如果有洁癖不想在服务器上运行奇怪的.sh脚本,还想用docker compose便捷管理容器,没一整天功夫根本跑不起来。 - 内存占用高
过去以轻量化、内存占用低而受欢迎的框架,现在光本地运行起来就要600MiB内存。 - 界面花哨
大量运用花哨特效不顾用户体验,在被喷后精简了部分特效的情况下仍然非常卡顿,浏览器内存占用数G并可能有内存泄漏问题。 - Serverless鸡肋
支持Serverless部署,但Vercel的免费容量也就够0.5个用户的日常使用。 - 功能失效
中止模型输出的按钮点击无效,不是反应慢而是完全停不下来。最夸张的一次遇到了Deepseek R1抽风,一次性深度思考了几十万字都停不下来,单一条回复就烧了3块钱…… - 响应迟缓
设置里支持从不走后端转发而直接浏览器端发送。但无论怎么设置仍然响应迟缓,比正常的响应至少慢8秒,相较于Dify和LibreChat慢的一批,不知道在卡什么。 - 逆天Bug
后端反复拉取Github Changelog无法禁用,还不能简单地全局代理,否则所有API Endpoint都会走代理更慢。作者还觉得一切正常不打算修。更离谱的是在大陆部署,拉不到Github Changelog就会让前端页面加载卡死。并非是Changelog那一小部分区域卡死,而是整个页面请求失败,甚至静态资源请求超时(SSR)。
- 部署困难
幽默官方甚至觉得SSR能加速页面响应:
为了优化性能,LobeChat使用了Next.js的SSR功能,实现了快速的页面加载和响应时间。
这么复杂的页面让SSR来算?我看正是因为用了SSR才导致连静态资源都超时,才导致页面这么卡!
本来以为Serverless加载慢是正常的,换本地部署就快了。结果没想到在本地连Serverless也不如,能打开首页就算胜利。
Dify
- 逆天指数
★☆☆☆☆ - 内存占用
~2GiB 优点
- 支持可视化工作流构建。
- 支持API调用。
- 支持批量调用。
- 支持嵌入为其他网页的Widget聊天。
- 插件支持较好。
- 聊天响应快,非常快。
缺点
(针对旧版本v0.7.3 20240903,新版情况可能已经发生变化)
Dify是工作流框架,不是LLM WebUI,不是一个赛道,但当作WebUI也能用。- 内存占用高
和聊天不相干的功能太多导致内存占用太高。 - 聊天能力差
重写、重新生成、分叉等聊天功能都没有。 - 无移动端适配
手机用不了,或者说勉强能用。 - 无用户隔离
为了推它的商业版阉割了多用户隔离功能,除了聊天记录以外所有用户都共享。API不支持多渠道,想添加多个API渠道只能在前面套一层One API做渠道聚合、模型重命名、请求转发。
- 内存占用高
Open WebUI
- 逆天指数
★★★☆☆ - 内存占用
~500MiB 优点
勉强能用,同行衬托下也勉强算及格。- 聊天
支持重写,支持同时跟多个模型聊天。 - 多用户
支持多用户,支持用户组配置模型访问权限。
- 聊天
缺点
- 内存占用高
强行集成Ollama、RAG,镜像和内存占用非常大。 - 响应迟缓
界面的所有按钮都慢半拍。其他功能也就罢了,核心的聊天延迟5秒起步,就算是Python写的也不至于这么卡。对比Dify、LibreChat根本没得玩。一个搞聊天的框架,核心功能这么卡还搞什么Ollama、RAG,真是舍本逐末。 - 权限难配置
支持用户组配置模型访问权限,但不能根据渠道统一配置,只能手动逐个模型配置,配合慢半拍的界面真是食屎级体验。 - 提示词不足
对聊天标题进行AI总结的提示词没有国际化,会总结出英文标题。需要自行设置提示词来覆盖默认提示词。
- 内存占用高
LibreChat
- 逆天指数
☆☆☆☆☆ - 内存占用
(稳定后)200~300MiB 优点
LLM WebUI界唯一真神。- 轻量化
不往镜像里强行塞垃圾,每个独特功能(DB/全文搜索/RAG/Vector DB)都各自独立镜像,不需要可以直接砍。全部署600MiB内存,稳定后就300MiB内存,最简部署就200MiB内存。Node.JS技术栈,估计换Deno还能更省内存更快。 - 聊天功能丰富
支持重写、支持重新生成、支持续写、支持聊天的树状分叉……在聊天方面功能属所有框架最全。 - 功能简洁
界面简洁,没有花里胡哨的特效导致卡顿。专注核心聊天需求,也能兼容Ollama等API接入(本来正确的思路就是提供OpenAI兼容API接入,而不是往镜像里塞Ollama的垃圾) - 速度快
聊天响应非常快。界面操作略慢但也还可以。 - 文档清晰
框架依赖的MongoDB新版同样需要支持AVX2指令的CPU,但文档中明确提示可以替换为旧版MongoDB,运行一切正常。
- 轻量化
缺点
- 无用户隔离
支持多用户登录但没有权限系统,内置的渠道被所有用户共享。 - 插件少
插件功能有点弱,提供的插件数量较少。 - 配置门槛高
渠道配置有一点复杂但不繁琐,得通过配置文件设置,需要找到好的模板对照修改。通过WebUI无法配置第三方渠道,但通过配置文件设置之后挺好用。
- 无用户隔离