点击创建按钮,进入产品开发界面。四个主要区域如下图所示。
理论上,传统的开发工作是在区域2和区域3创建代码文件并编写代码,在区域1预览效果,在区域4查看运行信息和错误信息。
这看起来非常困难,但下一步就到了。
2.2 登场
打开后应该是这个页面,点击打开按钮。
选择刚才创建小程序时选择的“目录”文件夹,然后你会看到如下界面。可以看到刚才微信开发者工具界面中左侧是区域2(代码文件管理),右侧是写入具体代码文件的地方。因此,我们编辑的代码(因为双方指定的目录位置一致)也会在微信开发者工具中更新。稍后,在微信开发者工具中编写完代码后,您将返回微信开发者工具进行预览和调试。
然后点击下图右上角的按钮。
你会看到一直陪伴在你身边的开发助手(虽然有点俗套了,就这么称呼吧)(哦不,代码都是它写的……)。
如上图所示,可以在该位置切换型号。默认值应该是-3.5-。作为免费用户,有免费使用次数(应该是500次),足够开发这样的产品了。如果您没有看到-3.5-或者选择了“不可用”,您可以检查您是否在客户端上没有登录帐户。
2.3 正式开始开发
终于到了最激动人心的部分了。让我们看看我提出的前两个请求:
我一下子就把的所有页面和主要功能逻辑都告诉了它。它给了我设计思路,但几乎没有代码。
所以我继续明确要求它为我编写代码。这次它帮我写出了每个页面的主要代码。 (图片太长,所以后面几页的代码就省略了)
然后我告诉他,我按照他提供的代码完成了相应文件夹和文件的创建,并将他提供的代码全部复制到了相应的文件中。 (如果也能自动创建文件就更简单了)
你可以看到我所做的事情都会同步给他,我觉得还是蛮有用的。对当前状态和需求的描述应该尽可能清晰准确,以帮助其给出更正确的建议和代码。
然后我按照上面给出的分步说明将代码复制到相应的文件中。这时我回到微信开发者工具,发现可以看到粗略的页面(可惜没有截图)。但由于没有数据,我让它为我生成一些样本数据。
这样,主页(图书列表)就会有更真实的外观。然而,默认生成的页面相当难看。例如,提交页面如下所示。
所以我先调整一下显示。 (一开始我想到了简单的黑白风格)
根据其代码进行修改。
在这里你会遇到新的情况。您不是完全创建新的代码文件,而是修改已经包含一些代码的文件。开发助手在输出代码时可能会省略一些内容(这是有好处的,比如我写了一篇1000字的文章,我让它给我加一个案例,它就不需要重复我写的内容,所以它会说哪里没有改变并开始插入xxxx),此时我们还不能完全复制粘贴代码。
这时就有一个功能,简称为“自动修改”。如下图,你只需要找到对应的代码文件,然后点击新编写的代码的“”按钮,它就会自动判断当前代码中哪些地方需要增删改查。 。
这个功能非常有用,也是我不用写一行代码就能完成开发的重要原因之一。
然而,有时这里会犯错误。例如,当整个代码变得更加复杂时,它可能会忘记以前的一些代码是用来做什么的,并且可能会错误地删除一些代码,从而导致问题。 (因为这涉及到大模型的一个固有限制,即上下文长度,很难在短时间内解决。不在大模型行业的从业者可以忽略底层技术原理,可以简单地理解开发助理的记忆能力有限,只记得关注你最后一打或几十次互动)
所以有时候我们需要告诉它某个页面以前有哪些功能,然后让它在此基础上修改代码,或者让它给出修改建议而不删除原来的代码功能。这里的相关功能演示如下。您提出需求和问题时可以携带相关代码。
当然,这个过程并不像我上面描述的那么简单。有时代码确实会发生变化,所以在完成重要功能后,可以复制整个代码文件夹进行备份。同时,当你获得更多的经验时,你也会发现这次应该改变,所以你不能急于修改代码,而是可以重新陈述你的需求并带来更多的背景信息或一些限制。
你可以尝试把这个过程当成一个人,一个真正的开发者,对他提出要求。例如,这是一个很好的例子。
感觉如何?
当我发现它完全理解我的需要并解决了问题时,真是太酷了。
再比如,它有时会给我一段代码和一些指令,但我看不懂,所以我直接引用那段代码并询问它:
2.4 云开发环境相关的一些高层功能开发
主页面设计和基本交互功能已经差不多完成了,我开始思考如何填写真实数据。所以我首先问了它的想法。
这是一个相当全面的考虑。
我构建了两个功能,一个是让用户提交图书列表链接,我利用大模型能力自动解析链接中的图书列表内容;另一种是每隔20分钟自动从网上爬取一些书单内容。
先说第一个功能,用户提交。以下是在调试页面测试的过程:用户提交图书列表链接,自动解析内容,并给出评分和评论。输出还有打字机效果和手机振动效果。
每个书单链接都会自动生成书单信息,包括以下部分:[书单名称]、[书单作者]、[书单描述]、[书单内容]、[标签]、[阅读内容] ]、[读鸭评分]实现这个功能涉及到三个重要概念:云函数、大模型应用、云数据库
我理解云函数其实就是一个有特定处理逻辑的函数。我这里实现的是:接受用户输入的URL,并从URL中返回图书列表信息。
也应该直接写在某个页面的处理逻辑中,但如果与各个页面无关,或者是一个可以被多个页面或功能复用的功能,那么可以单独作为云使用功能。出来。还有一个好处是,在我看来,云功能更新不需要官方微信审核,可以直接上传到云开发环境。
按照开发助手给我的指示,创建了文件夹(一定要叫这个名字,应该是微信开发的标准),然后在里面创建了一个文件夹(自己命名的,代表的功能“处理图书列表”)。同样按照开发助手的指导,在文件夹中创建必要的文件:
为了清楚地看到标记,我将主题颜色更改为白色
核心的是.js文件,里面包含了云函数的运行逻辑; .json用于控制一些内容如超时、最大内容限制、定时触发机制等;我理解.json的主要作用是描述云功能正常运行所需的依赖关系;我知道所需的依赖项应该存储在该文件夹中。当我们安装依赖项时,会自动创建该文件夹。
如何安装依赖项?
点击下图右上角的按钮。一个新区域将出现在中下部分。它被称为命令行区域。默认情况下,它将位于当前代码的文件夹中。通过命令行打开文件夹(命令行见常用操作方法:)。进入云函数文件夹,然后按照开发助手的指导执行npm来安装这个依赖。
安装完成后,会出现一堆看不懂的信息。你可以复制给开发助理,他会给你解释。一般来说,没有什么需要修改的。
至此,这个云功能需要开发的部分就OK了。然后进入微信开发者工具,点击左上角的“云开发”按钮,如下图。
进入云开发控制台。点击“云功能”,后面会用到“数据库”和“存储”功能。
单击“创建”,命名为云函数。
然后进入微信开发者工具,如下图,右键云功能,然后点击上传(“上传所有文件”适用于依赖已更新的情况,“上传但排除”适用于依赖未更新的情况)已更新)。
上传成功后,进入云开发控制台,选择功能的“云测试”。
然后就可以在日志中查看本次运行的日志。如有错误,请发送给开发助理进行调整修改。修改后,重新上传并测试,直至成功。
讲完云功能第一个重要概念,第二个就是大模型应用开发。
这个云函数主要做了两件事。首先是调用远程书单内容解析服务获取书单信息。二是将获取到的信息存储到数据库中,以便后续在各个列表页面上展示。
由于各个平台(豆瓣、微信读书、微博、小红书...)的图书列表内容结构不同,如果为每个平台单独编写代码来解析图书列表内容,那么开发和维护成本会非常高,所以我想到了大模型的能力,大模型可以像人类一样读取和理解网页的内容,然后根据我的需求进行输出。另外,除了网页已有的内容:【书单名称】、【书单作者】、【书单描述】、【书单内容】之外,我还希望获得更多有趣的增量内容:【标签】 ,[读什么鸭子评分],[读什么鸭子评论],所以传统的打码方法就更不可行了。
因此,这里的书单内容分析服务,我使用了自己的大型模型应用开发平台:毕升。
它是一个开源的LLM应用开发平台,专门针对企业场景,可以完全私有化并在公司内部部署。它已被大量行业领先组织和财富 500 强公司使用。
由于可以开发非常复杂的应用程序,的需求如下图所示。我在一个简单的应用模板的基础上做了一些小小的修改。主要实现对网页文本内容的分析,然后将解析后的文本和提示词传递给大模型。大模型会根据提示词中的要求输出所需的图书列表信息。
我现在的提示语是这样的:
# 你的性格是个恶毒的{},你的态度一定要很明确。
# 任务
1、首先需要阅读下面的“书单文章”,提取四条信息:【书单名称】、【书单作者】、【书单描述】、【书单内容】。这四个信息非常重要。这是无法弥补的。如果“图书列表文章”中不存在该信息,则留空,其中【图书列表内容】以书名+作者姓名的形式表示,每本书之间用换行符分隔,如:
奥斯特洛夫斯基《钢铁是怎样炼成的》
欧内斯特·海明威《老人与海》
2、然后根据自己的知识来分析“书单文章”的内容,输出两条信息:【标签】和【评分】,其中【标签】可以是多个,但不能超过5个;其中[评分]是从以下几个选项中选择:平淡、平凡、有趣、独特、栩栩如生、晦涩难懂、有洞察力、引人入胜、难忘、发人深省、雄伟、切中要害、有意义、珍贵、收藏、精湛,后者要求越高,出现的概率越低。
3、最重要的是【评价】这个书单里列出的书。评估的主要内容是解释为什么你应该读这些书。您可以选择几本书进行简要回顾,也可以回顾整个书籍列表。语言风格幽默、切题、出人意料。内容中穿插不少于5个表达方式。字数越少,表达准确越好。注意:开头不要使用“哇”“哇”等感叹词,直接谈论内容;并且不要使用“xxx is xxx”。
举一个很好的例子:
书单包括:《西游记》、《水浒传》、《红楼梦》、《三国演义》
评价:《西游记》也可以说是“公费吃喝,来这里”️,什么是真经,谁能定义呢? 《红楼梦》是文学的巅峰之作,具有极高的艺术成就和思想价值,可惜普通人看不懂。
举个不好的例子(评论不幽默,出乎意料):
书单包括:《西游记》、《水浒传》、《红楼梦》、《三国演义》
评价:中国四大名著,一本文学成就极高的书,人生不可错过的一本书。
4、以上七项信息所使用的语言与“图书列表文章”的语言一致。如果“图书列表文章”内容为中文,则为中文。如果“图书列表文章”的内容为英文,则七项信息的内容也将为中文。英语。
5、以上7条信息必须以JSON格式输出。
6、如果判断“图书列表文章”中的内容不是图书列表,则不需要输出以上七条信息。只需告诉用户没有图书列表信息并要求用户检查即可。语气可以更俏皮可爱一些。
#{}
你的输出:
构建完成后,点击“发布”按钮即可看到应用的接口调用方法。
如果你的场景需要实现的大型模型应用和我的类似,而你完全不懂技术,可以参考我的调用方法。
将这些提供给开发助手,它会帮助你编写调用接口的代码。
基于此我们还可以开发很多更复杂的大模型应用。
现在我们已经获得了正确的图书列表信息,下一步就是将其保存到数据库中。当你描述处理图书订单的需求时,你可以告诉开发助手你需要将处理结果存储到微信云开发环境的云数据库中,它会提示你创建一个名为“xxx”的集合。如下图所示,点击Add按钮进行创建。
好了,经过各种调试和修改,就可以通过页面提交书单内容了!为了增加乐趣,我提出了以下新要求。
没错,你只需要像这样直接提出你的要求,基本上就会立即实现。太酷了~
2.5 定时自动运行
用户现在可以提交图书列表,这很棒。但早期用户如何提交图书列表呢?
所以我就让他想办法自动获取
几个
几个
按照说明基本配置成功。后来又增加了两个优化项:
调用大模型需要很长的时间,每次调用都会产生少量费用,这样我们就可以减少错误调用(有些链接不是书籍信息),所以我先在云函数中写了一个逻辑,用正则表达式来匹配是否有网页中的“发布”。诸如“”之类的关键字可用于调用大型模型应用程序。由于必应搜索发现无效链接过多,我们改为在豆瓣上定向搜索。
在排查云功能和定时触发错误的过程中,发现了几个注意事项:
1. 超时时间
更改超时时间,默认是3秒,而我每次需要更新的图书列表数量比较多,所以我把它改为最长60秒的时间。
2. 定时器设置在云函数的.json文件中设置。我这里设置的意思是每10分钟执行一次。
需要注意的是,微信云功能的定时触发使用了特殊的cron表达式,它包含7个字段,而不是标准cron表达式的5个字段。 3.更新云功能并清除缓存
由于修改其他页面代码只需要保存代码文件,并且需要上传云功能才能生效,所以有时会忘记这一步,导致测试失败。 。 。
另外,有些改动需要清除缓存才能生效,所以如果你按照要求修改了代码但还是不行(会崩溃一点),可以尝试清除缓存。我通常选择“全部清除”。
2.6 其他经验
2.6.1 云存储的使用
我用()绘制了多种图书排行榜评级奖章。
本来这些图片是放在code文件夹里的,但微信限制小程序整体代码大小不能超过2M,所以这些图片需要存储在云存储中。
操作比较简单,只需点击“上传文件”按钮即可上传所有文件。那么每个文件的“文件id”就是读取该文件的地址。按照开发助手的指导,将相关图片地址一一替换即可。
2.6.2 出题助手及自我能力提升
开发助手很强(本质上大模型很强)。它不仅能帮我写代码,甚至还知道微信开发者工具的按钮在哪里(应该是模型训练数据有它的开发者手册数据)并指导我。操作。
但有时会出现错误和它不知道的事情,所以如果你发现它给出的建议不起作用,你可以使用搜索引擎来寻找答案。
另一个好的方法是,如果你发现它给出的答案有问题,你可以尝试给他一些反问和提醒。
如果你开始能够提出一些正确的反问句,说明你已经开始对代码有了一定的理解。这是一个逐步的过程。在一步一步的调试和开发助手给你的指导中,你逐渐开始理解很多概念。首先从前端简单的页面设计开发开始,到后端逻辑、数据库、一些功能的执行,然后一点一点接触和学习更复杂的概念。
这是一个随着你自己的需求增加而自然向前推进的学习过程。我们不需要在不知道它们的用途的情况下提出并学习很多概念。由于它是面向特定目标的,所以我们会非常有动力去理解和学习,而且大部分都会有非常快的反馈。
通过写这篇文章,我几乎分享了开发过程中的所有主要经验。
还有很多不完善的地方需要未来迭代,比如用户系统,比如通过收集书单评分徽章来激励用户上传更多的书单,比如激励用户分享,比如支持链接的解析到微信公众号文章(微信官方反爬虫相当厉害),比如支持B站视频形式的图书列表。比如我还想添加一个自动操作功能(自动选择一些书)列出卡片和发布到抖音、小红书等社交平台)...
后记:一年计划推出12款产品
平均每月一款产品。著名的独立开发者(《MAKE:the way》的作者)也实施了这个计划。
每个产品不一定要很漂亮,应该尽早发布,尽早得到真实的反馈。用户的真实反应值得无数巧妙的思考和分析。
我的灵感库里还有大约 20 个我想要制作的产品。
在后续的产品开发过程中,我们会尽量(如果有足够的精力)使用像这样的in方法,并通过公众号和社区发布。