Open TianYi0217 opened 1 year ago
把目录下的Dockerfile删掉,Railway自动识别如果有Dockerfile文件直接读取这个文件,如果没有Dockerfile才会根据你的代码重新构建
做成插件的话需要先获取 channel = e_context['channel'], 然后调用 channel._send()函数来实现。 因为vx的消息特性,本项目目前暂时还未计划支持stream方式的输出。 如果使用标点符号来split,我觉得效果应该就很好了,可能还需要体验对split的规则进行调优
删除Dockerfile文件后成功了,效果很棒😜
效果确实很棒!不知道能不能让gpt在回复完这次的内容之前不要回复下一次,不然被插话了后面的回复就会混在一起hhh
效果确实很棒!不知道能不能让gpt在回复完这次的内容之前不要回复下一次,不然被插话了后面的回复就会混在一起hhh
确实会混在一起呢,不过如果连续发消息的话,不改动这些也是会出现这种情况的。如果你期待更快的答复的话,修改或删除例子里的最后一行就应该能在第二次两次回复前把第一次的所有输出完。(不过我担心微信有没有对于很快的发消息是是机器人这种判定)
如何将https://github.com/LUMOXu/Spit_chatBot/blob/main/qqbot.py的部分代码加入本项目, 让ai回复更像人类.谢谢!
如何将https://github.com/LUMOXu/Spit_chatBot/blob/main/qqbot.py的部分代码加入本项目, 让ai回复更像人类.谢谢!
这个视频里面的代码的实现方式似乎与这个项目不同,在这个项目里,我把项目通过railway部署,并在我的仓库里删除了dockerfile文件(congxuma指出的),然后根据上面我给的代码修改了部分文件实现了类似的效果。如果你想要和对方想似的回复方式的话,我想你可以使用他的项目里的prompt.txt并让ChatGPT修改分割回复的方式
谢谢你的解答, 我是想如何让chatgpt不要每条群聊的信息都回复,而是想视频那样,建立一个缓存机制,达到多少条信息,才回复,不然不像人类.可以修改哪个文件达到这个目的呢?
@TianYi0217 很棒的主意!我也是由数字生命这个视频受到启发,正基于这些开源项目着手改进成一个更像人类的 Bot。看你的反馈是已经实现了吗?
@TianYi0217 很棒的主意!我也是由数字生命这个视频受到启发,正基于这些开源项目着手改进成一个更像人类的 Bot。看你的反馈是已经实现了吗?
你好,是的,已经实现了我提到的那部分了,只需要按照我描述的替换代码就可以了,效果像这样
这只是对这个项目很幼稚的一丢丢改变,让实用性降低了很多,而且面对不知道背景的人类用户的多条对话会分别回复超长多段,很出戏
不过关于我的更多的想法,比如按照项目介绍里构建插件和其他的部分,我还没有实现,而且期末周到了,我还在学海挣扎,如果你有兴趣可以试一试!
@Kevin-free 我看到的一个人类和Chatgpt4的辩论赛中使用的Azure语音和对流式回复的截取很厉害,看起来似乎是Chrome插件,也许你可以在这个方向看一看
@TianYi0217 很棒的主意!我也是由数字生命这个视频受到启发,正基于这些开源项目着手改进成一个更像人类的 Bot。看你的反馈是已经实现了吗?
你好,是的,已经实现了我提到的那部分了,只需要按照我描述的替换代码就可以了,效果像这样
![]()
这只是对这个项目很幼稚的一丢丢改变,让实用性降低了很多,而且面对不知道背景的人类用户的多条对话会分别回复超长多段,很出戏
不过关于我的更多的想法,比如按照项目介绍里构建插件和其他的部分,我还没有实现,而且期末周到了,我还在学海挣扎,如果你有兴趣可以试一试!
好的,感谢。
我是想实现类似 Spit_chatBot 模拟人类,让人类来辨真假的游戏。这应该会很有趣。
还在学校可要好好珍惜,等毕业了就是社畜咯 😹
好的,感谢。
我是想实现类似 Spit_chatBot 模拟人类,让人类来辨真假的游戏。这应该会很有趣。
还在学校可要好好珍惜,等毕业了就是社畜咯 😹
@Kevin-free 提到毕业过于惊悚了,已经摸鱼划水了三年了。刚刚参观了你的主页,意识到了自己的渺小,祝你造游戏顺利
好的,感谢。 我是想实现类似 Spit_chatBot 模拟人类,让人类来辨真假的游戏。这应该会很有趣。 还在学校可要好好珍惜,等毕业了就是社畜咯 😹
@Kevin-free 提到毕业过于惊悚了,已经摸鱼划水了三年了。刚刚参观了你的主页,意识到了自己的渺小,祝你造游戏顺利
看了你分享的人类和Chatgpt4的辩论赛,我知道其中使用的一个插件是voice-control-for-chatgpt。
AI 现在正处于高速发展的阶段,大家都是学习者,一起加油吧!也祝你学业顺利!
删除Dockerfile文件后成功了,效果很棒😜
老哥 我在wechat_message.py里加了代码好像没有用呀,
还有个问题,角色扮演如何在初始化的时候就生效呀。我把整个docker目录删了,在config.json中也自定义了character_desc,丢到服务器上启动后,无事发生
![]()
求指导Orz
@TianYi0217
@TianYi0217
你好,我的部署方式可能和你不同,我使用的是Railway部署的,参数设定也在Railway里面修改的,所以我并不完全理解你的问题
我刚刚把我克隆后修改的地方公开了,你可以在这里看chatgpt-on-wechat
另外,关于DockerFile,我想指的是根目录下的名为DockerFile的文件,而不是Docker目录
@TianYi0217
你好,我的部署方式可能和你不同,我使用的是Railway部署的,参数设定也在Railway里面修改的,所以我并不完全理解你的问题
我刚刚把我克隆后修改的地方公开了,你可以在这里看chatgpt-on-wechat
另外,关于DockerFile,我想指的是根目录下的名为DockerFile的文件,而不是Docker目录
老哥,这发送emojo 是怎么实现的呢
老哥,这发送emojo 是怎么实现的呢
在system prompt里面要求它使用emoji就可以啦
非常感谢!很受用!
根据以上大佬的信息,重新整理一下代码,做成了仓库:https://github.com/huihuihenqiang/wechat-simulate-human
根据以上大佬的信息,重新整理一下代码,做成了仓库:https://github.com/huihuihenqiang/wechat-simulate-human
我去,太牛了吧,圆我梦❤️,master写的太好了~
毕设弄完慢慢体验一下🎉
⚠️ 搜索是否存在类似issue
- [x] 我已经搜索过issues和disscussions,没有发现相似issue
总结
让机器人回复多条消息来模拟人类打字
- 对于收到的回复通过特定字符分割,达到多条回复的效果
- 或者prompt让输出结果用特定字符分开
或许有用的点子来获得更快回复
- 使用stream方式获取回复
- 当字符串中出现标点或特定字符的时候直接输出这之前的文本
- 删除缓存中的发送过的那部分文字
让没有使用基础的人使用的猜想
- 如果用户的输入极短或没有意义则等待用户的下一条消息
- 20秒内没有再次输入或者输入了“。”就拼接起来加上逗号请求api
举例
【我用ChatGPT创造了一个数字生命,在QQ群里伪装人类】 https://www.bilibili.com/video/BV1gm4y1C7oY/?share_source=copy_web&vd_source=00f5e74c5395223be70e39d15664e474
例如:",","。",","~","?"来分割语句多次回复,并且消除掉 ",","。","这两个标点,如果是"~","?"那么保留在分割语句的结尾。
接收端收到的消息是 "你好" "我是AI" "很高兴见到你~" "你有什么事情吗?" 四条消息,感觉会很棒
我的猜测是可以通过修改channel/wechat/wechat_message.py结尾的方法来实现,不过我在本地部署出现问题,只在Railway上使用得很爽,克隆项目并修改后发现没变化,好像是直接Docker获取的源项目的地址里的镜像吗? 我太菜了感觉做成插件的方式无从下手。
def send(self, reply: Reply, context: Context): receiver = context["receiver"] if reply.type == ReplyType.TEXT: # 分割标点符号 split_punctuation = [',', '。', ',', '~', '?'] # 需要被保留的标点符号 preserved_punctuation = ['~', '?'] # 创建一个正则表达式模式,用来分割消息 pattern = '|'.join(map(re.escape, split_punctuation)) # 使用正则表达式来分割消息 split_messages = re.split(pattern, reply.content) for msg in split_messages: # 移除消息中的标点符号,除了需要被保留的标点符号 for punc in split_punctuation: if punc not in preserved_punctuation: msg = msg.replace(punc, '') # 发送消息 itchat.send(msg, toUserName=receiver) logger.info("[WX] sendMsg={}, receiver={}".format(msg, receiver)) # 等待2秒 time.sleep(2)
动机
在看了这个视频后,我觉得可以通过某种方法让机器人的回复更像人类
在这里留个楼,不知道有没有大佬魔改,就是这个获取本地时间一同提示词prompt提交给大模型实现如图效果
⚠️ 搜索是否存在类似issue
总结
让机器人回复多条消息来模拟人类打字
或许有用的点子来获得更快回复
让没有使用基础的人使用的猜想
举例
【我用ChatGPT创造了一个数字生命,在QQ群里伪装人类】 https://www.bilibili.com/video/BV1gm4y1C7oY/?share_source=copy_web&vd_source=00f5e74c5395223be70e39d15664e474
我的猜测是可以通过修改channel/wechat/wechat_message.py结尾的方法来实现,不过我在本地部署出现问题,只在Railway上使用得很爽,克隆项目并修改后发现没变化,好像是直接Docker获取的源项目的地址里的镜像吗? 我太菜了感觉做成插件的方式无从下手。
动机
在看了这个视频后,我觉得可以通过某种方法让机器人的回复更像人类