# wechatbot
**Repository Path**: dabaisk/wechatbot
## Basic Information
- **Project Name**: wechatbot
- **Description**: 微信普通号机器人,对接chatgpt
- **Primary Language**: Go
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2023-04-28
- **Last Updated**: 2023-04-28
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 微信机器人(ChatGPT官方API版)
最近chatGPT异常火爆,想到将其接入到个人微信是件比较有趣的事,所以有了这个项目。本项目使用了OpenAI最新(2023-03-02)发布的ChatGPT在使用的大型语言模型gpt-3.5-turbo以其API和基于[openwechat](https://github.com/eatmoreapple/openwechat)开发。
本项目修改自 @djun 的 [wechatbot](https://github.com/djun/wechatbot)
### 目前实现了以下功能
+ 群聊@回复
+ 私聊回复
+ 自动通过回复
#### 注意: 若在使用过程中有任何技术问题请自行处理。本人只确保发布的源码是可运行的(可运行不代表要符合任何人的心意,本项目属于实验性质的demo级项目,若有任何不快请自行修改代码)。
# 注册OpenAI开发者帐号
OpenAI开发者帐号注册可以参考[这里](https://juejin.cn/post/7173447848292253704)
# 安装使用
## 获取项目
`git clone https://gitee.com/dabaisk/wechatbot.git`
## 进入项目目录
`cd wechatbot`
## 复制配置文件
linux下执行 `cp config.dev.json config.json`
windows下执行 `copy config.dev.json config.json`
## 启动项目
`go run main.go`
启动前需替换config中的api_key
### 若想实现连续对话功能请参考以下内容:
为什么要提供一个对话列表呢?因为 API 调用都是单次的接口请求,不会自动记录之前的聊天信息,没有上下文,要让 ChatGPT 在单次的请求中了解你的上下文,就需要提供这样一个完整的对话列表,比如这样一个对话
```python
import openai
openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Who won the world series in 2020?"},
{"role": "assistant", "content": "The Los Angeles Dodgers won the World Series in 2020."},
{"role": "user", "content": "Where was it played?"}
]
)
```
每条对话消息都需要提供角色和内容,角色分三种:系统(system)、用户(user)、助手(assistant)。
system:系统消息相当于一个管理员,可以设置助手的行为和特征。在上面的例子中,助手被指示你是一个有用的助手。
user:用户消息就是我们自己,可以由用户发出提问,或者直接让开发者提前内置一些 Prompts 指令。一些可以参考的 [ChatGPT Prompts](https://chatopenai.pro/chatgpt-prompts/)
assistant:助手消息就是 ChatGPT API 在之前提供的回复,在这里存储起来。这个回复也可以自己修改或者自己编一段对话出来,来让整个对话更通顺。
如果不需要对话的话,只需要提供单个的user消息即可,就像刚刚 Python 代码里演示的。