|
故事的由来
基于对AI的爱好和兴趣,我独自走上了学习机器学习的道路。和所有热爱 AI 的人一样,我在孤独的探索之旅中勉强完成了几次深度学习模型训练。
最让我印象深刻的结果之一是情感分类模型。他可以根据你的言语,产生你言语背后作者的情感。
我对深度学习模型所展现出的“人性”感到惊喜,于是我开始思考如何将其“人性”转化为帮助人们的工具。
基于情感模型构建上层应用,为人类社会增添不一样的烟花。
基于多方考虑,我最终选择开发一个微信“情感”小程序。
故事开始了
在开发小程序之前,我们非常有必要对小程序有一个充分的了解。
什么是小程序
简单来说,与传统App相比,微信小程序是一种全新的连接用户和服务的方式。它具有出色的用户体验,并且可以在微信内轻松获取和传播。
小程序发展历程
事实上,小程序并不是凭空产生的。随着微信逐渐流行,成为几乎每个人都离不开的社交工具,微信也逐渐成为最大的移动门户网站。每日访问量超过所有浏览器的总和。虽然微信的日常活动数据无法通过第三方获得,但这一客观事实间接推动了小程序的诞生。
其实,在小程序正式进入人们视线之前,微信就已经有了类似的js调用接口。下面是调用微信js原生组件浏览图片的示例:
<p><pre> <code>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)
})</code></pre></p>
这种js接口其实本来是腾讯内部人员调用的,但是被很多个人开发者无意中发现并使用。这已经逐渐成为微信网页的标准。
2015年初,微信官方发布了一个专门用于Web开发的工具包,名为js-sdk。该工具包开放了微信支付、录音、语音识别等数十个接口。这为所有Web开发者打开了一扇以前从未打开过的新大门,让所有开发者可以自由地使用微信开发的原生能力,从而可以完成一些以前不可能或难以完成的任务。要做的事情。
js-sdk完美继承了js-sdk的特性,从只对内部开放变成对外开放。并且通过其公开的微信调用接口,为所有网页开发者提供了更多操作微信功能的能力。然而,这种模式并没有很好地解决移动Web体验问题:
于是,增强版的js-sdk诞生了,其中有一个非常重要的新功能,叫做:微信Web资源离线存储。
以下文字引自内部文件(最终未向公众发布):
微信Web资源离线存储是基于微信为Web开发者提供的Web加速解决方案。
通过使用微信离线存储,网页开发者可以利用微信提供的资源存储能力,直接从微信本地加载网页资源,无需从服务器拉取,从而减少网页加载时间,为微信用户提供更好的网页浏览体验。经验。每个公众号下的所有Web App总共最多可以缓存5M资源。
相信大家都明白了,这其实是HTML5中Cache的增强版。
但经过多次测试,发现仍然存在问题没有完全解决:
最终,微信意识到js-sdk无法处理这些问题,这就需要一个全新的系统来完成,而这个系统必须具备以下能力:
这就是小程序的由来。
故事开始了
首先请理解,本文不会教你如何从头开始开发小程序。如果您是软件开发新手。那么我建议你先了解一些基本的js语法和相应的前端知识。
在掌握了前端的基础知识后,相信借助小程序前端组件的官方文档,任何人都可以快速开始开发小程序。
下面我主要给大家分享两个最核心、性价比最高的小程序开发技巧:
小程序云开发
当我第一次像你一样开始考虑开发小程序时,我有很多担忧:
带着这些顾虑,我小心翼翼地打开了微信官方文档。脑子里分布式阅读后,发现了云开发这个关键词。
什么是云开发?
微信官方文档对此有解释:
开发者可以利用云开发来开发微信小程序和游戏,无需搭建服务器就可以使用云能力。
云开发为开发者提供完整的原生云支持和微信服务支持,弱化后端和运维概念。无需搭建服务器。利用平台提供的API进行核心业务开发,可以实现快速上线和迭代。同时,这种能力,与开发者已经使用的云服务兼容,并不相互排斥。
云开发提供了几个基础能力支持:
能力功能描述:云功能不需要自建服务器即可在云端运行代码。微信私有协议自然是经过认证的。开发者只需要编写自己的业务逻辑代码即可。无需自建数据库。可以在小程序前端操作,也可以在云功能上操作。 JSON数据库存储无需自建存储或CDN。在小程序前端直接上传/下载云文件。在云开发控制台上可视化管理云调用。原生微信服务集成。基于云功能,无需认证即可使用小程序开放接口。 ,包括服务器端调用、访问开放数据等能力
简单来说,通过云开发,我不用购买服务器就可以开发一个全栈小程序。
呵呵,是的,这就是我想要的。
如何搭建小程序云开发环境
那么如何搭建云开发环境呢?我根据官方文档总结了一套极简搭建教程,大家可以参考一下。
构建极简云开发环境的四步:
至此,一个云环境就完成了。
什么是云功能?
云开发环境搭建好之后,就该看看云功能是什么了。
官方定义如下:
云函数是一段在云端运行的代码。无需管理服务器。可以在开发工具中编写并一键上传部署,运行后端代码。
简单来说,云函数就是运行在云端的函数。
云函数有什么用?
云功能派上用场。
有了它,就等于拥有了一个“大后端”。所有业务逻辑和数据库操作都可以封装在云函数中调用,非常方便。
第一个云功能
说了这么多伟大的话,是时候付诸实践了。
右键单击云函数环境( | ),新建云函数,命名为 test:
可以看到默认文件(index.js)已经有云函数代码(获取当前微信用户上下文并返回用户信息):
<p><pre> <code>// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()
// 云函数入口函数
exports.main = async (event, context) => {
const wxContext = cloud.getWXContext()
return {
event,
openid: wxContext.OPENID,
appid: wxContext.APPID,
unionid: wxContext.UNIONID,
}
}</code></pre></p>
这时需要打开命令行,进入运行npm的目录来安装wx--sdk(如果不在该目录,则需要先运行npm init):
最后右键云函数,选择启用云函数本地调试,然后点击右下角即可调用:
可以看到函数执行成功,并获取到返回值(诸如...之类的信息)
至此,恭喜你快速完成了我们的第一个云功能。
如何在小程序中快速调用AI模型来自于清晨的灵光一现
相信大家都很好奇我如何在云函数中“零成本”调用AI能力。
其实一开始我也很担心这个问题。即使小程序具备云功能的功能,也没有办法“零成本”轻松调用AI模型。原因如下:
但在一个阳光明媚的早晨,我翻了个身,突然有了一个想法:
不管你有多少想法,不如付诸行动,所以我访问了腾讯云控制台的自然语言处理模块。
按照说明激活服务后,进入API key管理并记录API key:
那么如何在小程序中调用呢?我又陷入了沉思……
云函数调用AI模型
经过一番摸索,我回到测试云函数目录下的命令行,安装了腾讯云服务调用包:
<p><pre> <code>npm install tencentcloud-sdk-nodejs</code></pre></p>
然后修改测试云函数(index.js):
<p><pre> <code>// 云函数入口文件
const cloud = require('wx-server-sdk')
const tencentcloud = require("tencentcloud-sdk-nodejs");
cloud.init()
// 云函数入口函数
exports.main = async (event, context) => {
const NlpClient = tencentcloud.nlp.v20190408.Client;
const models = tencentcloud.nlp.v20190408.Models;
const Credential = tencentcloud.common.Credential;
const ClientProfile = tencentcloud.common.ClientProfile;
const HttpProfile = tencentcloud.common.HttpProfile;
let cred = new Credential(event.secretId, event.secretKey);
let httpProfile = new HttpProfile();
httpProfile.endpoint = "nlp.tencentcloudapi.com";
let clientProfile = new ClientProfile();
clientProfile.httpProfile = httpProfile;
let client = new NlpClient(cred, "ap-guangzhou", clientProfile);
let req = new models.SentimentAnalysisRequest();
let text = event.text
let params = '{"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)
})
}</code></pre></p>
在这段代码中,我通过腾讯云账号中的key连接了AI情绪预测接口,最终打印出了情绪预测结果。
接下来,我打开本地云函数调用窗口,传入相应的参数:
然后点击调用,最后看到AI模型的预测结果:
最后我成功使用云函数调用了免费的AI开放接口。
这时,我的眼里含着泪水。感动之余,我也有点满足。原来云开发还可以这样玩。
故事结束
至此,相信您已经理解并掌握了最重要的两个部分:
回想起来,整个小程序的开发过程大约花了三天两夜,整个体验大概类似于一场“黑客马拉松”。
,又称黑客日、黑客节或编码节,是在黑客中流传的一个新术语。黑客马拉松是一项活动。
在这个活动中,计算机程序员和其他与软件开发相关的人员,如图形设计师、界面设计师和项目经理聚集在一起,紧密合作开发一个软件项目。
黑客马拉松的灵魂是程序和应用程序的协作编写。黑客马拉松的长度通常从几天到一周不等。
——维基百科
于是乎,经过“疯狂”的开发,日记小程序的雏形诞生了。
虽然前端页面不是很复杂,但确实投入了大量的开发精力。
当它被开发出来的那一刻,我并不关心是否有人真正使用它。因为我从他身上获得了全身心投入发展的快乐。
最后祝愿各位勤奋练习的读者都能开发出有特色的AI小程序~ |
|