Redian新闻
>
十分钟内,用 Serverless 构建自己的“ChatGPT”

十分钟内,用 Serverless 构建自己的“ChatGPT”

公众号新闻

果宝 | 华为云 Severless 研发工程师
历川 | 华为云 Severless 研发专家
ChatGPT | OpenAI 聊天机器人
背   景

ChatGPT 是一个基于 GPT-3 模型的聊天机器人,可以与用户进行自然、流畅和有趣的对话。它可以理解和使用多种语言,如英语、中文、日语、西班牙语、法语或德语;还可以根据用户的兴趣和需求,提供相关建议和创意内容,如诗歌、故事、代码、歌词等。ChatGPT 是一个强大而灵活的工具,可以用于娱乐、学习或工作。

我们是否可以基于 OpenAI 开放的 API 做一个给自己或者同事们使用的聊天机器人,甚至集成到更多场景中。简易效果如下图所示:

方案选型

说干就干,我们先从做一个自己的机器人开始,首先我们从 OpenAI 获取用于鉴权的秘钥。

然后写一个请求 OpenAI 接口的代码,并写一个 web 服务接口开放出去,再搭配一个交互用的前端即可。看起来是 1 小时的工作量,但是如何部署这个服务呢?购买一个云服务器 再安装环境或者配置容器也太麻烦了,于是我向 ChatGPT 请教:

可以看到, 使用 FunctionGraph 只需要聚焦完成请求 OpenAI 接口的功能函数,不需要购买和配置资源,甚至不需要写 Web 接口的代码。一个简单的方案如下:

其中,

  • 对象存储服务 OBS:用于托管前端页面

  • FunctionGraph : 用于响应前端请求,运行代码向 OpenAI 发送问题

  • API 网关:对外开放调用函数的 API

注:FunctionGraph 是华为云 Serverless 产品[1];“函数” 是指客户部署在 FunctionGraph 上的代码,它可以是一个或多个代码文件组成的程序,编译好的二进制文件等;如 Python 脚本文件,Java 的 jar 包。

开发并部署聊天应用
3.1 创建 FunctionGraph 函数处理用户提问的请求

首先创建并开发 FunctionGraph 函数,打开华为云 FunctionGraph 产品页面,由于只有一个简单的问题查询接口,这里我们选用 事件函数 使用 Python 3.9 运行时。

注:事件函数,可以由某类事件触发函数运行,如用户对该函数发送了 HTTP 请求,关联到该函数的消息队列里产生了新消息,都会自动触发函数运行。

对于事件函数,通常程序入口方法(这里是 handler)会有两个参数:

  • event 参数 :包含触发用户函数的事件的相关信息。HTTP 请求也是一种事件,event 里会包含请求的 body、 header 等;

  • context 参数: 调用平台的相关能力,如获取在函数配置里设置的加密环境变量等

上图为本次调用的入口方法 handler(),在函数中,我们:

1. 从 event 里取得请求的参数 prompt

2. 调用 OpenAI 的 Python SDK,向 OpenAI 发送请求调用 OpenAI 开放的模型[2]

3. Handler 方法中我们使用了 context 获取访问 OpenAI 的 key ,获取前需要在函数上配置对应环境变量,如下图所示:

注:示例中我们使用了 OpenAI 的 sdk ,也可以将 sdk 放在函数代码里一起上传,或利用平台的依赖管理能力,通过添加依赖的方式实现:

在编辑好代码后,只需要点击部署按钮即可完成部署。

3.2 创建 APIG 触发器来开放接口

通常对于使用函数开发 WEB 后端的场景,我们使用 API 网关服务,来将函数开放出去供前端访问。为函数在 API 网关上注册 API 非常简单,只需要在函数页面上创建 APIG 触发器:

注意:这里将后端超时时间设定为一个较大的时间,如 60s,因为 OpenAI 的接口响应较慢。

APIG 触发器上的调用 URL,可以直接用于向后端发送请求,该 URL 为测试 URL,每日仅可访问 1000 次,可以点击触发器跳转到 APIG 页面绑定自己的域名。

3.3 托管前端页面到 OBS
  • 我们准备了一个简单的前端,只需改下前端页面配置的后端地址即可。


  • 创建一个 OBS 桶,上传前端文件

  • 配置 OBS 静态文件托管,将桶访问权限设置为公共读,并在静态网站托管选项里配置默认首页,将自己的域名指向访问地址。

最后,通过访问配置的域名访问页面,开始体验!

至此,我们已经完成了整个简单聊天系统的搭建,案例中我们使用了一个简单的前端页面,开发者也可以考虑集成到如 VSCode 插件,语音聊天机器人,微信公众号,等等。

为后端服务增加接口鉴权

以上我们已经基于 FunctionGraph 函数创建了一个简易聊天系统的后端的服务,但是该接口没有任何鉴权,如果开放接口,所有用户都可以访问。

如果需要用户登录后才可以使用,如何做?一个思路是在原有业务代码里增加鉴权,这里我们也可以考虑使用 APIG 自定义鉴权即 APIG 组合 FunctionGraph 鉴权的形式。一个新的解决方案,如下。

4.1 创建并配置 APIG 自定义鉴权函数

使用 APIG 结合函数进行自定义鉴权有以下优势:

1. 提升开发效率:鉴权与业务解耦,新增逻辑只需关注业务,无需引入鉴权;鉴权代码集中而非分散在多个业务模块,更新鉴权逻辑只需要更新鉴权模块而非所有业务模块;

2. 降低成本:对于使用大规格函数进行后端服务的代码,无效请求可以直接由较小规格的鉴权函数拦截,降低大中规格资源服务的运行成本;
  • 创建鉴权函数

和普通函数的创建流程一样,只需要注意响应的格式,一个使用 JWT 鉴权的简单案例如下。

  • 编辑对应的 API, 选择自定义鉴权,选择到我们创建的函数

4.2 创建授权函数

基于以上自定义鉴权模式,开发者可以组合自己已有的鉴权逻辑放到自定义鉴权函数中。如果进一步再想实现“登录”功能可以创建一个函数来接收请求查询数据库,如:

  • 创建授权函数

创建一个普通的事件函数即可,一个简单的示例如下,随后可以为其创建 APIG 触发器。

“ChatGPT”的升级和观测
5.1 日志与监控

Serverless 计算 平台会自动收集用户打印在控制台的日志,用户无需处理日志落盘,收集或直接上报。用户可以基于关键词,请求状态进行过滤和检索。

同时,平台自动收集函数运行指标,如调用次数、运行时间、错误次数、被拒绝次数,并发数等。

5.2 版本迭代

在用户更新函数代码时,为保障机器人业务稳定运行,可以配置 APIG 触发器的后端服务指向函数别名,更新完代码后创建新版本,将别名指向该版本即可:

[1] 华为云 Severless FunctionGraph https://www.huaweicloud.com/product/functiongraph.html?utm_source=&utm_medium=&utm_campaign=roma&utm_content=technical-articles

[2] OpenAI 开放的各模型 https://platform.openai.com/docs/model-index-for-researchers#footnote-2

今日好文推荐

阿里过去一年裁员达19000人;字节跳动布局中国版 ChatGPT;马斯克称下周将开源推特算法代码 | Q资讯

技术裁员正在助长新的创业潮:本来犹豫要不要创业,没想到公司替我做了决定

入行 14 年,我还是觉得编程很难:给大项目写代码没意思还危险

马斯克猛烈抨击 ChatGPT引轰动:“这不是我想要的”

微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
Serverless时代的微服务开发指南:华为云提出七大实践新标准探索 17 年,亚马逊云科技重新定义 Serverlesschatgpt 说顾城剽窃chatGPT. 一本正经胡说八道手握上百套房,他们如何构建自己的“房地产帝国”?《花开富贵》阿里云蒋林泉:aliyun.com全面升级、飞天免费试用计划发布、全栈Serverless化Serverless Streaming:毫秒级流式大文件处理探秘如何建设私有云原生Serverless平台人工智能变智障?谷歌版“ChatGPT” Bard首秀大翻车,一夜市值蒸发7000亿元!(附视频&摘要稿)厉害了我的 ChatGPT, 弱百奥几何唐建:如何搭建生命科学领域的“ChatGPT” | 高榕未来PK chatgpt 的诗评2023云原生之战吹响号角,All in Serverless的阿里云先行一步细颈瓶是最不负责任、最厚颜无耻的人官宣!2023版Tableau掀起“ChatGPT”转型,功能逆天了!Chinese University Fires Professor Accused of Sexual Harassment春天先遣者,冬后一阳升紧急提醒!这些“ChatGPT”是假的,小心被骗!我亲爱的爸爸在北京被新冠带走了ChatGPT讲座:ChatGPT并不神秘,但ChatGPT很神奇加速步入Serverless时代,与亚马逊云科技一同领驭创新浪潮亚马逊云科技把Serverless的应用门槛降下来了紧急提醒!ChatGPT成神器!但这些“ChatGPT”是假的,小心被骗!备受云厂商们推崇的 Serverless,现在究竟发展到什么水平了?Chatgpt 4 要release 了破茧成蝶 - Serverless Kubernetes 的思考与征程(二)释放Serverless力量,让​「云」持续进化|最前线火出圈的“ChatGPT”到底是什么?和它聊了聊,发现……多模数据库、“Serverless 化” | 开源数据库领域解读华为云发布冷启动加速解决方案:助力Serverless计算速度提升90%+超越诺奖?生物界“ChatGPT”首次实现从零合成全新蛋白刺激!Bloomberg重磅发布金融版“ChatGPT”,华尔街Banker慌了…官宣:新一代Serverless事件中间件EventMesh正式毕业为Apache顶级项目百度的“ChatGPT”文心一言还有机会吗?Bloomberg上线金融版“ChatGPT”,华尔街Banker恐慌…(附使用手册)Tableau掀起“ChatGPT”转型,掌握这项技能的加国留学生赚翻了!瑞士卢塞恩(Lucerne),山山水水Serverless时代的存储变局2023版Tableau官宣“ChatGPT”转型,这2项功能绝了!
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。