@Mitr-yuzr 很有道理,有些消息可以很明显地被判断出来不应被当做消息输入,收到这一类消息可以直接把概率变量置零;还有一部分消息具有明显的停止对话的意图,这一部分消息可以减少概率变量的值;另外还有一些消息很明显具有继续聊天的意图,它们可以更加显著地增加概率变量。
但是对一个消息使用简单的检测进行准确的判断比较困难,例如“你滚吧,我不想理你了”“你好,再见”这样同时包含两种不同的关键词的消息用简单匹配关键词的方式难以处理;“晚安”“我去洗澡了”之类的隐式地包含停止对话意图的消息则更加难以通过简单的方式来处理。
一个更好的方法是通过机器学习来判断,但我还没有学习过这方面的知识。
关于别名,Ai乌托邦已经实现了这个功能,我们只需要更改“提及”的包含范围即可。发送表情包的功能根据另外一个初创AI聊天应用“glow”的经验,会极大地影响体验,容易崩人设。
Touch-Night 发布的帖子
-
RE: CAIbot-连接ai乌托邦与qq聊天机器人
-
RE: CAIbot-连接ai乌托邦与qq聊天机器人
@Mitr-yuzr 这个“提及”指的是at,在写这一部分说明的时候一开始遵循了mirai插件开发文档中的说法,但是后面又忘了把at、@等说法统一为“提及”了。关于删除消息末尾的at,我当时确实没有考虑到电脑用户,于是就没有添加这个。
不过,将这个“提及”的范围从at扩大到使用正则匹配角色名确实是一个不错的想法,但是现在这个插件对所有收到的消息都会进行处理,而且它会把所有不同qq用户的输入当成是同一个Ai乌托邦用户的输入。这样,当消息的发送者来自不同的群聊时,会打乱ai的回复。扩大触发范围可能会增加误触发的可能性;
连续对话功能则更加可能导致这个问题。由于没有分群聊设置机器人的功能,当连续对话在某一个群聊被开启后,机器人收到的所有消息都会被当成同一个Ai乌托邦用户的消息输入,进而导致对话的紊乱和群聊秩序的混乱。
但是上述问题都可以解决。首先需要实现给每个群聊都设一个机器人开关;此外,也可以给每个给Ai乌托邦的消息输入加上包含发送者qq昵称的前缀,Ai乌托邦的AI应该能够正确地进行回复。
关于连续对话的实现我早已想过,现在设想的方案是:设置一个随时间递减的变量来作为机器人的回复概率。每收到一条消息,这个变量增加随该变量变化而变化的一定值,而包含“提及”的消息会把这个变量直接置为一。这个变量对于不同的qq用户来说应该是不尽相同的。此外我也想让机器人的回复不全是引用回复,还想给机器人加入根据待回复文本长度来确定的一定量延迟时间来模拟真人的感觉......总之想法有很多,但是因为能力原因没办法一次性加入进去。
感谢你的关注和支持,这是我的第一个mirai插件,也是我第一次使用java语言,在程序中包含了很多不规范的写法和能够得到优化的代码。因为本人能力原因无法将其规范并优化,希望有能人可以完成一些工作并提交pr,当不甚感激。 -
RE: CAIbot-连接ai乌托邦与qq聊天机器人
@Touch-Night 在 CAIbot-连接ai乌托邦与qq聊天机器人 中说:
@h7180705 诶等下,ai乌托邦出了api了但是通过网页抓包生造的api居然还能用,我再找找看在哪里能获取这个id
找到了,一会更新帖子
-
RE: CAIbot-连接ai乌托邦与qq聊天机器人
@h7180705 用装了mirai开发插件的Idea打开pull到本地的项目,点击右上角的run with mirai console,之后就会编译运行一遍,再关闭程序,就可以在项目目录的build/mirai文件夹下找到编译完成的插件
-
CAIbot-连接ai乌托邦与qq聊天机器人
原本是针对Character.AI写的,但是遇到了我解决不了的问题相同的包只有用burpsuite发才有正常response,就改成现在这样了。
开源地址:https://github.com/Touch-Night/CAIbot
安装方法
1.进入Ai乌托邦,登录并挑选一个想做成机器人的角色,和ta聊一两句,保证ta出现在你的聊天列表中。
2.在登录后右键,检查,
选中应用程序选单中存储
一栏下的本地存储
,在里面可以得到你的ACCESS_TOKEN
这个可以先不管,后面可以直接扫二维码登录自动获取TOKEN
,之后,选中网络
一栏以开启网页监听,向角色发送一条消息,在下方记录的日志中找到名称
一栏,选择其中的sendChat
一项,在右边的预览
一栏中的第三行(开头为data:
),可以看到roleId:
,它后面的数字就是角色Id
3.在此处下载插件:release
4.将它放到plugins文件夹中
5.运行一遍生成配置文件,配置文件在Config文件夹中,文件名为CAIconf.properties
6.停止运行mirai,编辑好上述配置文件。其中,Authorization
为你的密钥
Id
为对应角色的ID
CommandPrefix
为指令前缀
InitAdmin
为唯一的初始超级管理员,拥有最高权限,且只能通过修改配置文件来变更
Admins
为指定的其他管理员,使用英文半角逗号分隔想要设为管理员的qq号
NoPower
为权限不足时的提示词7.重新运行mirai。
8.建议第一次使用时先/微信登录
指令
/重启对话
重置聊天,从头开始
/重设ID newID
将newID对应的角色与机器人连接,当角色不在前述聊天列表中时,机器人将会提醒你截图待更新
/重设密钥 newAuth
旧的密钥过期后,将密钥更新为newAuth自带防刷屏
/重设命令前缀 newPrefix
将指令前缀设为newPrefix之前坏掉了,原来是我变量名写错了,哈哈
/重发消息
重新生成一条回复
/微信登录
获得微信登录二维码,用微信通过摄像头扫描后自动获取TOKEN
/添加管理员 <member>
将<member>设为管理员,<member>的输入可以用@,也可以用qq号
/移除管理员 <member>
撤销<member>的管理员身份,<member>的输入可以用@,也可以用qq号
/重设权限不够时的回复 <String>
让机器人在权限不足的人使用指令时以<String>回复
其中重设ID、重设密钥、重设权限不够时的回复为管理员指令
重设命令前缀、添加管理员、移除管理员为超级管理员指令
使用方法
1.在聊天内容中包含提及机器人会使得这条消息被当成消息输入。当@在消息的开头时,它会被删去;当@在消息的中间时,它会被替换成当前角色ID对应的角色名。
2.在聊天内容中包含指令可执行对应指令。
Tips
0.1.0版本的用户在使用0.2.0版本时应删除配置文件,重新生成配置文件并配置。
未来计划
1.完全改成使用官方提供的api实现Ai乌托邦的消息获取