2023-04-28 21:34:17 使用docker容器与AzureOpenAI服务实现chatgpt本地化部署
最近几个月,人工智能发展飞速,出现了很多基于人工智能的应用。很多人反馈使用ChatGPT很好地提高了自己的生活和工作效率。有道是:AI用得好,工作下班早。
我一直对新鲜事物比较感兴趣,之前写过一篇介绍试用ChatGPT的感受的文章,当时好些朋友咨询我怎么使用,发现流程挺繁琐,就慢慢放弃或转投他径了。确实由于网络的限制,我平常也用得不很少,每次都要获取IP,刷新登录啥的挺麻烦,特别是三月初大规模封号事件还让我忐忑了一阵没敢登录使用。当然也还有替代的如new bing和文心一言,但前者现在也网络限制了,后者使用体验一般。同事们想用的时候会临时找我用一下。我想着,要是有一个国内的或者本地化的类ChatGPT服务该多好啊。
这不,上周听说兄弟单位已经借助微软服务实现了企业微信chatgpt机器人部署。我向领导打听,才知道微软也给我们单位提供了个测试账号,领导让我自己先研究一下。
于是趁节前有些时间,我开始了chatgpt本地化部署探索。说真的,当看到机器人聊天界面出来那一刻,心情还是挺开心的,虽然回头发现没有啥技术含量,但从摸不到门到闯出一条路的成就感还是挺受用的。感谢github,感谢网络上的前辈们的提前探索,让我只需要像组装积木一样拼好就可以用了。
以下记录这次搭建的过程:
- 明确目标。最开始是打算实现和兄弟单位一样的功能,但和领导沟通后,考虑到网络安全等方面因素,决定先搭建一个本地局域网可访问的网页版。
- 资源盘点。我能折腾的资源有openAI服务的密钥、自己的电脑、NAS服务器、Github等网络资源。如果后续要在企业微信上应用,还要有一台公网ip。
- 理清思路。既然只需要局域网用,Docker是一个很好的部署方式。问了微软技术以及网上搜了相关教程后,确定了搭建思路,就是把github对应的库代码克隆到本地打包成docker镜像,在单位私有云的docker里面应用,打开网页地址就可以访问了。
- 实际操作。第一步,选定好代码库,从微软技术给了一个文档里面选了个代码都不用改的库。第二步,docker上部署。开始准备拿到私有云的ssh权限,同事说ssh不安全先不开。于是我退而求其次,可以先用自己的电脑安装部署docker,其实我脑子里只有docker的基本概念,并没有实际操作过,通过边学边用,我理清楚了代码到镜像到容器运行的步骤,顺利地实现了代码克隆、打包制作镜像和容器化运行。第三步,配置参数运行。把参数一一设置好,看到了期待以久的界面,我试着向机器人发了个问题,结果提示我model不对。我从拼装的调用代码推断出是我运行时填的model参数不对,修改后,果然能顺利运行了。
- 转移至私有云上的docker运行。想想我的电脑不能做服务器用,还是在私有云服务器上跑比较好。了解了docker原理,后面的路就顺利了。开始打算把我的镜像在docker hub里注册,但网络原因还是啥的报错,于是想可以把本地镜像打包后在nas里面安装,找到打包命令后拿到了镜像文件,上传到nas,填入参数后启动容器,发现页面打不开,修改参数重启容器后,久违的界面出来了。
总结:通过今天的探索搭建,领教了Docker的强大。具体收获有:1.学到了docker概念和本地化部署。2. 更新了自己的sublime和vscode的IDE工具 3. 只要肯折腾,积极寻找帮助,问题总能迎刃而解。后续工作:1.读懂代码逻辑。2.实现定制化修改。3.扩展试用范围和应用场景。
参考材料
- 内部通用型ChatBot – 类似于换壳ChatGPT体验。 以下两个库都是基于Azure OpenAI部署,不需要修改代码即可使用。
a. https://github.com/linjungz/azure-chatgpt-ui Web版本体验,轻量化
b. richardeee/azure-chatgpt-clone (github.com) 仿ChatGPT界面,增加AAD登录账户系统