求一个发送BV号,返回视频内容总结的插件

今天看到了个这个,感觉很好玩。请求b站视频的AI字幕,然后送入gpt-3.5-turbo总结内容,然后再返回。

b站很多视频是自带AI字幕的,直接调就可以。
QQ截图20230307152354

2 个赞

好创意!紫薯布丁

1 个赞

接单了,今天做<紫薯布丁>

3 个赞

谢谢大佬!紫薯布丁

1 个赞

发版了 0.0.1,来验收一下

2 个赞

配个图

2 个赞

换个图

3 个赞

十分感谢。
目前有个bug就是有些视频没有AI字幕就会报错

2023-03-09 09:29:55 [W] app Error: Invalid parameters
                            at RrGpt.ask (C:\Users\allegray\koishi-bot\koishi-app6\plugins\rr-gpt\lib\index.js:30:19)
                            at _Command.<anonymous> (C:\Users\allegray\koishi-bot\koishi-app6\plugins\bibigpt\lib\index.js:25:17)
                            at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
                            at async Array.<anonymous> (C:\Users\allegray\koishi-bot\koishi-app6\node_modules\@koishijs\core\lib\index.cjs:1631:14)
                            at async _Command.execute (C:\Users\allegray\koishi-bot\koishi-app6\node_modules\@koishijs\core\lib\index.cjs:1646:22)
                            at async C:\Users\allegray\koishi-bot\koishi-app6\node_modules\@koishijs\core\lib\index.cjs:2188:22
                            at async Session2.withScope (C:\Users\allegray\koishi-bot\koishi-app6\node_modules\@koishijs\core\lib\index.cjs:2071:14)
                            at async next (C:\Users\allegray\koishi-bot\koishi-app6\node_modules\@koishijs\core\lib\index.cjs:853:16)
                            at async next (C:\Users\allegray\koishi-bot\koishi-app6\node_modules\@koishijs\core\lib\index.cjs:853:16)
                            at async Processor._handleMessage (C:\Users\allegray\koishi-bot\koishi-app6\node_modules\@koishijs\core\lib\index.cjs:864:22)
2023-03-09 09:29:55 [E] app Error: Invalid parameters
                            at RrGpt.ask (C:\Users\allegray\koishi-bot\koishi-app6\plugins\rr-gpt\lib\index.js:30:19)
                            at _Command.<anonymous> (C:\Users\allegray\koishi-bot\koishi-app6\plugins\bibigpt\lib\index.js:25:17)
                            at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
                            at async Array.<anonymous> (C:\Users\allegray\koishi-bot\koishi-app6\node_modules\@koishijs\core\lib\index.cjs:1631:14)
                            at async _Command.execute (C:\Users\allegray\koishi-bot\koishi-app6\node_modules\@koishijs\core\lib\index.cjs:1646:22)
                            at async C:\Users\allegray\koishi-bot\koishi-app6\node_modules\@koishijs\core\lib\index.cjs:2188:22
                            at async Session2.withScope (C:\Users\allegray\koishi-bot\koishi-app6\node_modules\@koishijs\core\lib\index.cjs:2071:14)
                            at async next (C:\Users\allegray\koishi-bot\koishi-app6\node_modules\@koishijs\core\lib\index.cjs:853:16)
                            at async next (C:\Users\allegray\koishi-bot\koishi-app6\node_modules\@koishijs\core\lib\index.cjs:853:16)
                            at async Processor._handleMessage (C:\Users\allegray\koishi-bot\koishi-app6\node_modules\@koishijs\core\lib\index.cjs:864:22)

比如这个视频:

还有就是有时候似乎是没连上你的服务器,会报这个错:

2023-03-09 09:31:35 [W] app AxiosError: timeout of 60000ms exceeded
                            at RedirectableRequest.handleRequestTimeout (C:\Users\allegray\koishi-bot\koishi-app6\node_modules\axios\dist\node\axios.cjs:2504:16)
                            at RedirectableRequest.emit (node:events:513:28)
                            at Timeout.<anonymous> (C:\Users\allegray\koishi-bot\koishi-app6\node_modules\follow-redirects\index.js:169:12)
                            at listOnTimeout (node:internal/timers:564:17)
                            at process.processTimers (node:internal/timers:507:7)
2023-03-09 09:31:35 [E] app AxiosError: timeout of 60000ms exceeded
                            at RedirectableRequest.handleRequestTimeout (C:\Users\allegray\koishi-bot\koishi-app6\node_modules\axios\dist\node\axios.cjs:2504:16)
                            at RedirectableRequest.emit (node:events:513:28)
                            at Timeout.<anonymous> (C:\Users\allegray\koishi-bot\koishi-app6\node_modules\follow-redirects\index.js:169:12)
                            at listOnTimeout (node:internal/timers:564:17)
                            at process.processTimers (node:internal/timers:507:7)

还有就是只要报错就会重启整个koishi,不知道是不是预期。

还有就是有时候视频是中文的却会返回英文总结:

另外我现在的koishi有bug,升级koishi到4.11.9会报错,而你现在的插件要求最低4.11.9,所以我是从npm上把代码扒下来然后手动把koishi改成^4.11.8的,不知道这有没有什么影响。

1 个赞

插件市场不兼容不能强行安装嘛,印象里可以

1 个赞

啊我没试过。等有空了我建个新项目试试。

1 个赞

可以直接装,完全没问题

1 个赞

对的,错误处理没写对,然后有时需要超过60秒才返回,结果超时了,然后超长的查询会炸我后端,一会更新

1 个赞

不是预期,这个我没试出来过

1 个赞

发现了一个bug。当字幕过长超过qq允许的上限时会发送失败。比如执行 biligpt -s BV1Nv4y147RZ 会报

2023-03-10 11:05:42 [W] session Error: Error with request send_group_msg, args: {"group_id":"767320659","message":[{"type":"text","data":{"text":"0:00 好朋友们大家好\n0:01 我们今天继续下盘棋\n0:02 这盘棋我是白棋\n0:04 对手是一位六段\n0:10 先点角\n0:14 飞出\n0:18 他尖顶尖顶\n0:19 我就长一个\n0:23 他走这个走这个我就守个脚吧\n0:30 不着急走\n0:32 这肯定夹击\n0:39 他点掉点掉的话\n0:41 这个定式局部应该是白棋稍好嗯\n0:46 对这个棋\n0:47 白棋能爬过白棋是不错的\n0:52 嗯这样干脆呢\n0:54 下面考虑拆一个\n0:57 或者是直接碰上来也可以\n1:02 碰这个其实碰另外另外一个也行\n1:05 他走这个\n1:09 我就碰了碰了单连班啊\n1:13 这个形状\n1:16 当年班啊打吃\n1:18 我接住他\n1:19 这样怎么办呢\n1:22 嗯他只能这样走\n1:23 他这样走\n1:23 明显是我赚了\n1:29 这样肯定是我 赚了差一个\n1:35 差异感觉一般\n1:39 下面漏风\n1:42 漏风\n1:45 走一个吧\n1:46 这个拆一个\n1:48 他漏风也得拆\n1:52 又不知道下 什么\n1:56 让他出招吧\n1:59 扎一个扎一个\n2:03 太小了\n2:03 赶紧把这个扳粘掉\n2:07 免得被他搬砖\n2:09 他搬砖还是先手\n2:11  这样我还瞄着家的味道嗯\n2:14 这期出头\n2:17 这个棋不要紧\n2:19 他攻我对他比较难攻\n2:24 肩顶太俗了\n2:25 把脚守住吧\n2:26 这时候不可能去加糖啊\n2:28 把脚守住\n2:30 让他自己在那跳舞吧\n2:35 嗯就搬一个\n2:41 这个其实不用太纠缠啊\n2:46 连班第一杆\n2:47 连班\n2:51 行不行啊\n3:03 应该是可以应该是可以\n3:08 应该是可以\n3:11 他如果乱打吃的话\n3:14 它转换不便宜\n3:19 我就连扳\n3:24 他接住呢\n3:25 我也接住\n3:33 ...
e\lib\index.cjs:2080:14)
                            at async next (C:\Users\allegray\koishi-bot\koishi-app7\node_modules\@koishijs\core\lib\index.cjs:853:16)
                            at async next (C:\Users\allegray\koishi-bot\koishi-app7\node_modules\@koishijs\core\lib\index.cjs:853:16)

如果视频足够长,则总结应该也可能会超上限,虽然我还没实现过这个错。
手动试了一下,QQ每条消息最长4500个字,一个汉字、一个换行、一个字母都算是一个字。

1 个赞

请求openai api有时会报错,我加了个每次请求之间等待一秒,感觉好像有改善,不确定。然后还加了个try,把报错的分段跳过,本来是想写报错就重新请求,害怕陷入死循环,所以写成了报错就把这段跳过。

1 个赞

你觉得怎么返回会比较好呢,合并转发,或者图片
个人比较喜欢图片形式返回

1 个赞

请求模型部分我会重写的,后续会是并发请求。然后我还没有测试多长会被拒绝,晚点试试或者你试试

原作者的方案是计算字节级别大小,然后限制到 7000byte 好像,你可以看看原项目的方案

1 个赞

我比较喜欢合并转发,因为感觉如果字太多的话图片会比较费眼睛(
合并转发相比普通的发送文本还有个好处是防止刷屏,今天我有群友试了一个50分钟的视频,bot发了个超长的总结,有点刷屏了。

1 个赞

是指prompt多长openai会拒绝吗?
openai的文档说每次请求最多4096个token,如果提问的token太长的话回复有可能会被截断。我的理解是提问和回复的总长度不能超过4096个token。

2 个赞

那就需要嵌入一个 tokenlizer 了,你看看有没有现成的包,我做进去

python 里是有的,node 里你能帮忙找一下吗

1 个赞