当前位置: 首页>行业 >

天天百事通!3小时!开发ChatGPT微信小程序

来源: | 时间: 2022-12-19 19:38:46 |

导读 |上周OpenAI发布了对话语言模型 ChatGPT,相关讨论引爆全网。你是否也迫不及待体验一番?本文特邀作者腾讯云开发者社区作者戴传友从开发环境准备、开发过程、服务器接口、腾讯API网关接入到部署,详细教你如何动手开发一个chatGPT微信小程序。

在《ChatGPT-地表最强AI模型!要消灭人类?》、《算法工程师深度解构ChatGPT技术》两篇文章中,我们分别囊举了ChatGPT的丰富玩法并解析其工作原理。如果你对相关内容感兴趣,欢迎回溯围观~公众号的粉丝朋友们在评论区畅想了更多ChatGP应用实践,也有粉丝表示想要亲自体验下其奇妙之处。此次,我们邀请腾讯云开发者社区开发者由浅入深带你动手开发一个ChatGPT微信小程序,其中会详细介绍开发环境准备、项目实现、服务接口搭建、腾讯API网关接入、部署等环节。
准备工作1)小程序申请在微信中搜索 "ChatGPT"相关的小程序,检查有哪些名字未被占用。选好名字并记录准备144px*144px尺寸的logo,并在微信公众平台官网首页申请微信小程序。一般来说,大概3个小时左右就可以通过审核。2)openai 账号申请OpenAI( https://openai.com/)目前不在中国区域开展业务,国内不能正常的体验到openai提供的服务。账号的申请和注册具体教程,各位阅读者可以自行搜索。申请到账号之后,为了在代码中实对OpenAI 提供的 api ,我们还需要申请一个apiKey。这是通过代码访问ChatGPT的关键所在。账号申请成功后,访问https://beta.openai.com/account/api-keys页面生成apiKey。其中尤其注意保存好key(不能再次查看,如果丢失只能重新生成)。
至此,基本准备工作已全部完成,接下来将为各位开发者讲述核心代码的开发流程。开发环境1)新建小程序首先,根据自己的实际情况下载对应版本的微信开发者工具。下载地址如下:https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html其次,我个人建议新建小程序时选择最简单的基础模版,并勾选使用微信云开发环境。去除繁杂的配置以便你能更快速的对微信小程序的代码结构有初步了解。我成文时,因为申请的小程序还没有审核通过,所以选择下述测试号用来进行开发。2)环境介绍导出初始化项目之后,你会看到比较清晰的文件结构。小程序开发跟普通的html、css、js 三剑客用来开发网页没有本质的区别。在微信体系内,wxml、wxss、js 都是 html、css、js的子集。页面的结构在wxml 中写,用到的样式在 wxss中定义;变量和函数以及网络请求 等在 js 中执行。简单说来,小程序包含一个描述整体程序的 app 和多个描述各自页面的 page。这里的 app 是指放在根目录的 app.js、app.json、app.wxss 这三个文件,他们主要负责全局性的逻辑、配置及样式。pages 则是你即将编写的多个页面。多个 pages 之间可以通过官方提供的导航功能进行跳转。每个 page 页面由 page.js、page.json、page.wxml、page.wxss 四个文件组成。其中 WXML 页面类似 HTML 文件,主要负责页面的结构。相比于HTML而言,WXML 更加简单。开发过程中,布局基本上是在使用view和text签,以及其它官方文档上说明的其他标签。但是各位在开发过程中,需要尤其关注官方文档中有关组件的内容。
开发过程1)如何引入 weui 组件
有两种组件接入方式可供选择:通过 useExtendedLib 扩展库 的方式引入。这种方式引入的组件将不会计入代码包大小。通过npm (opens new window)方式下载构建。npm包名为weui-miniprogram。如果你在开发过程中不想花大量时间研究npm且期望快速实现看到效果,又或者受困于小程序商店上架会限制到代码包大小(但是useExtendedLib 扩展库不计入代码包大小),个人建议选择了第一种方式。weui 官方参考文档如下:https://wechat-miniprogram.github.io/weui/docs/quickstart.html2)定义tabbar如果你觉得一个页面展示的信息过于单调,可以在小程序中使用tabbar。按照微信官方提供的自定义tabbar指引,你可以轻松把代码复制到项目工程中。本文把核心步骤代码公示出,更多细节有兴趣可以访问微信官方指引页,地址如下:https://developers.weixin.qq.com/miniprogram/dev/framework/ability/custom-tabbar.html
主要步骤:在app.json 中新增 tabbar 配置信息

{    "pages": [        "pages/chat/index",        "pages/index/index",        "pages/logs/logs"    ],    "window": {        "backgroundTextStyle": "light",        "navigationBarBackgroundColor": "#fff",        "navigationBarTitleText": "ChatGPT",        "navigationBarTextStyle": "black"    },    "style": "v2",    "sitemapLocation": "sitemap.json",    "useExtendedLib": {        "weui": true    },    "tabBar": {        "color": "#1485EE",        "selectedColor": "#FF514E",        "list": [            {                "pagePath": "pages/chat/index",                "text": "ChatGPT概览"            },            {                "pagePath": "pages/index/index",                "text": "我的创作"            }        ]    }}

值得注意的是,tabBar-list-pagePath的路径需要存在,否则编译器会报错。此处我把项目的工程目录截图公开,各位对比上下文配置信息更容易理解。3) 编写主界面规划的界面中只需要一个输入框及一个询问按钮。当用户点击询问按钮的时候,获取输入框中的值,去请求服务器的/ask接口获取结果。获取数据之后,再展示到页面中的结果展示中。确定了这个基本流程,接下来只要知道这些基本组件在微信小程序里面使用什么标签就好了。更多的细节可以访问 微信小程序的开发文档。

请输入你想要解决的问题:
0/50
回复: {{result}}
{{message}}


(资料图)

4)绑定点击事件在form表单上绑定事件:

然后在对应的js文件里面定义submitForm方法。
5)请求服务器接口

submitForm: function (e) {    //一般前置检查代码    ...        const that = this    wx.request({        url: "http://youdomain.com/api/xxxx",        method: "post",        header: {"content-type": "application/x-www-form-urlencoded"},        data: data,        success(rsp) {            console.log("ask result-----",rsp.data)            that.setData({                result: rsp.data.data.rsp,                disabled: false,                loading: false,            })        },        complete(d) {            console.log(d)        }    })    console.info("form.submited")        ....其他相关代码},

值得注意的是,上面用到的url需要在小程序中进行域名白名单注册,否则无法被访问到。同时进行注册的域名,需要进行备案。配置地址:登录微信小程序管理后台,在开发管理-服务器域名中进行配置。如下图。
到此,小程序部分配置完成。开发者可以用手机进行预览,或者真机调试。如果此时没有配置域名,也可以通过忽略掉域名强制检查。当然,如果是正式上线审核的话,必须有一个经过备案的域名,且该域名在小程序后台中完成了配置。
服务器接口
上述内容搭建完成后,下一步是配置服务器。本着快速开发的原则,可以借用“现成的轮子”,保障效率第一。各位可以参考现有的api-server脚手架(https://github.com/wytxer/template-node-egg)。之后配置接口名字以及对应的handle。我定义了一个名字叫做 /ask 的接口名字,同时定义了处理ask接口的 handle函数如下。

async ask() {  const { request, helper, axios, logger } = this.ctx  const { message } = request.body  logger.info("requset body===", request.body)  logger.info("message===",message)  ...其余相关代码  这里的token就是前面提到的在openai上申请到的token   const config = {    headers: { Authorization: `Bearer ${token}` }  }  const req = {    model: "text-curie-001",    prompt: message,    max_tokens: 2000,    temperature: 0.5  }  console.log("req===",req)  let text = ""  const result = await axios.post("https://api.openai.com/v1/completions", req, {    timeout: 300000,    headers: { Authorization: "Bearer ${token}" }  })    .then(rsp => {      console.log("pdf file result", rsp)      if (rsp.choices) {        text = rsp.choices[0].text      }    })    .catch(err => {      console.log("pdf file error", err)    })  const data = {    rsp: text  }  helper.success(data, "success")}

这里的token就是前面提到的在openai上申请到的token ,注意不要泄漏。腾讯api网关接入及部署1)网关接入考虑到并发能力,频率限制,自动扩容等能力的接入,我选择了腾讯云api网关。如何把api通过腾讯云暴露到外网呢?首先,访问https://console.cloud.tencent.com/apigateway/service?rid=1。其次,新建一个service,并且选择https协议【微信要求https协议】。最后,新建接口ask并且映射到我们自己的服务器。
更多腾讯云api 介绍:https://cloud.tencent.com/developer/article/1877519
2)部署过程在微信开发者工具里面进行代码上传,然后在微信小程序后台里面就能看到上传的版本。建议各位开发者提交审核之前用真机扫描体验一下,有bug及时修复。
确认无误后就可以提交审核了,系统提示1-7个工作日内完成。审核完成后,手动进行 “全量” 或者 “灰度” 发布,你的Chatgpt小程序就能在微信内被搜索到。腾讯工程师技术干货直达:

1、算法工程师深度解构ChatGPT技术

2、耗时减半?腾讯云OCR只做了3件事

3、探秘微信业务优化:DDD从入门到实践

4、10分钟!从架构视角读懂K8s

粉丝福利,后台回复“ChatGPT”获得本篇作者推荐相关学习材料

关键词:

 

热文推荐

天天百事通!3小时!开发ChatGPT微信小程序

导读|上周OpenAI发布了对话语言模型ChatGPT,相关讨论引爆全网。你是否也迫不及待体验一番?本文特邀作者腾讯云开发者社区作者戴传友从开发环

2022-12-19

今日快看!港股异动 | 海螺水泥(00914)跌近5%领跌水泥股 市场进入淡季 12月水泥需求可能环比走弱

水泥股跌幅扩大,截至发稿,海螺水泥(600585)(00914)跌4 65%,报27 7港元;中国建材(03323)跌3 53%,报6 56港元;华润水泥控股(

2022-12-19

世界球精选!19日零时起,沈阳市各医疗机构​取消查验患者核酸阴性证明

关于进一步优化医疗机构就诊流程的通知各区、县(市)卫生健康局,市登记管理各医疗机构:根据我市当前疫情形势,为进一步优化就医流程,方便

2022-12-19

环球看点!农行东山县支行:携手共建单位 学雷锋送温暖

农行东山县支行:携手共建单位学雷锋送温暖

2022-12-18

每日观点:微波炉可以煮挂面做法 微波炉如何煮挂面

1、微波炉可以煮挂面。2、首先、取一较深的微波炉器皿,加入一定量的清水,以高火2-3分钟水烧沸后下入挂面,加盖,高档煮3分钟,开盖添加1次(

2022-12-18

天天即时:考完中级会计师以后考什么

考完中级会计师以后考高级会计职称,注册会计师,中级经济师这些都是含金量很高的证书。取得会计师职称是高级会计职称报名的前提条件。高级会

2022-12-17

天天消息!盛和资源: 盛和资源独立董事关于第八届董事会第六次会议相关事项的独立意见

盛和资源控股股份有限公司独 立 董事            关于第八届董事会第六次会议相关事项的                  

2022-12-16

今日报丨农业农村部:全年牛羊肉产量有望再创新高 养殖规模化率提高2个百分点以上

(原标题:农业农村部:全年牛羊肉产量有望再创新高养殖规模化率提高2个百分点以上)证券时报网讯,据农业农村部消息,今年以来,全国肉牛肉羊

2022-12-16

环球今日讯!手机预装App终于可以卸载了:将于2023年执行

近日,两部门联合印发通告,进一步规范移动智能终端应用软件预置行为。《通告》指出,生产企业应确保移动智能终端中除基本功能软件外的预置应

2022-12-16

当前热文:濮阳市公安局孟轲分局多举措加强冬季消防安全工作

为认真吸取近期火灾事故教训,深入做好“平安守护”及今冬明春社会治安防控工作,孟轲分局结合辖区实际,采取多种措施筑牢消防安全“防火墙”

2022-12-15

世界看热讯:国家统计局:我国市场供给能力强大 保供稳价措施有力 物价有望继续保持总体稳定

据国家统计局12月15日消息,国家统计局新闻发言人付凌晖就2022年11月份国民经济运行情况回答媒体关注问题时表示,11月份,我国居民消费价格继

2022-12-15

世界即时:海尔生物(688139)12月14日主力资金净卖出536.89万元

截至2022年12月14日收盘,海尔生物(688139)报收于62 3元,下跌2 96%,换手率0 56%,成交量1 79万手,成交额1 13亿元。12月14日

2022-12-15

全球热推荐:鸿日达(301285):补选第一届董事会非独立董事

2022年12月15日公告发布

2022-12-14

【世界聚看点】造价师查询系统查询 「现在造价员证怎么查询」

可以,上海建设工程咨询网有全国注册造价员查询,可以进入申请系统。最重要的是专业关和造价员的查询登记管理系统。报名前可以通过看证书了解

2022-12-14

【全球快播报】12月13日基金净值:工银瑞信沪深300ETF最新净值4.1373,跌0.2%

12月13日,工银瑞信沪深300ETF最新单位净值为4 1373元,累计净值为1 0851元,较前一交易日下跌0 2%。历史数据显示该基金近1个月上涨4 03%,近3

2022-12-14

焦点速递!格尔软件(603232)12月13日主力资金净卖出2240.26万元

截至2022年12月13日收盘,格尔软件(603232)报收于15 79元,下跌4 88%,换手率4 54%,成交量10 51万手,成交额1 68亿元。12月1

2022-12-13

百事通!中金:锂电设备企业估值持续下行 或迎中长期逢低吸纳机遇

中金公司研报认为,锂电设备招标达阶段性高位,复合铜箔产业化进展顺利。在新能源汽车渗透率持续上升、储能等应用空间打开、更新替换需求增加

2022-12-13

当前要闻:日本公布2022年度热门汉字:“战”二次当选 理由奇葩

1995年开始,日本每年都会公布一个年度热门汉字,由民众投票产生,作为对过往一年的总结。2022年12月12日,日本汉字能力检定协会在京都市东山

2022-12-12

天天快看点丨烟台苹果几月份成熟 烟台苹果的成熟期是几月

1、烟台苹果一般在9-10月份成熟,不过由于品种多样,所以成熟的时间也稍有差异,嘎拉、红玉等品种一般在9月份便会成熟,而红富士则一般在10月

2022-12-12

天天热议:周大生: 关于公司为加盟商融资担保事项提供反担保的公告

证券代码:002867     证券简称:周大生    公告编号:2022-065              周大生珠宝股份有限公司    关于对

2022-12-09

资讯

花式避暑添夏日趣味 热浪滚滚燃高温经济

防晒、遮阳、冰饮,冲冲冲!西瓜、外卖、空调,不能停!多地持续的高温天气不仅贡献了很多热搜,也助燃了夏日经济。这其中,既有人们熟悉的传

2022-08-08     
天津津门虎队教练于根伟:机会来了要冷静

天津津门虎队明天将迎来中超联赛第五轮比赛,未尝一胜的现实也让全队上下倍感压力。昨天,主教练于根伟在谈及全队问题时表示:球员们在完成

2022-06-20     
北京推出14条秋游文化线路

金秋时节,北京市文化和旅游局以赏银杏品文化为主题,推出14条“叶落的季节——漫步北京赏银杏品文化主题线路”,邀市民和游客以步行、骑行

2021-10-27     
基因编辑发力 培育高质量人源化供体猪

此次人体试验,仅仅验证了基因编辑猪克服异种器官移植的超急性排斥反应,还需解决延迟性排斥反应、消耗性血栓等问题。但通过这次试验,能更

2021-10-27     
中国经济高质量发展步伐稳健 长期向好基本面未变

在全球疫情走势和经济走势趋于复杂的背景下,中国经济巨轮将驶向何方,举世关注。2020年10月26日至29日,党的十九届五中全会在京举行,明确

2021-10-27     
南美解放者杯决赛允许近4.5万观众入场

南美洲足联主席多明格斯25日与今年解放者杯决赛对阵的两支俱乐部负责人会晤,宣布决赛现场观众人数增加到球场容量的75%,即近4 5万人。今年

2021-10-27