最近课比较少,闲得无聊捣鼓了一下,省流效果如下
当然,此类QQ Bot大伙已经见过挺多了,唯一的差别就是使用了GPT3.5的API。各个功能调用并非是关键字检测,而是让GPT自己生成指令的结果,也就是说让Bot自己理解上下文中的内容,并以此自己去调用接口。
语音生成是用Vits,唱歌是用Vits-svc转换(包含人声分离+片段截取),下载歌曲和搜索功能使用爬虫技术完成,Bot后端使用MiraiGo。
重点是怎么让Bot自己去调用这些功能(当然类似于langChain之类的项目完成得更成熟,只是不支持中文,而且比较麻烦。前些天Visual ChatGPT的代码也是基于langChain)这里提供一个比较简单的办法。
我原先尝试过在传给api的system内容做修改,但效果不佳,很难让BOT学习到指令怎么用,后来发现传给api的整个messages其实是可以自己定义的,也就是自己伪造一份跟gpt对话的聊天记录发送过去,这样它这个语言生成模型就会按特定格式输出了。(这个方法也可以稳定绕过openai设定的伦理墙)
效果比预想之中的要稳定很多,而且拓展性很好。搜索功能是让gpt调用搜索引擎搜索内容,再反过来用system prompt喂给它,只要对于html的网页信息提取做得好,应该是可以达到类似于new bing的效果的。
除了集成功能外,还主要测试了一下如何让它成为一个真正的群聊Bot。目前的chat llm都是基于一问一答的场景上,对于群聊场景不太适应。如果改成手动at或者关键字触发,就会变成很无聊的手动调用。我尝试如法炮制用前面的方法让它对于跟自己无关的群聊信息就调用接口pass掉,只有叫到它它才出来说话,效果比我预想中也要好很多。现在的问题是它还只能对群聊信息做出回应,而不会主动分享或发表看法。
我本身也不是计算机科班学生,只是闲得无聊做着玩的。如果有人感兴趣的话就把工程开源发github上。