前几天发了一个关于chatGPT的QQ机器人接入视频,很多人问我怎么部署。
本来想专门做一个视频,还是决定写成文档吧...
因为通过chatGPT的热度看来,是真的有好多零基础的小伙伴。
有经验的小伙伴通过文档相信可以快速理解并部署完成的。
准备清单:
1·首先你已经充分理解,这个视频。
很多小伙伴因为“不可抗因素”导致在本地开发的时候,noneBot请求Django服务端接口不成功,很大一部分原因就是本机网络环境不是全局魔法。这个问题在最后的视频问题总汇有详细描述,这里就不展开了。
那现在想要部署这个视频的机器人服务,开发环境就换成了服务器。也没必要太纠结这个问题。因为服务器也不能开魔法,能不能用就直接看ping通即可。
但这里要注意的是,我建议大家准备两台服务器。因为这个视频里面也说到了,
Django端的请求接口部署,
一定要部署在很远的另一台服务器,才能保证这个openai的接口请求不被ban掉。
2·需要两台服务器:1台国内,1台很远
QQ机器人逻辑的 noneBot 和 登录用 go-cqhttp,都需要部署在国内。
1·部署Django服务端
在视频的解决方案中,Django负责了主要的openai接口接入并返回到QQ机器人逻辑。
所以要部署在一个绝对可靠的北美服务器,并且不会被国内常见服务器屏蔽。
我这里的推荐是,微软Azure
Django服务接入openai,部署到北美。(推荐微软云Azure,微软是openai的金主。如果要ban服务器IP,大概率ban不到微软头上。)
这个时候小伙伴可能会觉得费用比较大了,那就看个人取舍了。
不过这里有个服务端技术推荐了解一下,Web应用Serverless形式部署。即用即开,我发视频到现在也快一个月了。几乎没有什么费用,等赠送的额度用完应该也就是一个最低月租。
有一篇微软云Azure部署Django的官方文档,可以参考部署。
官方教程很详细,可以结合Vscode一并开发一个Django的Web应用快速部署。
如果实在部署不会,评论区或者加群提问。我现在用的是这个,我见过知道的,都会回复的。
那么如果小伙伴已经有自己的北美服务器,不想再买微软Azure。那我能帮到的还有一个常规Ubuntu系统部署Django的教程。
当你完成的django的部署,应该通过服务端部署开发并解决了问题如下:
1.域名或测试域名可访问Django接口。
2.网址输入你的接口能看到与本机开魔法一样的界面,并成功得到openai的返回。
部署上去的django代码,为了更好的服务。
应该具备POST请求接口,以满足更多文本的输入请求。
修改参考如下:
@api_view装饰器列表参数['GET','POST'] ,即为该接口接受get和post。
整个函数参数 request 即为当前接口被触发的整个http请求全文,没有开发过django的小伙伴可以通过 request.body 查看请求的body。
OK,大概交代这么多吧。确实需要一点基础,不过这也只是简单的部署安装和单接口。实在不会的小伙伴,还是留言加群提问吧。如果你选择了常规Ubuntu部署Django,可能会在nginx+uwsgi并发管理连接上有疑问。欢迎提问,这个我熟~~
2·部署noneBot & go-cqhttp
关于它俩的部署,其实就很简单了。任何一个国内服务器都可以部署,而且并不需要操心并发请求的问题。因为QQ机器人本来也就一个帐号,noneBot有自身的维护策略。go-cqhttp也有断线重连策略,所以其实对于我们用户来说。
基本上就是上传+后台运行
关于Ubuntu服务器后台运行可执行的命令如下:
后台运行的区别就是终端不可视日志反馈,所以如果发生链接不成功的时候。debug需要去对应的文件夹里面找到nohup启动产出的log文件。
通过上述命令会产出,go-cqhttp.log 和 mylog.txt 。
!!!!注意,差点忘了。go-cqhttp需要linux版本,而不是和视频一样的windows版本
一般云服务器如果运行了Ubuntu,去go-cqhttp的github地址下载对应你服务器的realese版本。然后最最重要的是,
除了go-cqhttp程序本身,其他全部保持原状上传,尤其是session.token
session.token记录了你的帐号登录信息,
保持原状上传,不要在服务器尝试QQ登录。
本地登录好go-cqhttp的QQ帐号,服务器上不要操作登录,直接执行go-cqhttp程序复用登录信息即可。
如果你都做到这里了,相信你成功了!
大地母亲护佑着你,祝你好运!
关于这个视频的问题总汇回复:
问题1:这个机器人支持上下文嘛?
答:openai的聊天接口是支持上下文的,但是需要自己有开发能力。通过官方接口搭配python生态的LangChain三方库可以将你需要的数据进行前导词注入与矢量嵌入。
这方面开发内容尝试已经做过视频了,有开发能力的小伙伴可以自己查看。
OpenAI接口定制化!
问题2:
2.你当前网络环境魔法力不是全局代理!!这个已经跟群友确认过很多例子了,不用纠结。实在没有魔法工具,直接上北美服务器开发。如果没有,那就放下吧...
问题3:latin-1 encode 字符串相关错误
答:你修改了openai的key,
然后你没保存代码,你没保存代码,没保存代码,没保存,没!
这个也已经跟N多个群友确认过了,大哥你真的是修改了没有ctrl+s保存文件。
导致 openai_key 以字符串的形式传入程序,那中文字符串咋能不报错呢?
问:choices字段索引错误
答:
恭喜你,你离成功就差最后一步。你的key是错的,导致验证失败。所以返回的数据格式,并不是正确的GPT回答数据。
如果需要进一步确认openAI请求反馈内容,你需要修改一点代码,打印数据查看。
在response请求之后,打印 response.text 查看更多内容
其他关于noneBot 请求django报错,还是本地魔法环境问题。
go-cqhttp请求登录,2修改没反应就多试试其他的,1-6,6种设备总有一个可以。
相信很多小伙伴都是通过chatGPT第一次接触Python开发,
那我打个广告,我有一套关于Python语言Django框架+Vue前端的Web应用开发教程。
如果你想真正用Python接触Ai也好,开发程序也好,可以看看
因为光是复制粘贴,解决不了任何实质性问题。
像前导词注入与矢量嵌入开发openai上下文接入聊天接口,虽然并不复杂,但零基础是真的不太行。
就算有chatGPT也帮不上多少,因为相关开发框架和生态是在chatGPT之后出现的。
这就需要开发者自己本身具备一定的开发能力了,
简单入门一个Web框架建一个自己的网站应用。了解基础的前后端分离,Js+Py,是一个不错的选择。