草庐IT

作为大学生,你还不会搭建chatGPT微应用吗?

三掌柜666 2023-04-14 原文

目录

  • 引言
  • ChatGPT是什么?
  • 背景:ChatGPT敢为人先,打破全球僵局
  • 示例演示:基于ChatGPT微应用实现的条件及步骤
  • (1)整体框架
  • (2)搭建前的准备工作
  • (3)实际搭建步骤
  • (4)体验分析
  • chatGPT体验番外篇
  • 你认为未来还有这样的技术吗?
  • 结束语
  • 参考文献

引言

从去年11月份至今,刷爆全球技术圈的AI技术是什么?大家肯定会异口同声的说:chatGPT。从chatGPT诞生到现在,从刚开始短短一周时间注册用户就达到了100万,再到目前注册及使用人数已破亿,在短短的3个月时间里chatGPT一直占据各大技术社区和平台的榜首,各种关于它的话题讨论也是层出不穷,chatGPT的热度“高烧不退”,说明了什么呢?原因不用多说,那是因为ChatGPT不仅可以写论文、写代码,还可以写情书、写邮件,甚至还可以写诗、当“翻译”、当“感情导师”。本文通过对ChatGPT相关内容的分享,结合笔者尝试通过搭建类似ChatGPT的微应用,来阐释一下ChatGPT所带来的美好体验和变化。

ChatGPT是什么?

ChatGPT(全名:Chat Generative Pre-trained Transformer),是由美国OpenAI研发的聊天机器人程序 ,在2022年11月30日发布。ChatGPT是一个人工智能技术驱动的自然语言处理工具,它能够通过学习和理解人类的语言来进行对话,还能根据实际聊天的上下文进行互动,真的可以像人一样来聊天交流,而且能完成撰写邮件、视频脚本、策划文案、翻译、写代码、写论文等任务,目前注册及使用人数已破亿。

背景:ChatGPT敢为人先,打破全球僵局

目前非常热门的人工智能(AI)自然语言处理应用工具非ChatGPT莫属,它能够通过学习和理解人类的语言来进行对话,可广泛应用于客服聊天机器人、问答、虚拟助手等应用领域。它还被用于模仿人类生成多种格式的文本,包括对话、讲故事、写小说等。ChatGPT 因其能够理解自然语言,生成高质量、连贯的文本和有意义的响应而获得公众和研究界的赞誉褒奖。

ChatGPT能够产出很出色的内容,一定程度上展现了AI能力发展新的里程碑,但也是分水岭,存在着一些局限性,比如它的准确性目前还难以完全满足实际要求,而且目前全球各大科技巨头纷纷在尝试入局AIGC,ChatGPT目前还未开源,商业模式也不太清晰,不仅能够给国内的AI科技公司留出一定的时间和空间,还能让ChatGPT在初期使用中引起的一些弊端展现出来,方便朝着正确的方法发展。虽然ChatGPT和AICG,以及阿尔法狗都是人工智能发展到一定程度的必然产物,但是ChatGPT的诞生还是造成了颠覆认知的影响,尤其是随着ChatGPT不断地完善和进步,它真的可以取代人类的一些日常工作。

个人理解,ChatGPT就是一个能“琴棋书画”的AI虚拟人,不仅会学着人类的思维在问答中互动,而且能够解决选择困难症的问题,更能解决比较专业的领域问题,是个百事通。接下来笔者通过搭建类似ChatGPT的微应用,来从技术实现层面分享一下ChatGPT的使用体验。

示例演示:基于ChatGPT微应用实现的条件及步骤

那么接下来,将演示使用无服务器计算产品构建一个无服务器的 Web 应用程序作为个人AI助手,即仿ChatGPT微应用。本示例演示中使用的所有服务都涵盖在AWS的相关产品内,调用的Amazon Lambda等Serverless相关产品,以及通过Amazon S3 构建一个无服务器的Web应用程序来作为个人AI助手的核心技术。

(1)整体框架

  • 通过使用 Amazon S3 托管前端客户端的 Html、JS、CSS 文件;
  • 通过使用 Amazon API Gateway 将前端的请求从客户端路由再到后端服务的过程;
  • 通过使用Amazon Lambda 部署后端服务 ,核心包含:API鉴权、用户登录、处理来自客户端的聊天会话请求,以及调用 OpenAI SDK 从OpenAI 服务器获取响应文本再返回给到客户端等流程。

(2)搭建前的准备工作

  • 通过自己的渠道自行创建一个OpenAI账户,并且去OpenAI管理后台创建一个API密钥(该密钥是调用OpenAI的API的时候会用到);
  • 注册一个亚马逊云科技平台的账户(后面在搭建的时候会一直用到);
  • 搭建好本地的运行环境,如Nodejs、Visual Studio Code ;
  • 提前下载好AWS关于OpenAI 的代码demo,这里通过github上下载到本地,具体命令行:git clone GitHub - aws-samples/aws-serverless-openai-chatbot-demo。下载之后解压打开的项目文件目录如下所示:
  • 分别转到 server 文件夹下的各个 lambda 函数文件夹,安装依赖项并打包制作 . zip 文件,以上传到 Amazon Lambda。制作zip的命令如下所示:

cd server/lambda_chat npm install zip -r lambda_chat.zip .

(3)实际搭建步骤

1、打开并登录AWS的管理后台,创建一个Lambda 函数用来处理会话聊天

2、把上面创建的 lambda_chat.zip 上传到 Lambda 代码源中。

3、从环境变量中,创建”OPENAI_API_KEY“的键,并把应用的OpenAI API KEY配置成值。

4、参照步骤1,依次创建用于 Amazon API Gateway 请求鉴权的Lambda 函数、用于处理用户登录请求的Lambda 函数

注意:同样要设置对应的环境变量的键值,以及上传压缩好的zip文件。

5、创建API Gateway,即创建一个名字为“chatbot”的 HTTP API

6、在chatbot API下面新创建两个POST请求方法的路由

7、给/chat路由创建Lambda授权方,以及集成到Lambda 函数中

8、给/login路由创建Lambda集成

9、设置API Gateway的CORS 配置

10、部署Amazon S3 托管前端客户端的网站

11、编译网站的静态文件,替换上面创建的实际的API gateway 端点

12、编译前端部分的静态文件

编译前端部分的静态文件,使用命令行:

npm run build

然后把打包好的build内的文件部署到上面的Amazon S3,上传命令行:

aws s3 sync ./build/ s3://bucket-name/

13、完成上面的所有操作步骤之后,可以在PC或者手机浏览器中访问Amazon S3网站,即可体验效果

以上就是本次关于搭建类chatGPT微应用的大致步骤,通过AWS的相关产品构建一个无服务器Web的类chatGPT微应用,整体操作流程很顺畅,值得体验一下。

(4)体验分析

虽然通过上面的关于chatGPT功能的使用示例,没有涉及到chatGPT核心的工作原理,但是通过体验使用chatGPT也能略知一二。想必读者都知道chatGPT是一款自然语言处理模型,它是基于深度学习技术,利用大量数据进行训练,从而生成高质量的文本内容。AWS关于调用OpenAI SDK 从OpenAI 服务器获取响应文本再返回给到客户端的过程,OpenAI的接口返回速度很快,体验流程无卡顿,最主要的点就是搜索的结果,完美的回答了测试问到的问题,而且答案也很精准,是期望的答案,非常不错。

chatGPT体验番外篇

从去年11月底chatGPT问世,笔者就在当年的12月份体验了chatGPT,首次体验chatGPT的感觉是很惊叹的,当时能想到的就是chatGPT的回答解决了常规的问答问题,尤其是传统搜索引擎不能满足精准回复的缺陷,通过传统收缩引擎获得的答案需要搜索者耗费大量时间去对比和验证才能得到自己想要的答案,毕竟搜索到的答案鱼龙混杂。但是chatGPT的诞生解决了这个最大的痛点问题,打破了传统搜索引擎的通病,极大的提高了搜索用户的搜索效率,研发chatGPT只是为了解决传统搜索的弊端,但是chatGPT却实现了完美超越。分享一下使用chatGPT的体验截图。

你认为未来还有这样的技术吗?

从ChatGPT的诞生以及在短期内的井喷热度,有人说是第四次技术革命,又有人说是挑战人类工作的竞争者,还有人说是整治科技圈的利器,不管怎么说ChatGPT的出现在短时间内掀起的高潮和热度是必然事件。因为人工智能近几年的快速发展以及技术沉淀,诞生ChatGPT是意料之中的事情。

而且我相信ChatGPT的出现是起点而不是终点,接下来肯定还会有类似ChatGPT的ChatGPT2、ChatGPT3的出现,同时我也相信国内的互联网企业能够紧追其上,早日推出国内版类ChatGPT的产品,也希望ChatGPT带来更多的是改变美好生活,而不是制造问题,期待着ChatGPT改变美好生活!

个人觉得,chatGPT带来的热度在短时间内不会消退,而且随着全球互联网企业的纷纷入手类chatGPT应用,势必会继续让chatGPT保持热度,也会有越来越多的类chatGPT问世。无论是国外还是国内,chatGPT将成为新的风口,chatGPT的应用场景越来越多,同时会改变一些生活体验,也会改变一些工作方式。

结束语

作为技术开发人员,不仅仅只是体验使用chatGPT的功能,更应该去了解chatGPT的核心原理以及研发步骤,这样才能保持一个技术持续更新的状态,而且也能在技术研究中提升自身价值。chatGPT的出现,不仅提高了使用者的开发和学习效率,而且还促进了一些行业的变革,但是事物的出现都有两面性,有好的一面,必然有不好的一面;我们使用chatGPT只取它的优点,要理性的使用chatGPT,而不是极度的依赖它,chatGPT可以是解决问题的一种很好的选项,但不是唯一的选择。未来一段时间内,chatGPT会不断地完善和优化,随着模型的性能和个性化的提升,chatGPT真的可以成为人类的专属AI助手,让我们一起期待那天的到来!

参考文献

亚马逊云科技官网--Lambda 入门Lambda 入门 - AWS Lambda

有关作为大学生,你还不会搭建chatGPT微应用吗?的更多相关文章

  1. ruby - 将差异补丁应用于字符串/文件 - 2

    对于具有离线功能的智能手机应用程序,我正在为Xml文件创建单向文本同步。我希望我的服务器将增量/差异(例如GNU差异补丁)发送到目标设备。这是计划:Time=0Server:hasversion_1ofXmlfile(~800kiB)Client:hasversion_1ofXmlfile(~800kiB)Time=1Server:hasversion_1andversion_2ofXmlfile(each~800kiB)computesdeltaoftheseversions(=patch)(~10kiB)sendspatchtoClient(~10kiBtransferred)Cl

  2. ruby-on-rails - Rails 应用程序之间的通信 - 2

    我构建了两个需要相互通信和发送文件的Rails应用程序。例如,一个Rails应用程序会发送请求以查看其他应用程序数据库中的表。然后另一个应用程序将呈现该表的json并将其发回。我还希望一个应用程序将存储在其公共(public)目录中的文本文件发送到另一个应用程序的公共(public)目录。我从来没有做过这样的事情,所以我什至不知道从哪里开始。任何帮助,将不胜感激。谢谢! 最佳答案 无论Rails是什么,几乎所有Web应用程序都有您的要求,大多数现代Web应用程序都需要相互通信。但是有一个小小的理解需要你坚持下去,网站不应直接访问彼此

  3. ruby - 无法运行 Rails 2.x 应用程序 - 2

    我尝试运行2.x应用程序。我使用rvm并为此应用程序设置其他版本的ruby​​:$rvmuseree-1.8.7-head我尝试运行服务器,然后出现很多错误:$script/serverNOTE:Gem.source_indexisdeprecated,useSpecification.Itwillberemovedonorafter2011-11-01.Gem.source_indexcalledfrom/Users/serg/rails_projects_terminal/work_proj/spohelp/config/../vendor/rails/railties/lib/r

  4. ruby - Highline 询问方法不会使用同一行 - 2

    设置:狂欢ruby1.9.2高线(1.6.13)描述:我已经相当习惯在其他一些项目中使用highline,但已经有几个月没有使用它了。现在,在Ruby1.9.2上全新安装时,它似乎不允许在同一行回答提示。所以以前我会看到类似的东西:require"highline/import"ask"Whatisyourfavoritecolor?"并得到:Whatisyourfavoritecolor?|现在我看到类似的东西:Whatisyourfavoritecolor?|竖线(|)符号是我的终端光标。知道为什么会发生这种变化吗? 最佳答案

  5. ruby - RSpec - 使用测试替身作为 block 参数 - 2

    我有一些Ruby代码,如下所示:Something.createdo|x|x.foo=barend我想编写一个测试,它使用double代替block参数x,这样我就可以调用:x_double.should_receive(:foo).with("whatever").这可能吗? 最佳答案 specify'something'dox=doublex.should_receive(:foo=).with("whatever")Something.should_receive(:create).and_yield(x)#callthere

  6. ruby-on-rails - Rails 应用程序中的 Rails : How are you using application_controller. rb 是新手吗? - 2

    刚入门rails,开始慢慢理解。有人可以解释或给我一些关于在application_controller中编码的好处或时间和原因的想法吗?有哪些用例。您如何为Rails应用程序使用应用程序Controller?我不想在那里放太多代码,因为据我了解,每个请求都会调用此Controller。这是真的? 最佳答案 ApplicationController实际上是您应用程序中的每个其他Controller都将从中继承的类(尽管这不是强制性的)。我同意不要用太多代码弄乱它并保持干净整洁的态度,尽管在某些情况下ApplicationContr

  7. ruby-on-rails - 项目升级后 Pow 不会更改 ruby​​ 版本 - 2

    我在我的Rails项目中使用Pow和powifygem。现在我尝试升级我的ruby​​版本(从1.9.3到2.0.0,我使用RVM)当我切换ruby​​版本、安装所有gem依赖项时,我通过运行railss并访问localhost:3000确保该应用程序正常运行以前,我通过使用pow访问http://my_app.dev来浏览我的应用程序。升级后,由于错误Bundler::RubyVersionMismatch:YourRubyversionis1.9.3,butyourGemfilespecified2.0.0,此url不起作用我尝试过的:重新创建pow应用程序重启pow服务器更新战俘

  8. ruby-on-rails - 如何在我的 Rails 应用程序 View 中打印 ruby​​ 变量的内容? - 2

    我是一个Rails初学者,但我想从我的RailsView(html.haml文件)中查看Ruby变量的内容。我试图在ruby​​中打印出变量(认为它会在终端中出现),但没有得到任何结果。有什么建议吗?我知道Rails调试器,但更喜欢使用inspect来打印我的变量。 最佳答案 您可以在View中使用puts方法将信息输出到服务器控制台。您应该能够在View中的任何位置使用Haml执行以下操作:-puts@my_variable.inspect 关于ruby-on-rails-如何在我的R

  9. ruby - 字符串文字中的转义状态作为 `String#tr` 的参数 - 2

    对于作为String#tr参数的单引号字符串文字中反斜杠的转义状态,我觉得有些神秘。你能解释一下下面三个例子之间的对比吗?我特别不明白第二个。为了避免复杂化,我在这里使用了'd',在双引号中转义时不会改变含义("\d"="d")。'\\'.tr('\\','x')#=>"x"'\\'.tr('\\d','x')#=>"\\"'\\'.tr('\\\d','x')#=>"x" 最佳答案 在tr中转义tr的第一个参数非常类似于正则表达式中的括号字符分组。您可以在表达式的开头使用^来否定匹配(替换任何不匹配的内容)并使用例如a-f来匹配一

  10. ruby-on-rails - 如何在 Gem 中获取 Rails 应用程序的根目录 - 2

    是否可以在应用程序中包含的gem代码中知道应用程序的Rails文件系统根目录?这是gem来源的示例:moduleMyGemdefself.included(base)putsRails.root#returnnilendendActionController::Base.send:include,MyGem谢谢,抱歉我的英语不好 最佳答案 我发现解决类似问题的解决方案是使用railtie初始化程序包含我的模块。所以,在你的/lib/mygem/railtie.rbmoduleMyGemclassRailtie使用此代码,您的模块将在

随机推荐