Skip to content

🍺基于 Golang 实现的,OpenAI 微信聊天机器人

Notifications You must be signed in to change notification settings

riba2534/openai-on-wechat

Repository files navigation

1分钟搭建自己的OpenAI GPT微信机器人

项目地址: 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 机器人对话,触发口令可以在配置文件中设置
  • 连续对话:支持对 私聊/群聊 开启连续对话功能,可以通过配置文件设置需要记忆多少分钟
  • 图片生成:可以根据描述生成图片,并自动回复在当前 私聊/群聊 中

注:支持自己给自己发消息,机器人不仅感知当前会话好友的口令,也会感知你自己的,方便自己测试使用

效果预览

先看使用效果,之后再介绍如何部署以及配置。下图包含了连续对话文本画图的一些例子:

连续对话1.jpg 连续对话2.jpg 文字3.jpeg
画图2.jpg 画图3.jpg 画图1.jpg

开始部署

一、 环境准备

  • 一台 Linux 服务器,建议 腾讯云、阿里云,或者任何可以长期运行程序的PC设备
  • OpenAI 账号 以及生成的 SECRET KEY ,本文对账号注册以及 key 生成不做赘述,读者请自行搜索解决方案。
  • 一个微信账号
  • 注:OpenAI 的域名 https://api.openai.com 在国内由于某种原因可能无法访问,读者需要自己解决 API 访问不通的问题。介绍一种简单的国内代理搭建方式,大家可以参考我的知乎专栏: 腾讯云函数1分钟搭建 OpenAI 国内代理
  • 如果你比较懒,或者注册 OpenAI 有困难,可以用国内大佬做的网站 API2D 一条龙解决 OpenAI 账户充值与反向代理问题,价格也很便宜,支持微信支付,可以使用我的推广链接注册: https://api2d.com/r/186160

二、 配置

  1. 首先需要在本项目的 Releases 中找到最新的二进制文件版本并下载,目前最新的地址是: openai-on-wechat.zip
  2. openai-on-wechat.zip 文件传输至你的云服务器的任意目录下
  3. 使用 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_configimage_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 &

来实现后台运行

大功告成

至此,已经完成了微信机器人的部署,快去微信中找好友试试吧!

输入 触发前缀+你的问题 即可触发机器人回复,和好友聊天过程中,自己输入关键词也同样可以触发。

联系作者

建了QQ群微信群,大家可以进群交流:

qq群 微信群