当前位置:首页|资讯|ChatGPT

如何Ubuntu部署ChatGPT QQ机器人

作者:九弓子发布时间:2023-05-06

前几天发了一个关于chatGPT的QQ机器人接入视频,很多人问我怎么部署。

本来想专门做一个视频,还是决定写成文档吧...

因为通过chatGPT的热度看来,是真的有好多零基础的小伙伴。

有经验的小伙伴通过文档相信可以快速理解并部署完成的。

1·部署前的准备

准备清单:

1·首先你已经充分理解,这个视频。

       很多小伙伴因为“不可抗因素”导致在本地开发的时候,noneBot请求Django服务端接口不成功,很大一部分原因就是本机网络环境不是全局魔法。这个问题在最后的视频问题总汇有详细描述,这里就不展开了。

        那现在想要部署这个视频的机器人服务,开发环境就换成了服务器。也没必要太纠结这个问题。因为服务器也不能开魔法,能不能用就直接看ping通即可。

        但这里要注意的是,我建议大家准备两台服务器。因为这个视频里面也说到了,

        Django端的请求接口部署,

        一定要部署在很远的另一台服务器,才能保证这个openai的接口请求不被ban掉。

        

2·需要两台服务器:1台国内,1台很远

QQ机器人与接口服务分开部署

        QQ机器人逻辑的 noneBot 和 登录用 go-cqhttp,都需要部署在国内。

      

2·开始部署

1·部署Django服务端

        在视频的解决方案中,Django负责了主要的openai接口接入并返回到QQ机器人逻辑。

        所以要部署在一个绝对可靠的北美服务器,并且不会被国内常见服务器屏蔽。

        我这里的推荐是,微软Azure

         Django服务接入openai,部署到北美。(推荐微软云Azure,微软是openai的金主。如果要ban服务器IP,大概率ban不到微软头上。)

        这个时候小伙伴可能会觉得费用比较大了,那就看个人取舍了。

        不过这里有个服务端技术推荐了解一下,Web应用Serverless形式部署。即用即开,我发视频到现在也快一个月了。几乎没有什么费用,等赠送的额度用完应该也就是一个最低月租。

        有一篇微软云Azure部署Django的官方文档,可以参考部署。

        

微软Azure app-service/quickstart-python

            官方教程很详细,可以结合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版本

linux_amd64

一般云服务器如果运行了Ubuntu,去go-cqhttp的github地址下载对应你服务器的realese版本。然后最最重要的是,

        除了go-cqhttp程序本身,其他全部保持原状上传,尤其是session.token

        session.token记录了你的帐号登录信息,

        保持原状上传,不要在服务器尝试QQ登录。

        本地登录好go-cqhttp的QQ帐号,服务器上不要操作登录,直接执行go-cqhttp程序复用登录信息即可。


        如果你都做到这里了,相信你成功了!

        大地母亲护佑着你,祝你好运!


关于这个视频的问题总汇回复:


问题1:这个机器人支持上下文嘛?

    答:openai的聊天接口是支持上下文的,但是需要自己有开发能力。通过官方接口搭配python生态的LangChain三方库可以将你需要的数据进行前导词注入与矢量嵌入

            这方面开发内容尝试已经做过视频了,有开发能力的小伙伴可以自己查看。

            OpenAI接口定制化!



问题2:HTTPSConnectionPool(host='api.openai.com', port=443): Max retries exceeded with url: /v1/chat/completions (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x0000

答:

        这个问题的原因有两个:

        1.urllib3这个库的版本高于1.25.11,需要重新pip install

         2.你当前网络环境魔法力不是全局代理!!这个已经跟群友确认过很多例子了,不用纠结。实在没有魔法工具,直接上北美服务器开发。如果没有,那就放下吧...


问题3:latin-1 encode 字符串相关错误

latin-1encode字符串错误

答:你修改了openai的key,

        然后你没保存代码,你没保存代码,没保存代码,没保存,没!

       这个也已经跟N多个群友确认过了,大哥你真的是修改了没有ctrl+s保存文件。

        导致 openai_key 以字符串的形式传入程序,那中文字符串咋能不报错呢?


问:choices字段索引错误

choices字段错误

答:

        恭喜你,你离成功就差最后一步。你的key是错的,导致验证失败。所以返回的数据格式,并不是正确的GPT回答数据。

        如果需要进一步确认openAI请求反馈内容,你需要修改一点代码,打印数据查看。

添加print打印报错

        在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,是一个不错的选择。

        

            

        



Copyright © 2024 aigcdaily.cn  北京智识时代科技有限公司  版权所有  京ICP备2023006237号-1