开发NeatChat基于一些巧合
不管现在其他webui都强大到什么地步了,属于NC(NextChat或者NeatChat)的改进该做还是得做,对于服务器性能较弱的用户,或者Vercel平台,NC仍然有它自己的价值。
我在NeatChat的v1.1.17版本新增了获取模型列表的功能,此版本也顺带恢复了对官方FC插件的支持。从上游获取模型这个功能可能对于其他webui来说仅仅是一个不起眼的按钮,但是对于NC却有很大的意义。
我觉得官方原来的CUSTOM_MODELS变量不够优雅,这个问题来源于这里【更新至v1.1.18】已去除所有NextChat广告内容,还你一个更清爽的NeatChat(精简优化版) - #338,来自 holzora
现在我把这个变量从服务端同步到客户端,你仍然可以像之前那样在服务器上设置变量,但是最终是以客户端的自定义变量为准:
在此基础上,我在右侧加了一个按钮,这个按钮主要的逻辑就是修改从服务端传递到客户端的CUSTOM_MODELS变量。如果你在服务端设置了BASE_URL和OPENAI_API_KEY,它就会从服务端请求模型列表(openai格式),如果你勾选了自定义接口:
它也会从客户端请求模型列表。
获取到模型列表之后,就会存在本地,后续直接从缓存中读取:
你可以点击重新获取模型以刷新本地缓存。
最下方你也可以自定义模型名,这对于一些不支持从api获取模型列表的逆向项目是有用的:
最重要的一点,我重新定义了CUSTOM_MODELS中@之后的变量,原来你可以使用gpt-4o@OpenAI,其中OpenAI作为provides存在,也约束了请求方式是openai格式,但是当后来越来越多的模型都以openai格式作为规范,再@openai就显得很奇怪,也会出现一些问题。现在,我建议在我的版本中,使用@模型类别这个方式来约束模型。(当然原来的方式仍然保留,只是扩充了@的用法)
当然你不用自己操作,客户端我已经做了自动配置,我只是建议在服务端设置变量的时候就@类别,后续我将围绕这个类别做一些更新。(后面我会在我的仓库中更新具体的类别)
模型会根据@的类别去匹配相应的头像,从此,你再也不用担心有些模型的头像匹配不上了,也省去了开发者后续适配很多小模型的功夫。
这是因为客户端可以自己修改匹配规则,每个关键词以|分割:
匹配相应规则之后,对应的模型就根据@之后的类别去显示头像,即使你是gpt模型,只要@DeepSeek,也将会有DeepSeek的头像,这样举例是为了说明客户端具有完全自由的控制权,而不必去修改服务端。
后续我还会在获取模型列表的位置加上模型的subtitle,或者给模型加tag等功能,这是我从QAbot-zh/ChatGPT-Next-Web看到的一些创意,这也是另外一个很优秀的NC二创仓库。
除了可以获取模型列表,NeatChat还有引用Lobe Icons、兼容官方插件、完全适配折叠思考、手机端UI优化等不错的特性。(当然这个版本还暂未完成)
此版本可能还有一些问题,不过大体上已经完善,欢迎各位NC用户参观我的仓库进行部署或者提交PR(readme已很久没有更新,请勿在意)。
后续如果还有时间,我就主要研究NC适配RAG的可能性了,多用户登录和同步问题就稍稍搁置了。
=================================================================
v1.1.18最新进展,想着既然模型都列出来了,就顺手做个测试算了(目前仅支持客户端测试,服务端还暂不支持,后面会慢慢更新,另外此版本的移动端体验仍然是灾难 )
后面确定会支持多渠道,但是渠道太多了,我能维护的渠道可能也就几个,总不能塞个newapi进去吧