Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Vue:npm run serve 到底做了什么?

Vue:npm run serve 到底做了什么?

作者头像
用户9078190
发布于 2022-10-25 13:28:28
发布于 2022-10-25 13:28:28
2.9K01
代码可运行
举报
文章被收录于专栏:知码前端知码前端
运行总次数:1
代码可运行

👉腾小云导读

也许你经历过这种情况:产品和设计同学用一句话就把需求说完了,你抓破脑袋做出来的版本又达不到他们的要求。不如尝试让 AI 承担痛苦,让它理解、拆解并实现一句话需求?本篇作者尝试提出一个自动配置可视化系统,通过自动生成表单解决上述痛点。欢迎阅读~

01、简介

很多时候可视化系统是用于团队提升效率的利器,但无论使用者是产品运维还是开发者,都会遇到这样的问题:产品运维要配置可视化系统,有一定的使用配置成本。开发者要理解需求,又有一定的沟通成本。如果 AI 比你更会配置,也比你更容易懂“一句话需求”那会怎么样呢?

比如下面的两个例子,收到制作表单的需求时只有一句话:

“我想生成互联网职业调研”——将这句需求输入,会生成以下效果,系统自动补充了详细需求如:“年龄”、“性别”、“职业状态”、“最关心的互联网领域”、“工作经验”、“学历”、“毕业院校”、“毕业时间”。

“我想要一个任天堂调研”——将这句需求输入,会生成以下效果,系统自动补充了详细需求如:“是否拥有任天堂游戏机”、“最喜欢的任天堂游戏”、“最喜欢的游戏类型”、“最喜欢的游戏平台”。

从上面两个案例看的出来,自动生成的表单能满足基本的需求。

当然,你在正常工作时会收到非常明确的需求。这时你很明确自己想要什么,AI 就会根据你的需求进行输出,尽量不去做更多的拓展。

“生成一个仙剑奇侠传的调研,我想知道粉丝的年龄段分布,性别,想知道他们最爱哪个系列,提供一些最喜欢的角色给粉丝选择”——将这句详细需求输入,会生成以下效果:“年龄段”、“性别”、“最喜欢的系列”、“最喜欢的角色”。

整个展示流程:

AIGC 是零代码的体现,可视化系统则是低代码的体现。
但互联网没有银弹:
  • 零代码的自由度十分受限,拓展性无法满足用户。
  • 低代码通常需要内置大量的业务属性的模版,来降低用户的初始使用成本。
  • 数据更新接入的模型是 gpt-3.5-turbo,需要一些实时数据时仍然生成的是过往的旧数据。

AIGC 的能力是可以很好地弥补这中间的 GAP,AIGC 负责根据实际的用户需求来输出模版,然后用户就在生成的模版基础上进行部分的修改来满足最终的需求。转化到技术侧就是,AI 根据需求去生成满足可视化系统的 DSL 后,并导入到可视化系统中 。当我们明确我们需要 AI 实现的目标,下一步就是如何去做了。

02、AI 生成 DSL

DSL 是由人类对特定领域进行抽象的描述语言,在表单引擎这里则是 JSON Schema。要达到最终的 AI 生成 DSL 的目的,我认为有下面几个关键点:

  • 让 AI 更好理解你的输入。
  • 让 AI 按照你的规则输出。

但如何更好地激活 AI 达成这个听起来很简单的能力呢?

2.1 链路拆分

其实上述的关键点就是我当前系统的重要两个环节:

  • 先让 AI 总结和描述需求所需要使用的表单组件和字段含义;
  • 我们拿着 AI 需要使用的表单组件,组合出一个组件使用的例子,通过仿冒发言的方式让 AI 进行学习。

最终 AI 就可以参照我们的要求生成我们想要的 JSON Schema 了。

2.2 Few Shot

如何通过少量提示(Few Shot)让 AI 按照我们的要求输出数据呢?这里我参考了一个 Mr.-Ranedeer-AI-Tutor 的项目,它内置了一个 AI 导师功能来提供一个强大的学习课程能力。推荐大家在 GPT-4 上使用,效果非常的赞。它通过规范的 Prompt 传达给 AI 要做的事情,生成的规则是怎么样的。

这个是其中一个 Markdown 文件,利用这个 Prompt 激活 AI 导师。

当把整个 Markdown 丢给 ChatGPT,按照 Formats 字段,它很好地学习了整个输出的格式。

于是我也按照这样的规则去制定我的 Prompt。

通过上述的 Prompt,我主要做了以下几件事:

  • 提供了组件配置,且规定了 AI 只能使用这里的配置去实现需求。
  • 规定了 JSON 的输出格式,一个 components 数组,一个 requirement 的需求描述字段。
  • 不断调优过程中,制定的其他规则。

最终 ChatGPT 给我们正确返回了 JSON 数据。

用于生成 schema 的 Prompt 和这个也差不多,这里就不展开解释了。

2.3 仿冒发言

Chat Message 的定义中是有三种角色可以定义的 System, AI, Human。其中我们可以通过生成 Human Prompt,在我们生成 AI Prompt 来定义 AI 的回答,后续 AI 就会将这个回答的格式进行一定的参考。

在需求生成阶段,我定义的 AI 回答格式是这样的。

最终 AI 的生成格式也是按照我们的格式进行的输出。大致如下:“标题(组件,选项)”。

和用于生成 Schema 阶段的 Fake Answer 同理,这里就不展开解释了。

2.4 调优方案

AI 在学习如何使用组件的过程中, 并不是全量进行学习的,这对 Token 消耗量很大。我在第一步转换需求的任务中,已经收集了 AI 会使用到的 components 列表。然后将 AI 生成错误的组件进行定制化的教学,专门组成一个学习案例,再配合 Prompt 的部分规则要求来纠正 AI。

例如 AI 一开始没办法正常输出带有选项的组件,总会输出 items 来作为选项,而正确的规则是 enum 字段。于是我通过传入组件的正确使用方式来让 AI 学习正确的使用方式。

从输出案例中找到可以 Select 组件的 JSON 规则。

并通过一条 Prompt 规则去强化 AI 的认知。

你可以通过 AI 的返回,来不断优化 Prompt 的规则,引导 AI 往正确的方向进行内容的输出。

03、实时推送

下面快速总结一些 Langchain 的 Stream 方案中遇到的问题:

3.1 开发阶段

我为了系统的整体交互流畅,输出内容这里是参考 ChatGPT 的服务器实时推送方案,使用的是 SSE(Server-Sent Event),客户端则是使用 fetch-event-source 进行数据的接收。

服务器需要做出如下的配置来开启 SSE。

代码语言:javascript
代码运行次数:0
运行
复制
 res.setHeader('Content-Type', 'text/event-stream; charset=utf-8');
 res.setHeader('Cache-Control', 'no-transform, no-cache');
 res.setHeader('Connection', 'keep-alive');

在写数据时,结尾必须遵循 data: ${message} \n\n的格式,客户端才可以正常接收。

3.2 本地 Proxy 代理

在开发阶段如果遇到内容并不是持续顺畅地输出时,请检查 Cache-Control 的 no-transform 字段是否有配置,有可能是你本地的 Proxy 导致响应内容无法持续传输到客户端。

3.3 Nginx 反向代理

部署阶段如果使用 Nginx 等做反向代理,实际使用过程中会发现服务器会合并缓存的方式进行返回,让内容输出的交互看起来没有那么流畅。针对 Nginx 则需要更多的配置来优化流式输出的情况。

代码语言:javascript
代码运行次数:0
运行
复制
location /api {
   // 禁用缓冲。代理服务器会立即将上游服务器的响应内容逐段发送给客户端,不进行缓冲。适用于需要实时传输或流式传输的场景。
   proxy_buffering off;
   // AI 生成复杂内容的时间,容易超过 Nginx 默认配置的一分钟。
   proxy_connect_timeout 600;
   proxy_send_timeout 600;
   proxy_read_timeout 600;
   
   proxy_pass http://127.0.0.1:9000;
 }

04、总结

文章到这里就结束了,最后我们对 AI 生成的例子做个总结:尝试对流程做个拆解,通过多次问询的方案就可以达到目的。更复杂的场景还可以接入其他工具辅助 AI 最终的输出、格式化输出。如果要在代码中将流程串联起来,JSON/YML 都是很不错的格式。

不断优化你的 Prompt,准备做好一个调参工程师(Prompt Engineer)吧。如果觉得内容不错,欢迎转发分享~

-End-

原创作者|朱奕嘉

技术责编|张燕静

在工作中,AI 为你提供了哪些便利?欢迎在腾讯云开发者公众号评论区讨论。我们将选取1则最有创意的评论,送出腾讯云开发者-鼠标垫1个(见下图)。6月27日中午12点开奖。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-05-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 知码前端 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
天天命令中输入 npm run xxx,倒底 npm run 做了什么,为什么就能开启一个服务?
“人生的意义在于修炼灵魂,首先要有纯洁美丽的心灵,这是思考人生要具备的,拥有什么样的心灵,就会选择什么样的人生,实现什么样的人生价值”
用户9078190
2022/10/28
1.5K0
天天命令中输入 npm run xxx,倒底 npm run 做了什么,为什么就能开启一个服务?
16. 使用vue3结构及配置管理
如果选择是: 下次在配置选项的时候, 除了default,manually,还会多一个我们保存的项目配置.
用户7798898
2021/03/11
1.4K0
16. 使用vue3结构及配置管理
三面面试官:运行 npm run xxx 的时候发生了什么?
面试官:停停,我问的不是从URL输入到页面展现到底发生什么?,是npm run xxx的时候,发生了什么。
前端阳光
2022/03/25
1.5K0
三面面试官:运行 npm run xxx 的时候发生了什么?
Vue-Cli4笔记
如果仍然需要使用vue init webpack初始化项目的话,则需要安装cli-init,但是拉取的仍然是Vue-Cli2.0版本
WindRunnerMax
2020/08/27
4330
vue-cli3项目搭建配置以及性能优化
在之前的开发中主要用的是vue-cli2,最近空闲时间比较多,接下来有新项目,本着偷懒的本能,自己打算搭建一个基础包以备后期开发应用,并对其进行性能优化和配置
青梅煮码
2023/03/13
1.7K0
vue-cli3项目搭建配置以及性能优化
vue.js 三种方式安装(vue-cli)
Vue.js(读音 /vjuː/, 类似于 view)是一个构建数据驱动的 web 界面的渐进式框架。Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。它不仅易于上手,还便于与第三方库或既有项目整合。
全栈程序员站长
2022/07/01
1.7K0
vue.js 三种方式安装(vue-cli)
13. Vue CLI脚手架
Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统。Vue CLI 致力于将 Vue 生态中的工具基础标准化。它确保了各种构建工具能够基于智能的默认配置即可平稳衔接,这样你可以专注在撰写应用上,而不必花好几天去纠结配置的问题。与此同时,它也为每个工具提供了调整配置的灵活性。
用户7798898
2021/03/09
1K0
Vue学习-Vue CLI
如果想按照Vue-CLI2的方式初始化项目需要安装2.x的模板,在终端键入如下命令(注意指定版本号):
花猪
2022/02/17
1K0
Vue学习-Vue CLI
一份超级详细的Vue-cli3.0使用教程[赶紧来试试!]
在vue-cli 2.X的时候,也写过一篇类似的文章,在八月份的时候vue-cli已经更新到了3.X,新版本的脚手架,功能灰常强大,试用过后非常喜欢,写篇教程来帮助各位踩一下坑。
OBKoro1
2020/10/27
8840
一份超级详细的Vue-cli3.0使用教程[赶紧来试试!]
Vue-CLI 项目搭建
CLI (@vue/cli) 是一个全局安装的 npm 包,提供了终端里的 vue 命令。它可以通过 vue create 快速搭建一个新项目,或者直接通过 vue serve 构建新想法的原型。你也可以通过 vue ui 通过一套图形化界面管理你的所有项目。
HammerZe
2022/05/09
1.4K0
Vue-CLI 项目搭建
你不知道的npm
作为 node 自带的包管理器工具,在 nodejs 社区和 web 前端工程化领域发展日益庞大的背景下,npm已经成为每位前端开发同学必备的工具。
前端森林
2020/04/23
1.4K0
你不知道的npm
Vue组件库 View UI快速入门 环境配置
Designer 小郑
2023/08/01
3510
Vue组件库 View UI快速入门 环境配置
【前端配置篇】vue项目之.env系列文件配置详解:.env文件配置全局环境变量
vue 会根据启动命令自动加载相对应的环境配置文件。vue是根据文件名进行加载的,所以上面说“不要乱起名,也无需专门控制加载哪个文件”
江一铭
2022/06/17
17.8K0
【前端配置篇】vue项目之.env系列文件配置详解:.env文件配置全局环境变量
「Vue进阶」一篇文章,教你学会Vue-CLI 插件开发
如果你正在使用Vue框架,那么你肯定知道 VueCLI是什么。 Vue-CLI3,它是Vue.js 开发的标准工具(脚手架),提供项目支架和原型设计。
前端劝退师
2019/09/17
2K0
「Vue进阶」一篇文章,教你学会Vue-CLI 插件开发
【架构师(第三十六篇)】 业务组件库开发之发布到 NPM
结果发现这一行 Ts 报错了,原因是 vue 的版本不一致,真实的场景下不会出现这个问题,因为真实情况下组件库用的是上级的依赖。
一尾流莺
2022/12/10
8300
【架构师(第三十六篇)】 业务组件库开发之发布到 NPM
【xingorg1-ui】基于vue3.0从0-1搭建组件库 (十) 组件发布到NPM
本来需要配置.npmignore配置文件,但是网上不建议用这种方式,说是黑名单的方式,不在黑名单里的关键信息都发上去了。 而是建议使用package.json里配置白名单的方式。于是将package.json配置如下: 关键配置处加上了备注信息:
xing.org1^
2020/11/24
9680
【xingorg1-ui】基于vue3.0从0-1搭建组件库 (十) 组件发布到NPM
中秋节最后一天,手撸一个自己的前端脚手架
“我报名参加金石计划1期挑战——瓜分10万奖池,这是我的第3篇文章,点击查看活动详情”
用户6256742
2024/07/31
1110
Migrate From Vue-cli to Vite
[译] 原文地址:https://medium.com/nerd-for-tech/from-vue-cli-to-vitejs-648d2f5e031d
皮小蛋
2021/05/08
5.2K1
Migrate From Vue-cli to Vite
vue vue-clie多环境配置
键:环境名,在运行命令的时候使用,如:npm run serve01就是执行该键所对应的值命令 值:vue-cli-service命令;serve表示是运行还是打包,serve表示是编译运行,build则是进行打包;--mode serve_01表示环境的模式名字,在创建配置文件的时候作为区分。
小蔚
2021/03/11
6960
vue    vue-clie多环境配置
npm run dev启动报错:Error: Cannot find module 'semver'
PS C:\Users\wangting\Desktop\Wisdom_admin\wisdom_admin> npm run dev > eladmin-web@2.6.0 dev C:\Users\wangting\Desktop\Wisdom_admin\wisdom_admin > vue-cli-service serve internal/modules/cjs/loader.js:985 throw err; ^ Error: Cannot find module 'semver
王小婷
2021/11/24
3.9K0
npm run dev启动报错:Error: Cannot find module 'semver'
相关推荐
天天命令中输入 npm run xxx,倒底 npm run 做了什么,为什么就能开启一个服务?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验