2
2
3
3
可在微信 ** 安全使用(通过企业微信中转到微信,无封号风险)** 的 ChatGPT 个人助手应用,
4
4
5
- - 主要能力
5
+ - 主要能力会话(支持上下文)
6
6
- 第一个为自定义 prompt
7
7
<p align =" center " >
8
8
<a href =" https://github.com/whyiyhw/chatgpt-wechat " target =" _blank " rel =" noopener noreferrer " >
16
16
<img width="400" src="./doc/image27.png" alt="image27" />
17
17
</a >
18
18
</p >
19
- - 可选能力(图片识别-小猿搜题目青春版 )
19
+ - 可选能力(图片识别-小猿搜题 青春版 )
20
20
- [ 点击查看示例] ( ./doc/image25.jpg )
21
21
22
22
## 使用前提条件
23
- - 云服务器 1h2g 就够了
24
- - 域名(备案/不备案)都可以,
25
23
- 需要去注册一个个人[ 企业微信] ( https://work.weixin.qq.com/ )
26
- - 阿里云开通云函数服务(新人一年88的额度,绝对够用)
27
- - 其它腾讯云,华为云 云函数都适用,需要自行修改 js 文件。
28
-
29
- (如果你有 已经备案好的域名,下面的服务与函数区域可以不用管)
30
-
31
- - 为什么会需要云函数做中转?
32
- - 因为我不想去备案,已经备案的,可以直接域名解析到服务器,无视云函数这一步,后续我会在后端直接支持企业微信的回调认证
33
-
34
- - 为什么需要一台服务器,完全用云函数是否可行?
35
- - 目前来看,完全用同步的web函数不可能,3秒的执行时间会导致你等不到 openai 响应就整个函数会被kill掉。除非你在web函数中再触发异步函数去执行请求与获取响应,整个下来,费用跟调试成本都比较高,我假设大家都有自己的服务器,是真的不如把自己的服务器利用起来,后续有时间也会尝试用异步函数试试~
36
-
37
- ## 效果如图
38
-
24
+ - 云服务器 1h2g
25
+ - 如果是自己注册的企业微信,那么其实是不需要域名的,直接ip访问
26
+ - 如果是企业微信已经关联了备案主体,那么需要开一个备案的二级域名解析到服务器,nginx 做下转发就行
27
+ - 其它情况,如我域名没备案,但是我就是想用这个域名解析到我的服务器,
28
+ - 那就就可以考虑下面这种 [ 云函数/网关转发思路,点击查看] ( ./doc/cloudfc.md )
39
29
40
30
## 如何使用本项目代码?
41
31
53
43
- 可以在详情页看到 企业可信IP的配置,把你服务器的公网IP 填入就好,如果没有这个配置项,就说明是老应用,无需处理,这步跳过
54
44
![ image21.png] ( ./doc/image21.png )
55
45
56
- ### 2. 点击启用消息
57
-
58
- 会进入验证步骤, 先不验证 url 我们可以 拿到 Token 跟 EncodingAESKey
59
- ![ image2.png] ( ./doc/image2.png )
60
-
61
- ### 3. 访问 [ 阿里云函数计算 fc ] ( https://fcnext.console.aliyun.com/cn-hangzhou/services ) ,
62
-
63
- 创建一个新的服务与函数 ** 重点** 需要选择中国大陆以外的区域,如香港/日本
64
- ![ image2.png] ( ./doc/image16.png )
65
-
66
- 登录 [ 阿里云函数计算 fc] ( https://fcnext.console.aliyun.com/cn-hangzhou/services ) ,创建一个新的 Node.js v16/v14 的服务,服务名可以根据你的需要填写,可以填写 ChatGPT .
67
-
68
- ![ image4.png] ( ./doc/image4.png )
69
-
70
- 再创建一个函数,函数名也可以随意
71
-
72
- ![ image5.png] ( ./doc/image5.png )
73
-
74
- ### 4. 复制本项目下的 aliyunfc/index.js 的源码内容,并粘贴到 webide 当中
75
-
76
- 然后点击顶部的 deploy ,完成第一次部署。
77
-
78
- ![ image6.png] ( ./doc/image6.png )
79
-
80
- ### 5. 安装所需依赖
81
-
82
- 这个开发过程中,我们使用了企业微信开放平台官方提供的 SDK,以及 axios 来完成调用。在webide中开启终端,安装 ` axios ` 和 ` @wecom/crypto ` 还有 ` xmlreader ` 。
83
-
84
- ``` shell
85
- npm i axios
86
- npm i @wecom/crypto
87
- npm i xmlreader
88
- ```
89
-
90
- ![ image7.png] ( ./doc/image7.png )
91
-
92
- 安装完成后,点击上方的部署,使其生效。
93
-
94
- ### 5.5 将自己的域名 cname 解析到 云函数
95
-
96
- - 进入 fc -> 高级功能 -> 域名管理
97
- ![ image17.png] ( ./doc/image17.png )
98
-
99
- - 我们可以找到这个cname 的值
100
-
101
- - 接下来复制这个值去购买域名的服务商,下配置 cname
102
-
103
- ![ image18.png] ( ./doc/image18.png )
104
-
105
- - 配置好后,等待1分钟,点击保存,我们就成功的把未备案域名 解析到了香港的云函数上
106
-
107
- ### 6. 配置环境变量
108
-
109
- 接下来我们回到函数管理来配置环境变量,你需要配置两个个环境变量 ` aes_key ` 和 ` aes_token ` ` aes_key ` 填写你第二步获取到的 EncodingAESKey,` aes_token ` 填写你第二步获取到的 Token。
110
- ![ image8.png] ( ./doc/image8.png )
111
-
112
- 配置完成,点确认后,再次点击上方的 ** Deploy** 按钮部署,使这些环境变量生效。这个时候去 企业微信里面,
113
- ![ image12.png] ( ./doc/image12.png )
114
- 填入函数的 url , 点击保存, 验证就通过了.
115
- ![ image19.png] ( ./doc/image19.png )
116
-
117
- ** url 就是你刚刚 cname 解析过去的自己的域名**
118
-
119
- ### 7. 获取 OpenAI 的 KEY ,并配置环境变量
46
+ ### 2. 获取 OpenAI 的 KEY
120
47
121
48
访问 [ Account API Keys - OpenAI API] ( https://platform.openai.com/account/api-keys ) ,点击 ` Create new secret key ` ,创建一个新的 key ,并保存备用。
122
49
![ image10.png] ( ./doc/image10.png )
123
50
124
- ### 8. 在自购服务器上 部署 golang 服务,并开启对外的网络端口
51
+ ### 3. 点击启用消息
52
+
53
+ 会进入验证步骤, 先不验证 url 我们可以 拿到 Token 跟 EncodingAESKey
54
+ ![ image2.png] ( ./doc/image2.png )
55
+
56
+ ### 4. 在自购服务器上 部署 golang 服务,并开启对外的网络端口
125
57
- 前提条件,需要有一个自己的服务器,或者云服务器
126
58
- 执行 docker -v 是否有版本号?
127
59
- 执行 docker-compose -v 是否有版本号?
60
+ ![ image29] ( ./doc/image29.png )
61
+
128
62
- 确认这两个软件都安装后
129
- -
63
+
130
64
``` shell
131
65
# 进入chat 后端目录
132
66
cd ./chat
@@ -135,14 +69,33 @@ cd ./chat
135
69
cp ./service/chat/api/etc/chat-api.yaml.bak ./service/chat/api/etc/chat-api.yaml
136
70
vim ./service/chat/api/etc/chat-api.yaml
137
71
```
138
- - 修改这三个配置项
139
- ![ image20.png] ( ./doc/image20.png )
72
+
73
+ - 修改这5个配置项
74
+ ![ image25.png] ( ./doc/image25.png )
140
75
141
76
- 前两个是企业微信 的配置
142
- - corpSecret 就是 步骤一中的 Secret
143
77
- 访问 企业微信-管理员页面 , 可在 我的企业 > 企业信息 > 底部 看到 CorpID
78
+ - corpSecret 就是 步骤一中的 Secret
79
+ - Token 跟 EncodingAESKey 可以在步骤二中拿到
144
80
145
81
- 最后一个 是 openAPI 生成 KEY 的值
82
+ ---
83
+ #### 3.1 重点,因为 openai 对于大陆地区的封锁,如果你的服务器在国内,这边提供了两个方案
84
+ 1 . 自建 代理服务器,然后在 chat-api.yaml 中配置代理服务器的地址,相关的参数在 ` chat-api.yaml.complete.bak `
85
+ ``` yaml
86
+ Proxy : # 代理配置 (可选)
87
+ Enable : false # 是否启用代理,默认为 false(可选)
88
+ Socket5 : " 127.0.0.1:1080" # 代理地址 默认为 127.0.0.1:1080(可选)
89
+ ` ` `
90
+ 如何自建代理,点击查看 [自建代理](./doc/proxy.md)
91
+
92
+ 2. 使用 cf 自建反向域名代理,然后用的代理域名替换掉,OpenAi 的 Host 即可
93
+ ` ` ` yaml
94
+ OpenAi : # openai配置
95
+ Key : " xxxxxxxxxxxxxxxxxxxxx" # openai key
96
+ Host : " https://api.openai.com" # openai host (可选,使用cf进行反向代理时,修改可用)
97
+ ` ` `
98
+ 如何自建反向域名代理,点击查看 [自建反向域名代理](./doc/cf.md)
146
99
147
100
` ` ` shell
148
101
# 修改好后生成集成应用镜像
@@ -151,37 +104,12 @@ sudo docker-compose build
151
104
# 启动集成应用
152
105
sudo docker-compose up -d
153
106
```
154
- - 应用启动成功后 我们需要去拿 req_host 和 req_token
155
- - ` req_host ` 就是部署服务器的 ` http://{host}:8888/api/msg/push ` ` {host} ` 就是你服务器的ip
156
- - ` req_token ` 就是自己注册一个账号,调用登录api获取到的 token ,集体步骤如下
157
- - 调用注册api
158
- ``` shell
159
- curl --location ' localhost:8888/api/user/register' \
160
- --header ' Content-Type: application/json' \
161
- --data
' {"email": "[email protected] ","name": "admin","password": "admin123"}'
162
- ```
163
- - 调用登录api
164
- ``` shell
165
- curl --location ' localhost:8888/api/user/login' \
166
- --header ' Content-Type: application/json' \
167
- --data
' {"email": "[email protected] ","password": "admin123"}'
168
- ```
169
- - 登录API 响应
170
- ``` json
171
- {
172
- "code" :200 ,
173
- "msg" :" 成功" ,
174
- "data" :{
175
- "token" :" eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MDM1Njk0MzgsImlhdCI6MTY3NzY0OTQzOCwidXNlcklkIjoxfQ.mjRJcu3WNaqAYHB1RbG3qoBezzbEsW6weq8amOvGAaU"
176
- }
177
- }
178
- ```
179
- - 所以 ` req_token ` 就是 ` data.token ` 的值
107
+ - 最后在 企业微信的配置中,把 服务器地址 ` http://{host}:8887 ` 填入,如下图
108
+ ![ image26.png] ( ./doc/image26.png )
180
109
181
- - 最后把 ` req_host ` 和 ` req_token ` 配置到阿里云函数云的环境变量中
182
110
- 🎉🎉 你的机器人就配置好了
183
111
184
- ### 9 . 正式布发布与微信打通
112
+ ### 5 . 正式布发布与微信打通
185
113
186
114
可在 我的企业 > 微信插件 > 下方找到 一个邀请关注二维码,
187
115
![ image13.png] ( ./doc/image13.png )
@@ -194,18 +122,19 @@ curl --location 'localhost:8888/api/user/login' \
194
122
195
123
![ image99.png] ( ./doc/image99.png )
196
124
197
- ## FAQ
125
+ - 如果需要企业自定义方案,也可以wx我 ` whyiyhwxy `
198
126
199
- ## [ 版本更新日志,点击查看] ( ./doc/CHANGELOG.md )
127
+ ## changelog [ 版本更新日志,点击查看] ( ./doc/CHANGELOG.md )
200
128
201
129
### feature 版本 考虑与执行中
202
130
- [x] 单服务-多应用支持 2023-03-05
203
131
- [x] 新增代理设置 2023-03-05
204
132
- [x] 支持最新的 gpt3.5 与模型可自行切换
205
133
- [x] 支持 prompt 自定义配置
206
134
- [x] 命令式动态调整对话参数
207
- - [x] 系统设置&预定义模板
208
- - [ ] 支持 openapi 对话 token 累计功能, 余额不足时,支持 token 更换
135
+ - [x] 系统设置&预定义模板 2023-03-17
136
+ - [x] 支持服务端直接对接企业微信,无需云函数中转 2023-03-18
137
+ - [ ] 支持 openapi 对话 token 累计功能, 余额不足时,支持 token 更换
209
138
- [ ] 支持作图功能(可选)
210
139
- [ ] 支持英语语音输入(可选)
211
140
- [ ] 支持特定角色对话-如雅思口语练习(可选)
0 commit comments