故事的由来带着对AI的爱好和兴趣,我走上了一个人学习机器学习的道路。和所有热爱AI的人一样,在一次孤独的探索之旅中,我勉强完成了几个深度学习模型的训练。给我印象最深的一个成果就是情感分类模型。他可以根据你的文字生成背后作者的喜怒哀乐。深度学习模型所展现的“人性”让我惊喜不已,于是我开始思考如何将其“人性”转化为帮助人们的工具。建立一个基于情感模型的上层应用,让它为人类社会增添不一样的烟火。基于多方面的考虑,我最终选择了开发一款微信“情感”小程序。故事开始了。在开发小程序之前,我们非常有必要对小程序有一个全面的了解。什么是小程序简单来说,相对于传统的App,微信小程序是一种全新的连接用户和服务的方式。具有极佳的用户体验,可在微信内轻松获取和传播。小程序的发展史其实,小程序并不是凭空产生的。当微信大行其道,成为几乎人人离不开的社交工具时,承载微信的WebView逐渐成为最大的移动Web入口。WebView每天的访问量甚至超过了所有浏览器的访问量总和。虽然无法通过第三方获取微信WebView的日常活动数据,但这一客观事实间接促进了小程序的诞生。其实在小程序正式进入人们视线之前,微信就已经有了类似的js调用接口。下面是调用微信js-bridge原生组件浏览图片的例子:WeixinJSBridge.invoke('imagePreview',{current:'http://inews.com',urls:[//所有的url列表图片,数组格式'https://img/1.jpg','https://img/2.jpg','https://img/3.jpg']},function(res){console.log(res.err_msg)})这种js接口本来是给腾讯内部人员调用的,没想到被很多个人开发者发现并使用了很多,逐渐成为了网页的标配微信。2015年初,微信官方发布了一个web开发工具包js-sdk。在这个工具包中,开放了微信支付、录音、语音识别等几十个接口。.这为所有Web开发者打开了一扇全新的大门,让所有开发者都可以自由使用微信开发的原生能力,完成以前不可能或很难完成的事情。做事。js-sdk完美继承了WeixinJSBridge的特性,从只对内部开放变为对外开放。并通过其暴露的微信调用接口,让所有Web开发者拥有更多操作微信功能的能力。但是这种模式并没有很好的解决移动端的web体验问题:当用户访问页面时,在页面显示之前会有一个比较可感知的白屏过程。受限于网速和不同终端的性能,这个问题会越来越明显。于是乎,一个加强版的js-sdk诞生了,它有一个很重要的新特性叫做:微信Web资源离线存储。以下文字引用自一份内部文档(最终未对外公开):微信Web资源离线存储是一款基于微信的面向Web开发者的Web加速解决方案。通过使用微信离线存储,网页开发者可以利用微信提供的资源存储能力,直接从微信本地加载网页资源,而无需从服务器拉取,从而减少网页加载时间,为微信用户提供更好的网页浏览体验。每个公众号下的所有WebApp最多可以缓存5M资源。相信大家已经明白了,这其实就是HTML5中ApplicationCache的增强版。但是经过多次测试,发现还是有问题没有完全解决:页面切换比较生硬;点击有明显延迟的感觉。最终,微信意识到js-sdk无法解决这些问题,需要一个全新的系统来完成,而这个系统必须具备以下能力:加载速度快,原生体验,易用安全的微信数据开放性,兼顾开发效率和开发难度,这就是小程序的由来。故事开始前言首先请大家见谅,本文不会教大家如何零基础开发小程序。如果您是软件开发新手。那么我建议大家先了解一些基本的js语法和相应的前端知识。掌握了前端基础知识后,相信借助小程序前端组件官方文档,任何人都可以快速上手开发小程序。接下来主要给大家分享两个最核心也是性价比最高的小程序开发技巧:搭建小程序云开发环境;如何使用云开发调用AI模型接口。小程序云开发刚开始想开发小程序的时候,和你一样有很多顾虑:需要买域名和服务器吗?维护成本高吗?带着这些顾虑,我小心翼翼地打开了微信官方文档。脑补分布式阅读后,发现了关键词云开发。什么是云开发?微信官方文档中是这样解释的:开发者可以使用云开发来开发微信小程序和游戏,不需要搭建服务器就可以使用云能力。云开发为开发者提供完整的原生云支持和微信服务支持,弱化后端和运维概念,无需搭建服务器,使用平台提供的API进行核心业务开发,可实现快速启动和迭代。,与开发人员已经使用的云服务兼容,并且不相互排斥。云开发提供了几个基础能力支持:能力说明云函数不需要自己搭建服务器在云端运行代码,微信私有协议提供自然认证,开发者只需要自己写业务逻辑代码,不需要自己搭建自己的数据库。小程序前端操作,JSON数据库存储也可在云函数中读写无需自建存储和CDN直接在小程序前端上传/下载云端文件,云端可视化在云开发控制台管理调用原生微信服务集成基于云函数无需认证即可使用小程序开放接口的能力,包括调用服务端和获取开放数据的能力。简单的说,有了云开发,我不用买服务器就可以开发出全栈小程序。嘿,没错,这就是我想要的。如何搭建小程序云开发环境那么如何搭建云开发环境呢?根据官方文档总结了一套极简搭建教程,大家可以参考。四步搭建极简云开发环境:首先需要注册一个小程序账号,添加管理员/开发者微信账号并记录APPID;然后需要下载小程序开发工具;然后使用管理员/开发者账号登录开发工具,并填写小程序的APPID并勾选云开发选项,点击新建;在页面点击云开发,根据提示选择云开发额度免费版。至此,云环境搭建完成。什么是云函数?云开发环境搭建好之后,就该看看云函数有哪些了。官方定义如下:云函数是运行在云端的一段代码。它不需要管理服务器。可在开发工具中编写,一键上传部署,运行后台代码。简单来说,云函数就是运行在云端的函数。云函数有什么用?云函数非常有用。有了它,就相当于有了一个“大后端”。所有业务逻辑和对数据库的操作都可以封装在云函数中调用,非常方便。第一个云函数说了这么多,是时候实践一下了。右键云函数环境(cloudfunctions|xxxxxxx),新建一个云函数,名称为test:可以看到默认文件(index.js)已经有了云函数代码(获取当前微信用户上下文,返回用户信息)://云函数入口文件constcloud=require('wx-server-sdk')cloud.init()//云函数入口函数exports.main=async(event,context)=>{constwxContext=cloud.getWXContext()return{event,openid:wxContext.OPENID,appid:wxContext.APPID,unionid:wxContext.UNIONID,}}这时候需要打开命令行进入目录运行npminstall安装wx-server-sdk(如果没有目录node_modules需要先运行npminit):最后在云函数上右击选择启用云函数本地调试,然后点击右下角调用:可以看到函数执行成功并返回值(openid等信息...)至此,恭喜你s快速完成了第一个云功能。如何在小程序中快速调用AI模型相信大家都很好奇我是如何在云函数中“零成本”调用AI能力的。其实一开始我也很为这个问题苦恼。即使小程序具备云函数的功能,也无法“零成本”轻松调用AI模型。原因如下:小程序云功能目前只支持node.js,我的模型调用接口代码是python;再“云”,要想运行自己的AI模型,就必须有一台16G以上内存的机器(成本巨大);即使有自己的服务器,也需要注册域名,太麻烦;但在一个晴朗的早晨,翻身起床后,突然灵光一闪:能否调用腾讯自家的AI开放接口间接实现这个目标?想法再多,不如付诸行动,于是访问了腾讯云控制台的自然语言处理模块。按照指引激活服务后,进入APIkey管理,记录APIkey:那么在小程序中如何调用呢?又陷入了沉思……对云函数调用AI模型摸索了很久,回到测试云函数目录下的命令行,安装腾讯云服务调用包:npminstalltencentcloud-sdk-nodejs,然后修改测试云函数(index.js)://云函数入口文件constcloud=require('wx-server-sdk')consttencentcloud=require("tencentcloud-sdk-nodejs");cloud.init()//云函数入口函数exports.main=async(event,context)=>{constNlpClient=tencentcloud.nlp.v20190408.Client;constmodels=tencentcloud.nlp.v20190408.Models;constCredential=tencentcloud.common.Credential;constClientProfile=tencentcloud.common.ClientProfilep;constHt=tencentcloud.common.HttpProfile;letcred=newCredential(event.secretId,event.secretKey);lethttpProfile=newHttpProfile();httpProfile.endpoint="nlp.tencentcloudapi.com";letclientProfile=newClientProfile();clientProfile.httpProfile=http个人资料;letclient=newNlpClient(cred,"ap-guangzhou",clientProfile);letreq=newmodels.SentimentAnalysisRequest();lettext=event.textletparams='{"Text":\"'+text+'\"}'console.log('待预测字符串:'+text)req.from_json_string(params);client.SentimentAnalysis(req,function(errMsg,response){if(errMsg){console.log(errMsg)}console.log('AI预测积极情绪:'+response.Positive)console.log('AI预测消极情绪:'+response.Negative)})}inthis代码中,我通过腾讯云账号中的key连接到AI情绪预测界面,最后打印出情绪预测的结果。接下来我打开本地云函数调用窗口,传入相应的参数:secretId(腾讯云API服务密钥Id)secretKey(腾讯云API服务密钥Key)text(待预测的字符串)然后点击调用,终于看到了AI模型预测结果:终于成功使用云函数调用免费AI开放接口。这时,我的眼里充满了泪水。感动之余,还有一丝满足。原来云开发还能这么玩。故事结束文章到这里,相信大家已经理解并掌握了最重要的两个部分:搭建云端开发环境快速调用AI模型回头看,整个小程序开发过程大概用了三天时间和两个晚上。“黑客马拉松”类似。Hackathon,又称黑客日、黑客节或编程节,是黑客界的一个新词汇。黑客马拉松是一项活动。在这次活动中,计算机程序员和其他与软件开发相关的人员,如图形设计师、界面设计师和项目经理,以密切合作的形式聚集在一起,共同从事软件项目。黑客马拉松的灵魂是协作编写程序和应用程序。编程马拉松的持续时间一般从几天到一周不等。--Wikipedia于是乎,经过“疯狂”的开发,一款日记小程序的雏形诞生了。前端页面虽然不是很复杂,但是在开发上确实下了不少功夫。一旦它被开发出来,我不在乎是否有人真正使用它。因为我从他身上收获了全身心投入发展的快乐。最后,祝各位苦练的读者都能开发出有特色的AI小程序~
