wangrongding / wechat-bot

🤖一个基于 WeChaty 结合 OpenAi ChatGPT / Kimi / 讯飞等Ai服务实现的微信机器人 ,可以用来帮助你自动回复微信消息,或者管理微信群/好友,检测僵尸粉等...
MIT License
4.29k stars 651 forks source link

更新23日代码库后扫码登陆无应答 #187

Open sd3420625 opened 1 week ago

sd3420625 commented 1 week ago

早晨更新了代码库,重新填写了env文件,包括个人、群聊白名单,apikey,删除了代理api服务器,默认选择ChatGPT;更改了openai设置,模型选择gpt-4o,调整了gpt角色信息。

正常docker打包部署后,可以正常扫码登陆,但没有任何应答,log里也没有任何登陆后的报错信息显示,包括接受到的聊天信息也没有

请问问题出在哪

sd3420625 commented 1 week ago

ps:服务器不需要代理,能直接访问官方接口

wangrongding commented 1 week ago

好的,我晚上排查下

sd3420625 commented 1 week ago

补充,模型换回3.5问题依旧,另外白名单输入加''也一样,是不是wechaty接入逻辑有问题

lengsukq commented 1 week ago

可以看一下env文件怎么填的吗

lengsukq commented 1 week ago

我部署docker的时候,也碰到过类似的问题,需要重建docker才会更新env里面的数据,后面我是按作者的docker代码重新部署了下的

lengsukq commented 1 week ago

初步怀疑是.env文件未正确加载,建议填一下默认服务选择,这样启动服务的时候就知道是否正确加载env文件了

lengsukq commented 1 week ago

这是我上传的docker镜像,基于最新代码构建的 docker pull queensu/wechat-bot:latest env文件中填写一下默认服务,如果env文件正常加载则不会让你选择,会直接让你扫码,如有问题,需要排查一下引入env文件的方式是否正确,或者在构建时手动添加环境变量 默认服务 ChatGPT、Kimi、Xunfei、deepseek-free 四选一,不填则键盘交互 SERVICE_TYPE=ChatGPT

lengsukq commented 1 week ago

早晨更新了代码库,重新填写了env文件,包括个人、群聊白名单,apikey,删除了代理api服务器,默认选择ChatGPT;更改了openai设置,模型选择gpt-4o,调整了gpt角色信息。

正常docker打包部署后,可以正常扫码登陆,但没有任何应答,log里也没有任何登陆后的报错信息显示,包括接受到的聊天信息也没有

请问问题出在哪

附图,正常加载env文件并且正确填写SERVICE_TYPE的docker启动日志图 image

sd3420625 commented 1 week ago

可以看一下env文件怎么填的吗

.env

OpenAi 的api key, 去 https://beta.openai.com/account/api-keys 中生成一个即可

OPENAI_API_KEY='sk-x****Q' OPENAI_PROXY_URL=''

Kimi 的api key, 去 https://platform.moonshot.cn/console/api-keys

KIMI_API_KEY=''

科大讯飞, 去 https://console.xfyun.cn/services

XUNFEI_APP_ID='' XUNFEI_API_KEY='' XUNFEI_API_SECRET=''

deepseek-free, model必须为deepseek_chat或deepseek-coder,去 https://platform.deepseek.com/usage或者https://github.com/LLM-Red-Team/deepseek-free-api

DEEPSEEK_FREE_URL=https://api.deepseek.com/chat/completions, DEEPSEEK_FREE_TOKEN='' DEEPSEEK_FREE_MODEL=deepseek_chat

白名单配置

定义机器人的名称,这里是为了防止群聊消息太多,所以只有艾特机器人才会回复,

这里不要把@去掉,在@后面加上你启动机器人账号的微信名称

BOT_NAME=@Rock

联系人白名单

ALIAS_WHITELIST=Kris,臭臭,陈旺

群聊白名单

ROOM_WHITELIST=饮食爷们,红蛤蟆越野俱乐部

默认服务 ChatGPT、Kimi、Xunfei、deepseek-free 四选一,不填则键盘交互

SERVICE_TYPE='ChatGPT'

sd3420625 commented 1 week ago

我每次变更内容后都docker重建,应该不是重建刷新的问题

lengsukq commented 1 week ago

我每次变更内容后都docker重建,应该不是重建刷新的问题

可以看一下启动时的docker log吗

sd3420625 commented 1 week ago

> wechat-bot@1.0.0-alpha.1 dev > node ./cli.js

🌸🌸🌸 / type: ChatGPT Start to log in wechat... ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ █ ▄▄▄▄▄ █▄▀ ▀ ▄ █▀▀█▄▄█ ▄▄▄▄▄ █ █ █ █ █ █▀▄ ▀ ▄▀█ █ █ █ █ █▄▄▄█ █▄█▀ ▄█▀▄█▀▀ ██ █▄▄▄█ █ █▄▄▄▄▄▄▄█▄█ █ █▄▀ ▀▄▀▄█▄▄▄▄▄▄▄█ █ ▀▀▄▀▄█ ▄ █▄ ▄ ▀█ ▀▀ ▄▄█ █ ██▄▄ ▄ ▄ ▄ ▄▄ ▀█▀█▀█ ▄▄█▀█▄▄▀█ ██▄ ▄█▀▄ █ ▄▀ ▄▄█ ▄█ █▄▀██▄ ▀▀█ █▄ ▄ ▀█▄▄██▀ ██ █▄▄▄▄▄ ▀ █▄ ▄█ █▄▄ █▀▄▄▀▀ ▀█▄▄ █▀▄▄ █ ▄ ▀ ██ █▄█▄▄▀ ▄ ▄█▄▀██▄▄▀▀▀█▀▀▀▄▀█ ███ ██▄█▄▄█▄▄ ▀██▀▀█ ▀▀ ▄▄▄ ▀▀█ █ ▄▄▄▄▄ ██▀█▀▀▀▀███ ▄ █▄█ █▄██ █ █ █ █▀▄ █▀▀ ▄▄█▀ ▄ ▀▄▄ █ █ █▄▄▄█ █ ▄█ ▀▄█▀█ ▄ ██▄▀▀▄▀▄█ █▄▄▄▄▄▄▄█▄█▄▄███▄███▄▄▄██▄██▄██

onScan: https://api.qrserver.com/v1/create-qr-code/?data=https%3A%2F%2Flogin.weixin.qq.com%2Fl%2F4djXO39Wgw%3D%3D Waiting 2 00:15:18 INFO onScan: 3(undefined) Scanned Contact<Rock> has logged in Current time:Tue Jun 25 2024 00:15:31 GMT+0000 (Coordinated Universal Time) Automatic robot chat mode has been activated

sd3420625 commented 1 week ago

我每次变更内容后都docker重建,应该不是重建刷新的问题

可以看一下启动时的docker log吗

楼上发出来了

sd3420625 commented 1 week ago

然后就一直这状态,白名单用户发发信息也没有任何反馈和响应,也没有报错

lengsukq commented 1 week ago

方便本地代码运行一下 yarn test吗 检测一下openai是否能正常调用

sd3420625 commented 1 week ago

方便本地代码运行一下 yarn test吗 检测一下openai是否能正常调用

要怎么操作?进docker容器测试连接?还是不用docker,而用本地部署?我23日前的代码同样是docker部署可以成功连openai,应该不是key的事

sd3420625 commented 1 week ago

我用curl命令在主机上测试了官方api连通性,结果如下:

ubuntu@instance-20230710-1434:~/wxbot/wechat-bot$ curl -I https://api.openai.com/v1/chat/completions HTTP/2 404 date: Tue, 25 Jun 2024 00:35:09 GMT content-type: application/json; charset=utf-8 content-length: 172 vary: Origin x-request-id: 09df7c2fcfb4384447255bd604da3af8 strict-transport-security: max-age=31536000; includeSubDomains cf-cache-status: DYNAMIC set-cookie: __cf_bm=kLTA.6Moodp60LfBtSNEwVHm1SpaKBX0vSzgUoycFFY-1719275709-1.0.1.1-gHpFyDlwVBQ8NM46Jj8oxlpiK6t8n1OCK.v1PM2BykmAE.YRZ_vCc37iJtl4ZSN9qWiD5WmwqfZYG97xStIj1A; path=/; expires=Tue, 25-Jun-24 01:05:09 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None set-cookie: _cfuvid=nclWs5TRWVs_N_xTUHpFBRNVzBqhUM4ANTqFzb8Yko0-1719275709849-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None server: cloudflare cf-ray: 8990e03fae3db55a-KIX alt-svc: h3=":443"; ma=86400

lengsukq commented 1 week ago

方便本地代码运行一下 yarn test吗 检测一下openai是否能正常调用

要怎么操作?进docker容器测试连接?还是不用docker,而用本地部署?我23日前的代码同样是docker部署可以成功连openai,应该不是key的事

现在用的是哪个模型

sd3420625 commented 1 week ago

现在改回gpt3.5了,4o和3.5都没反应

lengsukq commented 1 week ago

很抱歉影响你使用,我刚刚淘宝买了好几个key全都失效 烦请先用我的仓库代码,地址 https://github.com/lengsukq/wechat-bot 我恢复了openai老版本的代码,今天拿到新的key我会抓紧时间排查问题。

sd3420625 commented 1 week ago

太客气了,好的我先去看看

lengsukq commented 1 week ago

太客气了,好的我先去看看

应该算是踩坑了,环境变量在docker上要用非常规方法引入,我仓库地址已经更新 https://github.com/lengsukq/wechat-bot 其实更新openai相关的代码也是为了其他在国内不能直连api的小伙伴准备的,现在的这个版本可以在env文件填写model了

OPENAI_MODEL=gpt-4o

image

sd3420625 commented 1 week ago

十分感谢,用最新代码已经能对话了🙏。 有个小问题,之前openai的配置里有gpt角色设置内容,可以自定义修改,现在代码里貌似删除了,或者是在哪个地方能修改?

lengsukq commented 1 week ago

十分感谢,用最新代码已经能对话了🙏。 有个小问题,之前openai的配置里有gpt角色设置内容,可以自定义修改,现在代码里貌似删除了,或者是在哪个地方能修改?

用的新版本的npm包,我在最新的npm包官方示例中并没有看到相关代码,我去查一下openai的官方文档看看

sd3420625 commented 1 week ago

const response = await openai.chat.completions.create({ model: chosen_model, messages: [ { role: 'system', content: 'You are a personal assistant.' }, { role: 'user', content: prompt }, ], })

就这段,不过能用就行了,角色配置不着急,有空再说

sd3420625 commented 1 week ago

我感觉是不是单独把{ role: 'system', content: 'You are a personal assistant.' },这句加到messages里就行?我本地试试看

lengsukq commented 1 week ago

我感觉是不是单独把{ role: 'system', content: 'You are a personal assistant.' },这句加到messages里就行?我本地试试看

理论上是这样,可以试试,文件就在openai/index.js

sd3420625 commented 1 week ago

确认了,管用,直接加到message里就行,下一句加逗号

sd3420625 commented 1 week ago

再次感谢🙏

lengsukq commented 1 week ago
    messages: [
      { role: 'system', content: env.OPENAI_SYSTEM_MESSAGE },
      { role: 'user', content: prompt },
    ],

我添加了一个环境变量,以后更新代码,就直接git pull一下就行不会发生冲突,有需求直接在env文件中修改就行了