面向AI 的前端发展及初识大模型

AI带来的开发范式迁移

随着AI的涌现,对前端的发展也有着非常大的影响,总结过去前端的发展路径,目前应该属于又一次的大规模的开发范式迁移阶段。上一个阶段是从jqueryReact/Vue/Angular迁移(jquery之前的就不讨论了)。每一次的开发范式迁移不仅仅是技术上的升级,也是开发思维的转变。这里简单回顾一下上一次的开发范式迁移对前端的影响。

上一次的开发范式迁移:从 jQuery 到 React/Vue

范式jQuery(命令式编程)React/Vue(声明式编程)
核心思想手动操作 DOM,逐步更新 UI声明 UI 结构,自动管理 DOM
数据管理依赖全局变量或手动更新组件内部状态管理(React useState,Vue reactive
事件绑定$('#btn').on('click', function() {...})<button @click="handleClick">(Vue) 或 onClick={handleClick}(React)
组件化需要手动拆分 HTML + JS 逻辑组件化开发(React 组件、Vue 组件)
性能优化直接操作 DOM,易造成性能瓶颈虚拟 DOM + 计算属性,减少不必要的 DOM 变更
代码组织面向过程,逻辑分散组件驱动,逻辑集中

什么是开发范式的迁移

用一张图来说明什么是开发范式的迁移。
在这里插入图片描述

目前我们应该正处于第二次的开发范式迁移的阶段,随着AI的出现,也涌现了一批新的开发技术,比如:v0( Vercel 团队推出,主要用于 React 和 Next.js 项目。
通过 AI 生成 UI 组件,帮助开发者快速搭建页面。)还有bolt。
那以后前端该怎么发展呢?我认为目前有两个方向,一个是制造AI工具的前端,还有一个是使用AI工具的前端如下图所示:
在这里插入图片描述

制造AI工具的前端

要成为这一类角色有两个前提,一个是本身具有很高的前端造诣,另一个是很熟悉相关的AI技术,可以把AI技术很好的带入到前段这个领域,在前端各个流程中能有效的把AI引入进来赋能,也有可能会因为AI的引入而改变目前的工作流程,因为AI或者说大模型的应用是专业的知识 + 特定的领域 = 最佳实践(这个后续会聊,会使用RAG实践一个私有组件库生成业务组件的示例)

使用AI工具的前端多才

这个就是上图中说的使用AI工具的前端,这里的“多才”指的是以前端技能为核心能力,同时掌握与前端相邻以及平行工种的工作技能。
相邻:UI、测试、后端
平行工种:其他段的前端

因为目前国内的现状是前端碎片化比较严重,有实力的公司会组件大前端团队,而一般的公司为了节约成本就会使用跨端方案,比如UniApp、Taro、React Native、Flutter;而由于各端的业务逻辑大体一致,实现某一端之后可以尝试使用AI将代码转为其他段的代码,只要AI的转换成本比调试夸端的成本低那就可行。

理解大模型

作为大模型的使用者,我们不用太关心内部的实现细节,我们完全可以把大模型当做黑盒,关注的是输入和输出。

大模型的对话角色

  1. System: 系统角色,通常代表大模型的底层运行环境、框架或规则设定等。它负责管理和协调模型的整体运行,包括初始化模型参数、设置运行条件、分配计算资源等

  2. Assistant:大模型在与用户交互过程中所扮演的主要角色。它基于模型所学到的知识和算法,对用户输入的信息进行理解、分析和处理,然后生成相应的回答、建议、内容等,以回应用户的请求

  3. User:即使用大模型的人或其他主体(如其他软件系统等)。用户通过输入文本、指令、数据等信息与大模型进行交互,向模型提出问题、请求生成内容、寻求建议或进行其他类型的任务。

  4. Tool:在大模型的应用场景中,Tool 通常指的是模型可以调用的外部工具或功能模块。这些工具可以是专门用于特定任务的软件组件、算法库、数据库查询接口、知识图谱查询工具等,用于辅助模型更好地完成用户的任务。

Token

我们输入的文本需要被转换成大模型可理解的符号,这个符号就是Token,这里需要注意,Token和我们输入的文本字符和单词不是一一对应的关系,不同语言Token的表达效率也是不一样的,比如同样一句话,中文可能是10个Token,日语可能就是12个Token,而大模型一般都是按照Token来计费的,所以我们因该用“更少的Token去表达相同的意思”。另外不同大模型他们的分词器不一样,所以同样一句话他们的Token也是不一样的。比如这里通义千问分词器 和openAI分词器。我查了一下文档,以open AI为例子,1个token约等于4个英文字符。100个token大约等于75个英文单词。

大模型几个重要的参数

一般大多数的大模型都有 Temperature、Top_p、frequency_penalty、presence_penalty;用来
控制输出的随机性、创造性和重复性。这几个参数作用如下:

参数作用低值效果高值效果
Temperature(温度)控制随机性确定性高,回答保守更随机,适合创意内容
Top_p(核采样概率)控制候选词范围只选最可能的词,保守更多候选词,创造性更强
Frequency_penalty(频率惩罚)减少重复词容易重复同一词避免重复,表达更丰富
Presence_penalty(存在惩罚)鼓励新词出现词汇重复较多引入更多新概念、新词汇

举个例子,比如此时我输入了:“我喜欢吃” → 预测下一个token
可能的token及其概率:

  • “饭” (0.3)
  • “菜” (0.2)
  • “水果” (0.15)
  • “零食” (0.1)
Temperature

如果此时Temperature设置的是低温(取值低),把就会强化高概率选项,减少多样性,此时预测下一个值为‘饭’的概率就高。反之如果是高温取值,就会使概率分布平缓,此时各个值的概率就比较平均,增加多样性。

Top_p

设定累积概率阈值,从高到低概率依次选择的token,直到总和达到设定值。比如当Top_p=0.75时,选择:“饭”(0.3) + “菜”(0.2) + “水果”(0.15) + “零食”(0.1) = 0.75那其他选项被排除了。

Frequency Penalty 概率惩罚

高值是降低已出现token的再次出现概率,迫使模型选择新的表达方式。
上述例子中,我喜欢吃, 如果"喜欢"已经出现过:
原始概率:“喜欢”(0.3) → 惩罚后:(0.1) (降低了”喜欢“的概率)
-> 我喜欢吃饭,我也爱吃烧烤。(可能使用爱吃,而不是喜欢字眼)

Presence Penalty 存在惩罚

高值是为了降低已出现主题的相关token概率
还是上面这个例子,原始句子为 我喜欢吃xx如果被推测为我喜欢吃饭那已经出现过食物相关的主题,就会转向新的主题,比如下一句预测可能是我喜欢吃放,周末常去夜市撸串 (引入周末和夜市场景)

提示词

在我们使用大模型整体上的流程是下面这样,首先我们需要选择一个合适的大模型,在各个领域都有各个领域合适的大模型。比如擅长处理图片的,擅长处理编程的。
随后我们就需要用专业的知识来明确我们的需求。随后我们需要使用提示词来优化我们的输入最后得到比较高质量的输出。如果用一个公式来表达的话大概是这样:特定领域内 + 用专业的知识明确需求 + 好的提示词 = 高质量的输出
在这里插入图片描述

上面聊到,对于大模型的使用者而言,我们可以把大模型当做是黑盒,只需要关注输入和输出即可。对于输入,根据对话角色的分类,也包括四类提示词:

  • System Prompt
  • User Prompt
  • Assistant Prompt
  • Tool Prompt
什么是提示词工程

所谓的提示词工程就是通过不断的优化输入,提升模型的输出质量,这里的质量包含三个维度:

  1. 正确性维度:返回信息的准确度和可信度,白话文就是让人感觉”说的对“
  2. 稳定性维度:在不同场景和时间下产生可预期的一致表现,白话文就是让人感觉"靠得住"
  3. 质量维度:输出内容的专业、完整和有价值白话文就是让人感觉"说到点子上"

一个好的提示词可以最大程度的发挥出大模型的能力,但不可能超越大模型本身的能力,举个例子:
GPT3.5 能力5分 + 技巧3分 = 8分
GPT4 能力10分 + 技巧2分 = 12分
一个好的提示词的目的是为了对抗Token生成的随机性,让大模型更好的按照自己的意愿来完成任务。

提示词载体

在特定场景下一个好的载体非常重要,有利于提升模型的逻辑理解能力。举个例子,就和我们写文章一样,文章也有很多载体,比如散文、诗歌、白话文。常见提示词载体:自然语言、XML、MD、JSON、伪代码…
选好载体之后就是要写我们的提示词。还是对比写文章一样:
在这里插入图片描述
不同场景下不同的提示词载体有不同的优势。比如普通用户就比较适合自然语言,直接把自己的诉求输入给大模型,然后得到大模型的输出,这样门使用槛比较低。而比如markdown结构性非常强,天生就是用来表达文章结构的。json的结构化非常好,被用做数据交换的格式。而xml结构清晰,层次分明,有利于程序的解析。

提示词结构-CO-STAR结构

一个好的提示词应该符合CO-STAR结构,新加坡政府组织的首届 GPT-4 提示工程大赛的获奖提示词框架。一条提示词要包含如下模块:

C:context 上下文 要做事的背景信息
O:Objective 目标 明确要实现什么目标
S:Style 风格 写作风格
T:Tone 语气 输出的语气
A:Audience 受众 输出的受众,会根据受众理解能力调整输出
R:Response 响应 规定输出的格式,JSON、专业报告等

现在也有很多提示词框架来帮助我们输出更好的提示词,比如LangGPT,全称是Language For GPT like llm,创作者是中国的提示词布道师李继刚;他的核心理念就是将复杂任务分解成结构化的指令,举一个例子。

<role>你是一位专业的中英双语翻译专家
</role><task>将用户输入的文本在中英文之间互译
</task><rules>- 保持原文的意思和语气- 翻译要自然流畅- 专业术语需准确翻译- 如遇到歧义词,提供多种可能的翻译
</rules><workflow>1. 分析源文本的上下文和语境2. 进行翻译3. 校对和优化译文4. 对专业术语或歧义处提供解释说明
</workflow>
提示词模块

LangGPT为例子,模块按需组装,常见模块:

role:设定AI助手的专业背景和行为模式,明确特定场景
task:具体执行的任务,原始需求
constraints:对内容输出的限定条件
global:定义贯穿整个会话的全局变量

举一个例子

<global>$style = "有美感"$language = "中文"$topic = "爱情"
</global><role>你是一位经验丰富的浪漫主义诗人
</role><task>撰写一首关于{$topic}的诗歌
</task><constraints>- 字数限制: 200词- 风格要求: {$style}  - 语言: {$language}
</constraints>
提示词内容

模块内容本身也可以是多种载体,以 技术写作 为例:

<global>
$style = "专业简洁"
$length = "中等"
$format = "markdown"
</global><role>
你是一位经验丰富的技术写作专家,擅长{$style}风格写作
</role><task>
创建技术文档和教程
</task><constraints>
- 文章长度: {$length}
- 输出格式: {$format}
- 语言: 中文
</constraints><workflow>
1. 分析需求阶段:IF 用户提供主题:分析主题关键点ELSE:请求用户明确主题END IF2. 内容规划阶段:- 创建大纲- 确定重点内容- 设计示例代码3. 写作阶段:FOREACH 章节 IN 大纲:- 撰写内容- 添加示例- 进行解释END FOREACH4. 审查阶段:- 检查专业术语使用- 确保格式统一- 优化表达方式
</workflow><output_format>
# {标题}
## 概述
{概述内容}## 主要内容
{详细内容}## 示例
{示例代码和说明}## 总结
{关键点总结}
</output_format>
提示词的重要性

一个好的提示词非常重要,有些公司就是以提示词作为产品进行售卖,其产品的核心就是可以根据用户的原始需求生成一个好的提示词。比如copycoder就是一个典型的例子,还有很多招聘需求也是需要提示词工程师,这都表面了一个好的提示词的重要性。
在这里插入图片描述

怎么写好提示词

写提示词的步骤:

  1. 我们需要先确定特定场景下的最佳实践
  2. 判断最佳实践的复杂度:
  • 简单:自然语言输出
  • 中等:MD格式输出
  • 复杂:选定提示词载体和结构(默认LangGPT)
  1. 按需选一个提示词生成工具,输入步骤1的输出,比如有:
    月之暗面 Kimi × LangGPT 提示词专家
    OpenAI 商店 LangGPT 提示词专家
    Claude提示词工具

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/27131.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

本地部署大语言模型-DeepSeek

DeepSeek 是国内顶尖 AI 团队「深度求索」开发的多模态大模型&#xff0c;具备数学推理、代码生成等深度能力&#xff0c;堪称"AI界的六边形战士"。 Hostease AMD 9950X/96G/3.84T NVMe/1G/5IP/RTX4090 GPU服务器提供多种计费模式。 DeepSeek-R1-32B配置 配置项 规…

第三百七十二节 JavaFX教程 - JavaFX HTMLEditor

JavaFX教程 - JavaFX HTMLEditor HTMLEditor控件是一个富文本编辑器&#xff0c;具有以下功能。 粗体斜体下划线删除线字体系列字体大小前景色背景颜色缩进项目符号列表编号列表对齐水平线复制文本片段粘贴文本片段 HTMLEditor类返回HTML字符串中的编辑内容。 创建HTML编辑器…

java后端开发day25--阶段项目(二)

&#xff08;以下内容全部来自上述课程&#xff09; 1.美化界面 private void initImage() {//路径分两种&#xff1a;//1.绝对路径&#xff1a;从盘符开始写的路径 D:\\aaa\\bbb\\ccc.jpg//2.相对路径&#xff1a;从当前项目开始写的路径 aaa\\bbb\\ccc.jpg//添加图片的时…

Vscode通过Roo Cline接入Deepseek

文章目录 背景第一步、安装插件第二步、申请API key第三步、Vscode中配置第四步、Deepseek对话 背景 在前期介绍【IDEA通过Contince接入Deepseek】步骤和流程&#xff0c;那如何在vscode编译器中使用deepseek&#xff0c;记录下来&#xff0c;方便备查。 第一步、安装插件 在…

计算机毕业设计SpringBoot+Vue.js智能无人仓库管理系统(源码+文档+PPT+讲解)

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

DeepSeek如何快速开发PDF转Word软件

一、引言 如今&#xff0c;在线工具的普及让PDF转Word成为了一个常见需求&#xff0c;常见的PDF转Word工具有收费的WPS&#xff0c;免费的有PDFGear&#xff0c;以及在线工具SmallPDF、iLovePDF、24PDF等。然而&#xff0c;大多数免费在线转换工具存在严重隐私风险——文件需上…

【漫话机器学习系列】109.线性无关(Linearly Independent)

1. 什么是线性无关&#xff1f; 在线性代数中&#xff0c;线性无关是描述向量组的一个重要概念。如果一组向量中的任何一个向量不能由该组中其他向量的线性组合表示出来&#xff0c;那么这些向量就是线性无关的。具体而言&#xff0c;若向量 ​ 是线性无关的&#xff0c;那么不…

蓝桥杯 灯笼大乱斗【算法赛】

问题描述 元宵佳节&#xff0c;一场别开生面的灯笼大赛热闹非凡。NN 位技艺精湛的灯笼师依次落座&#xff0c;每位师傅都有相应的资历值&#xff0c;其中第 ii 位师傅的资历值为 AiAi​。从左到右&#xff0c;师傅们的资历值逐级递增&#xff08;即 A1<A2<⋯<ANA1​&l…

Android15 Camera HAL Android.bp中引用Android.mk编译的libB.so

背景描述 Android15 Camera HAL使用Android.bp脚本来构建系统。假设Camera HAL中引用了另外一个HAL实现的so &#xff08;例如VPU HAL&#xff09;&#xff0c; 恰巧被引用的这个VPU HAL so是用Android.mk构建的&#xff0c;那Camera HAL Android.bp在直接引用这个Android.mk编…

计算机视觉(opencv-python)入门之图像的读取,显示,与保存

在计算机视觉领域&#xff0c;Python的cv2库是一个不可或缺的工具&#xff0c;它提供了丰富的图像处理功能。作为OpenCV的Python接口&#xff0c;cv2使得图像处理的实现变得简单而高效。 示例图片 目录 opencv获取方式 图像基本知识 颜色空间 RGB HSV 图像格式 BMP格式 …

鸿蒙5.0实战案例:基于原生能力获取视频缩略图

往期推文全新看点&#xff08;文中附带全新鸿蒙5.0全栈学习笔录&#xff09; ✏️ 鸿蒙&#xff08;HarmonyOS&#xff09;北向开发知识点记录~ ✏️ 鸿蒙&#xff08;OpenHarmony&#xff09;南向开发保姆级知识点汇总~ ✏️ 鸿蒙应用开发与鸿蒙系统开发哪个更有前景&#…

【问题记录】Go项目Docker中的consul访问主机8080端口被拒绝

【问题记录】Go项目Docker中的consul访问主机8080端口被拒绝 问题展示解决办法 问题展示 在使用docker中的consul服务的时候&#xff0c;通过命令行注册相应的服务&#xff08;比如cloudwego项目的demo_proto以及user服务&#xff09;失败。 解决办法 经过分析&#xff0c;是…

随机树算法 自动驾驶汽车的路径规划 静态障碍物(Matlab)

随着自动驾驶技术的蓬勃发展&#xff0c;安全、高效的路径规划成为核心挑战之一。快速探索随机树&#xff08;RRT&#xff09;算法作为一种强大的路径搜索策略&#xff0c;为自动驾驶汽车在复杂环境下绕过静态障碍物规划合理路径提供了有效解决方案。 RRT 算法基于随机采样思想…

数据集笔记:新加坡停车费

data.gov.sg 该数据集包含 新加坡各停车场的停车费&#xff0c;具体信息包括&#xff1a; 停车场名称&#xff08;Carpark&#xff09;&#xff1a;如 Toa Payoh Lorong 8、Ang Mo Kio Hub、Bras Basah Complex 等。停车区域类别&#xff08;Category&#xff09;&#xff1a…

netty如何处理粘包半包

文章目录 NIO中存在问题粘包半包滑动窗口MSS 限制Nagle 算法 解决方案 NIO中存在问题 粘包 现象&#xff0c;发送 abc def&#xff0c;接收 abcdef原因 应用层&#xff1a;接收方 ByteBuf 设置太大&#xff08;Netty 默认 1024&#xff09;滑动窗口&#xff1a;假设发送方 25…

设计模式之责任链模式

引言 在职场中&#xff0c;请假流程大家都再熟悉不过&#xff1a;申请 1 至 2 天的假期&#xff0c;只需直属主管审批即可&#xff1b;若要请假 3 至 5 天&#xff0c;就需部门负责人进行复核&#xff1b;而超过 5 天的假期申请&#xff0c;则必须由总经理最终定夺。要是遇到超…

【漫话机器学习系列】112.逻辑回归(Logistic Regression)

逻辑回归&#xff08;Logistic Regression&#xff09;详解 1. 逻辑回归简介 逻辑回归&#xff08;Logistic Regression&#xff09;是一种广泛用于二分类任务的统计和机器学习方法&#xff0c;尽管它的名字中带有“回归”&#xff0c;但它实际上是一种分类算法。 在逻辑回归…

大模型function calling:让AI函数调用更智能、更高效

大模型function calling&#xff1a;让AI函数调用更智能、更高效 随着大语言模型&#xff08;LLM&#xff09;的快速发展&#xff0c;其在实际应用中的能力越来越受到关注。Function Calling 是一种新兴的技术&#xff0c;允许大模型与外部工具或API进行交互&#xff0c;从而扩…

通过 PromptTemplate 生成干净的 SQL 查询语句并执行SQL查询语句

问题描述 在使用 LangChain 和 Llama 模型生成 SQL 查询时&#xff0c;遇到了 sqlite3.OperationalError 错误。错误信息如下&#xff1a; OperationalError: (sqlite3.OperationalError) near "sql SELECT Name FROM MediaType LIMIT 5; ": syntax error [SQL: …

计算机毕业设计SpringBoot+Vue.js企业资产管理系统(源码+文档+PPT+讲解)

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…