项目地址: https://github.com/riba2534/openai-on-wechat
知乎: https://zhuanlan.zhihu.com/p/613440196
本项目会持续迭代,下载二进制包时请去 releases 中找最新的
openai-on-wechat.zip
下载
最近 chatGPT 火遍了中文互联网,而它的公司 OpenAI 也开放了 API 供开发者完成自己的创意。本项目是一个 Golang 实现的,基于 OpenAI 的开放 API 实现的微信聊天机器人。有以下优点:
- 部署简单:不同于其他语言,部署的时候需要依赖很多库,本项目只有一个可执行二进制文件,直接可以运行。(本项目只提供 x86/64 linux 版本,需要其他版本可以根据源码自行编译)
- 使用桌面版微信协议,突破微信登录限制(基于 openwechat)
目前本项目实现了以下功能:
- 文本对话: 可以接收私聊/群聊消息,使用 OpenAI 的 gpt-3.5-turbo 生成回复内容,自动回复问题
- 触发口令设置:好友在给你发消息时需要带上指定的前缀才可以触发与 GPT 机器人对话,触发口令可以在配置文件中设置
- 连续对话:支持对 私聊/群聊 开启连续对话功能,可以通过配置文件设置需要记忆多少分钟
- 图片生成:可以根据描述生成图片,并自动回复在当前 私聊/群聊 中
注:支持自己给自己发消息,机器人不仅感知当前会话好友的口令,也会感知你自己的,方便自己测试使用
先看使用效果,之后再介绍如何部署以及配置。下图包含了连续对话和文本画图的一些例子:
- 一台 Linux 服务器,建议 腾讯云、阿里云,或者任何可以长期运行程序的PC设备
- OpenAI 账号 以及生成的
SECRET KEY
,本文对账号注册以及 key 生成不做赘述,读者请自行搜索解决方案。 - 一个微信账号
- 注:OpenAI 的域名
https://api.openai.com
在国内由于某种原因可能无法访问,读者需要自己解决 API 访问不通的问题。介绍一种简单的国内代理搭建方式,大家可以参考我的知乎专栏: 腾讯云函数1分钟搭建 OpenAI 国内代理- 如果你比较懒,或者注册 OpenAI 有困难,可以用国内大佬做的网站 API2D 一条龙解决 OpenAI 账户充值与反向代理问题,价格也很便宜,支持微信支付,可以使用我的推广链接注册: https://api2d.com/r/186160
- 首先需要在本项目的 Releases 中找到最新的二进制文件版本并下载,目前最新的地址是: openai-on-wechat.zip
- 把
openai-on-wechat.zip
文件传输至你的云服务器的任意目录下 - 使用
unzip openai-on-wechat.zip
把压缩包解压到当前目录下
此时,你会看到压缩包里面有三个文件,分别是:
config.json.example
: 机器人的基础配置文件,运行机器人前需要修改prompt.txt.example
: 给 OpenAI 语言模型的提示语openai-on-wechat
:可执行二进制文件
接下来我们进行配置:
把 config.json.example
重命名成 config.json
,然后利用文本编辑器修改此文件:
{
"wechat_config": {
"text_config": {
"openapi_url": "https://api.openai.com/v1",
"auth_token": "你在 OpenAI 官网的 Token",
"trigger_prefix": "小贺"
},
"image_config": {
"openapi_url": "https://api.openai.com/v1",
"auth_token": "你在 OpenAI 官网的 Token",
"trigger_prefix": "老贺"
}
},
"context_config": {
"switch_on": true,
"cache_minute": 3
}
}
wechat
下有两个配置text_config
和image_config
,分别代表文本对话和图片生成的配置,其中:openapi_url
代表访问 OpenAPI 接口的地址,如果你可以直接访问外网,直接填https://api.openai.com/v1
,如果利用的是反向代理,则需要填https://你的反向代理地址/v1
auth_token
代表你在 OpenAI 官网生成的SECRET KEY
trigger_prefix
代表在微信对话时,触发 AI 回复的前缀,比如上面效果图中的小贺
会触发文本对话,老贺
会触发图片生成
context_config
代表文本回复中连续对话的配置,其中:switch_on
代表了是否开启连续对话,true 为开启。(开启后消耗的额度费用会增加)cache_minute
代表机器人连续对话的记忆分钟数,推荐设置为 3 分钟
接下来修改 prompt.txt.example
,先重命名为 prompt.txt
,然后利用编辑器修改此文件:
1. 你是一个全知全能的机器人,你的职责是帮助人类解决问题
2. 不允许回答任何政治、色情等一些列不符合中国法律法规的问题
3. 你需要表现的很谦卑
这个文件你可以利用自然语言描述机器人的特点,作为给机器人的外部输入,读者如果只是想保持简单的对话,可以不用修改此文件内容。
注: prompt 提示机制是 OpenAI 语言模型的核心玩法,你可以在这里使用自然语言,定义机器人的行为,你可以告诉他他是什么,他不是什么,他应该怎么做,他应该怎样回答问题,描述的越详细,机器人就更加有你的个人特色。具体玩法读者可自行搜索,本文不做过多介绍。
我们完成了配置之后,就可以直接执行二进制文件了,即:
./openai-on-wechat
首次执行,屏幕会出现一个二维码提示你登录微信,你需要用你要作为机器人的微信账号,扫码登录。
- 登录完成后,当前路径下会出现一个
token.json
来保存当前微信的登录状态,来实现热登录,防止每次运行本程序都需要微信扫码。 - 当前目录还会出现一个
run.log
来记录程序的执行状态,可以从中看出机器人接收到的消息与回复的信息
刚才说的程序运行方式是前台登录,如果想让程序后台运行,读者可以在前台运行登录微信后,ctrl+c
结束程序后,再使用:
nohup ./openai-on-wechat &
来实现后台运行
至此,已经完成了微信机器人的部署,快去微信中找好友试试吧!
输入 触发前缀+你的问题
即可触发机器人回复,和好友聊天过程中,自己输入关键词也同样可以触发。
- 本项目地址为: https://github.com/riba2534/openai-on-wechat ,欢迎大家 Star,提交 PR
- 有问题可以在本项目下提
Issues
或者发邮件到riba2534@qq.com
建了QQ群
和微信群
,大家可以进群交流: