优维大模型解密:从提示词工程到场景应用 ,剑指AIOps的牛刀小试

图片

莫名其妙的“涌现”袭来,就像是海上来路不明的诡异海啸,当很多人都在吹捧大模型时,优维则选择理性潜入深水区,掌握了大模型的来龙去脉,也在实际应用中获得产品经验方法论。

这篇文章旨在全面剖析优维科技在大模型应用领域的思考、布局与真实场景对接成果。

01

从鲁迅和周树人说起:

窥见大模型“涌现”背后的局限性

图片

图1

图片

图2

强大如ChatGPT,也难逃“鲁迅与周树人”的认知陷阱,对于大模型当下的局限性,我们认为至少可以总结如下几点——

  • 缺乏领域特定信息:LLM仅基于公开数据集训练,缺乏领域特定信息、专有信息等非公开数据

  • 容易产生幻觉:底层原理是基于概率的token by token的形式,不可避免产生“一本正经胡说八道”的情况(图1)

  • 时效性差:模型训练完后,无法获取更新后数据集的信息(图2),且无法频繁重新训练

改进大模型,我们认为至少应该具备如下要素——

  • 外部数据库承载专业知识:用向量数据库构建知识库;使用数据库扩展大模型的外部记忆

  • 微调:使用少量标注数据增强特定领域能力

  • 提示工程:添加提示词,生成更加准确的信息

带着这样的思考,我们将进入本文的第一个重点内容。

02

本地知识库搜索:

优维大模型的初始化实践

图片

图3

不久之前,优维已经上线了本地知识库搜索(图3),我们的产研部门有很多同事已经用了一段时间,提到大模型,很多用户的第一反应是我要去训练,仿佛所有的东西都要训练。其实不然,我们有另外一套执行机制。

今天就针对性分享一下,优维的本地知识库是怎么做的,以及我们是怎么把本地语料与大模型结合起来的。

这里首先要引入一个概念:向量数据库。

对于这个概念,相信长期关注大模型相关资讯的朋友应该知道,它通常和大模型一起被提及。

向量数据库是用来存储和检索向量的一个数据库,其重点特性是适应数据量大、数据维度高以及相似度匹配的场景。你可以用来检索和存储文本数据,还可以用于自然语言处理领域,比如文本的分类、聚类和相似度计算等。

回归今天的主题,大家只要记住:向量数据库可以计算语义相似度。

举个例子,我们随机提出某个关于EasyCore的问题:EasyCore里的某个工具的用途?或者说我的EasyCore是怎么备份的?

向量计算就会算出这篇文章的向量和该问题的向量的最大相似度,凭着向量最大相似度,我们就能直接找到最相关的介绍文档。

图片

图4

厘清向量数据库的特性后,接下来的问题是:向量数据库怎么用?

我们在用的文本也是通过一个模型,但请注意,它并不是大模型,而是一个把文本语料转换成向量的专用模型。基于这样一个通用的底层逻辑是,无论是文本还是图片、音视频,都可以转换成向量之后存到向量数据库,然后再去执行向量查询(图4)。

图片

图5

优维的本地知识库是怎么做的呢?(图5)

首先,我们要把所有的文档加载进来,存到向量数据库。

文本转换存储的逻辑一分为二——原先是文本的直接存储文本;原先是PDF、word或图片的则先解析后存储,比如图片用OCR识别,PDF用PDF的解析,word用word解析……最终目的都是把所有的资料转换成文本。这是第一步。

第二步,针对某些比较大的文本,比如一篇数以万字的文章,我们会执行向量搜索。当文本偏大时可能会影响匹配的准确性,我们需要将文本按照一定的长度进行分割,例如每隔1K或两k进行分段操作,然后对每一段进行单独计算向量,完成计算后再把向量存储到数据库,这就引出另一个概念——文本向量化。

文本向量化的过程中有一个重点,就是把问题也做成一个向量,并匹配到向量数据库里,从而得到和问题语义相似度最高的文本,再把与之对应的文档全拿出来,和问题组成一个提示词打包交给大模型,我们最终会得到大模型反馈的结果。

图片

图6

这个就是所谓的提示词,大模型的应用是否有效,写好、写对提示词至关重要。

关于如何写提示词,我们来看两个示例(图6)。

示例1主要是根据上下文来回答问题,如果内容不在上下文里则不回答,只使用上下文提供的内容即可。通常来讲,这两个示例都有广泛的借鉴性和指导性,但示例2更适用于优维的大模型案例——其中的knowledge文档,就是将我们从向量数据库匹配出来的那几篇文档,连同问题一起全部贴到这里,打包成几k大小的提示词一并提交给大模型,最终大模型会反馈我们所看到的那个回答。

以上就是大模型关联本地知识库搜索的实操案例。

如你所见,整个过程并不需要训练,它只是一个放之四海而皆准的通用大模型罢了。

03

自动生成Storyboard:

低代码+CMDB与大模型的无缝衔接

图片

图7

除了本地知识库,我们还用低代码做了一个自动生成Storyboard。先看一下效果(图7)。

这个是优维EasyMABuilder低代码开发平台的其中一个版块——VisualBuilder,相信用过优维开放平台的客户中,尤其是负责低代码、前端开发的朋友应该比较熟悉。

按照过去的操作方法,我们需要先在组件库里选购组件,再根据我们的需要填写相关的属性,这是一个比较繁琐和低效的过程。于是我们在这里加了一个AI助手,通过AI助手,我们可以直接用自然语言描述生成一个表格,该表格提供实际数据,同时允许我们进一步发出更明确的指令,例如哪一列支持排序、哪一列支持搜索……总而言之,我们可以指定这个表格里的每一个属性,你指定得多详细它就能生成得多详细。

这个效果是怎么做的呢?其实就是我们前面提到的那个大模型对接逻辑,通过向量搜索和提示词工程让大模型自动生成了低代码Storyboard,构成了一个实时可用的构件。

图片

图8

我们把Storyboard的自动生成逻辑详细化(图8)。

图中的构件需求就是我们前文的输入,目的在于告诉它我们要做什么。在生成之前需要做的准备工作是初始化向量数据库——把数百个构件的功能说明以及构件ID全部向量化并传到向量数据库,然后把构件需求匹配到向量数据库,看看哪些构件能够满足我们的需求——注意,这只是一个类似Google的搜索动作,并不准确,所以我们会搜出和需求最匹配的topK个数据来,

然后交给大模型由大模型来告诉我们应该用哪个构件来完成生成任务。我们需要从大模型返回的结果解析出构件ID,有了构件ID我们就可以到CMDB里查到构件的详细定义,再把富含示例、事件处理等属性的构件详细定义再度给回大模型,最终由大模型生成Storyboard。

图片

图9

这里我们再重点复盘一下匹配出来的top10是怎么选择构件的(图9)。在告知大模型需求后,我们要求它只返回选择的构件,然后它以构件ID加描述的格式返回给我们,取冒号前面的一部分解析得到构件ID后即可前往CMDB查询。

图片

图10

接下来进入关键点:从CMDB拿到构件的属性定义后如何生成Storyboard?这里的流程就相对复杂一些。

首先,我们要直接告诉它Storyboard是干什么的。通过图片我们可以看到有Storyboard的schema定义,这个schema是固定的,它定义了这个构件的基本结构。Schema下面的定义就是我们刚才查出来的定义,它包含构件属性、事件以及示例等基本条件,有了基本条件就给它提要求了(具体步骤参见图10)。

审视整个过程我们会发现,虽然用户只是在前端输入类似“我要一个表格”这样看似简单的属性,但真正交给大模型的其实是背后这一大堆东西,最终的效果就是:我们输入一个需求,然后大模型生成对应的东西供我们直接使用。

通过以上两个案例,大家或许对优维大模型有了大致的了解——就是想办法把我们日常的需求梳理好,全部喂给大模型并按我们的要求输出结果,让大模型表现得像一个智能机器人。可见,大模型并不是简单的聊天对话框里那些功能,而是可以通过提示词来实现更多的功能。

到这里,再度引出一个概念——提示词工程。

04

提示词工程:

构件大模型的超级基建

提示词工程的定义:指导生成式人工智能(generative AI)解决方案生成所需输出的过程。我们在前文说过:大模型的应用是否有效,写好、写对提示词至关重要。提示词工程,就是一个“过程决定结果”的大项目。

什么是优质的提示词?

首先就是要清晰明确。提示词一定要简洁,尽可能减少歧义和模糊,让AI能够更清楚地知道我们想要什么,例如我们可以明确指定生成内容的类型、格式、长度、风格、语言等,也可以要求它回答中文或英文、返回用Python还是go……越明确越好,这样AI在生成的过程中就会减少其他的错误。

第二个是通用性强。就是当我们换了主体词之后一样能得到结果,例如在前面生成Storyboard的那个案例中,可以生成按钮的Storyboard,也可以生成表格的,表单的,就是一定要有通用性。

第三个是生成结果稳定。在前面的自动生成案例中,我们让它第一步做什么、第二步做什么

……其目的就是为了让生成结果稳定,确保多次生成内容的格式是一样的。

图片

图11

怎么写好提示词?

提示词有很多写法,比如有启发式提示、有思维树提示、有思维链提示等,这里分享一个比较有趣的案例(图11)。这个案例展示了一个大模型的现象——大模型本来是不会的,但我们把思考过程告诉它,它也会学着你去这样思考。

首先看下左边的常规提示案例——

罗杰原有5个网球,后又买了2罐,每罐3个,请问他现在一共有几个网球?我们先以直接说出计算结果的方式给出了示例回答:11个。

然后再给大模型独立出题:食堂有23个苹果,用掉20个后又买了6个,请问现在有几个苹果?它给出的答案是27。

显然,大模型根据我们的示例作出的回答是错误的。

再来看右边的思维链提示案例——

还是同样的提示条件,但这次不是直接给出答案,而是告诉它我们的计算过程,于是神奇的事情发生了:大模型学习了我们的计算方法,最终得到了正确的答案。

这两个示例的差异在于,左边是直接给结果,右边是把思考的过程告诉大模型,然后它给出了正确答案。大模型的核心能力之一在于,它会按照你的提示词模式去思考,提示词的技巧是多样化的,如果我们能做到一步一步指导它去做思维和思考动作,它就会按照我们的逻辑生成更准确的内容,这就是思维链模式的提示词。

到底什么样的提示词才是最好的?没有人能说的明白,就像没有人能明白大模型突然“涌现”的能力一样。提示词工程的完善有待大家去逐步探索,吸收别人的经验,例如前文提到的启发式、思维链、思维树等提示方法均可借鉴参考,结合自己的切身需要和思考,写出场景下最好的提示词。

05

随大模型“涌现”的两个概念:

LLM Powered Agents与LangChain

第一个概念:LLM Powered Agents

我们称之为“大模型驱动的智能体”——Agent可以理解为人工智能概念里的智能体,随着大模型能力的“涌现”,Agent将用大模型来驱动。

图片

图12

当用户输入自己的需求后,会启用一个AI智能体,该AI智能体可以利用大模型驱动整个任务完成,可以关联的本地文档数据库,或者执行代码、生成代码、执行任务等等(图12)。它作为一个大脑,根据用户的输入去把外部的执行工具、任务等全部调度起来,对用户来说只是一个人工智能的服务,但背后的逻辑是基于大模型、机器学习、文档、代码执行……来实现需求,是一个非常庞大的技术宇宙,是实现真正的人工智能的智能体。

图片

图13

另外一张图则更能直观地体现“大模型即大脑”的底层逻辑(图13)——通过一个抽象的action(该action可能是工具)调接口、执行代码和外界交互,再反馈回来组成新的上下文,然后再去调度,这是一个循环交互的过程。其要传达的核心信息就是:大模型就是一个大脑控制器,你让它做什么,它就会调度能用到的工具、接口、以及代码去把这个事情完成。但无论是调工具也好,调接口也罢,其所依赖的都是我们在前文所说的提示词。

这就是所谓的大模型驱动的智能体,是关于大模型的一个相对高级的概念。

第二个概念:LangChain

LangChain是一个用来构建大模型应用的框架,它提供了一套工具、组件以及接口。运用这个框架可以很方便的去构建大模型的应用,各个方面都有对应的sdk可以直接使用,比如前面提到的文档加载、拆分、向量化、存到数据库等等都有对应的库,我们只需要选好模型和处理流程,其他基本不用管,直接调用sdk就可以把处理逻辑拼接起来。

图片

图14

我们看下LangChain框架的组件(图14)。现在基本上所有的开源以及商业模型都可以对接这个框架,具备提示词的管理功能,前文提到的提示词的提交、模板以及输出的解析,从索引管理、文档加载、PDF解析、OCR识别到向量存储、存储、解析输出以及调外部的工具……都有现成的东西。

这个框架几乎集成了大模型开发的整套周边生态,因为它把周边的库全部集合到了一个库,所以我们在做应用的时候非常方便。

06

EasyOps场景对接大模型:

始终面向应用的产品深度淬炼

我们通过深度实践与反复体验,摸清了大模型的底层逻辑和运作规律,最终把研究成果赋能到优维的产品上来。对于优维EasyOps平台矩阵里的产品而言,几乎每一个应用场景都可以与大模型进行有机结合,我们也发现,接入了大模型的产品,其想象空间非常之大。

目前,我们的EasyOps一体化运维平台已经完成大模型对接,限于篇幅,下面把一些主要能力分享给大家,如果要更深入了解,欢迎跟我们沟通交流:

一、通过低代码AI助手辅助各种不同的页面编排需求,比如自动mock,自动生成函数,自动生成测试用例,自动拼装请求参数等;直接生成局部的页面编排以及页面调整;编排优化,把已有编排提交给欸大模型,提供优化建议。

二、在制品管理、工具库、部署等方面,实现了全方位的运维自动化。通用中间件配置自动生成、启动停止脚本检查分析、SQL分析解读、自动生成部署策略等功能,在面对复杂多变的运维环境时,能够快速应对,确保业务的稳定运行。

三、CMDB产品,自动采集脚本生成、数据质量评估、拓扑优化等功能,可以再使用过程中,能够更加精细化、智能化地进行资源管理和监控。

四、可观测产品方面,通过智能建议和监控套件自动创建等功能,帮助提升运维监控能力。日志样本解析、监控套件选择、promql指标汇聚公式生成等功能,在面对复杂的监控场景时,能够快速搭建监控体系,确保业务的稳定运行。

所谓摆盛宴应先烹小鲜,绣华服前剥丝茧,对于大模型,叶公好龙、临渊羡鱼都不是好办法,唯有正视它、了解它、应用它、掌控它才是正解。

在运维层面,大模型的所谓“涌现”固然带给我们很多灵感,但就运维这件事情本身而言,其本质未变,架构依然,大模型只是接管了中间一层,把“人与系统的交互”变成了“人机交互”,所以,赋予大模型以人格化想象或许才是大模型在运维侧的科学态度。

对于优维的产品而言,大模型是EasyOps平台“过去”的设计师、产品经理和架构师,其呈现出来的业务价值也是动态的——大模型的接入将全面提升优维EasyOps的智能化运维能力,满足客户在各种复杂场景下的实际需求,让“运维自动化”真正实现脱水、提纯、货真价实。 

作为人工智能领域的重要分支,我们坚信大模型的道路越是曲折,未来就越是美好的。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

算法思想总结:双指针算法

一、移动零 . - 力扣&#xff08;LeetCode&#xff09; 移动零 该题重要信息&#xff1a;1、保持非0元素的相对位置。2、原地对数组进行操作 思路&#xff1a;双指针算法 class Solution { public:void moveZeroes(vector<int>& nums){int nnums.size();for(int cur…

手把手写深度学习(23):视频扩散模型之Video DataLoader

手把手写深度学习(0)&#xff1a;专栏文章导航 前言&#xff1a;训练自己的视频扩散模型的第一步就是准备数据集&#xff0c;而且这个数据集是text-video或者image-video的多模态数据集&#xff0c;这篇博客手把手教读者如何写一个这样扩散模型的的Video DataLoader。 目录 准…

挑战杯 多目标跟踪算法 实时检测 - opencv 深度学习 机器视觉

文章目录 0 前言2 先上成果3 多目标跟踪的两种方法3.1 方法13.2 方法2 4 Tracking By Detecting的跟踪过程4.1 存在的问题4.2 基于轨迹预测的跟踪方式 5 训练代码6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 深度学习多目标跟踪 …

4G安卓核心板T310_紫光展锐平台方案

紫光展锐T310应用 DynamlQ架构 12nm 制程工艺&#xff0c;采用 1*Cortex-A753*Cortex-A55处理器&#xff0c;搭载Android11.0操作系统&#xff0c;主频最高达2.0GHz.此外&#xff0c;DynamlQ融入了AI神经网络技术&#xff0c;新增机器学习指令&#xff0c;让其在运算方面的机器…

绝对省事!多微信聚合聊天神器大揭秘!

在如今社交网络发达的时代&#xff0c;微信已成为人们生活中不可或缺的通讯工具。然而&#xff0c;对于拥有多个微信账号的用户来说&#xff0c;经常需要来回切换不同账号&#xff0c;给日常使用带来一定的不便。 那么&#xff0c;有没有一种办法能够让我们摆脱这种繁琐的操作…

掼蛋-掌握出牌权

掼蛋游戏中&#xff0c;出牌权往往能决定一局牌的走向&#xff0c;掌握出牌权可以主动控制局势。出牌权是指在每一轮的出牌环节中谁先出牌。出牌权的重要性主要体现在以下两个方面&#xff1a; 一、控制节奏 出牌权可以让我们主动控制游戏的节奏&#xff0c;可以根据自己的出牌…

Post请求出现Request header is too large

问题描述&#xff1a; 在做项目的时候&#xff0c;前端请求体太大的时候&#xff0c;出现Request header is too large问题&#xff0c;后端接口如下&#xff1a; 前端请求接口返回问题如下&#xff1a; 解决方案&#xff1a; 问题原因&#xff1a;这是因为我们在做Springboo…

BUG:RuntimeError: input.size(-1) must be equal to input_size. Expected 1, got 3

出现的bug为:RuntimeError: input.size(-1) must be equal to input_size. Expected 1, got 3 出现问题的截图: 问题产生原因:题主使用pytorch调用的nn.LSTM里面的input_size和外面的数据维度大小不对。问题代码如下: self.lstm nn.LSTM(input_size, hidden_size, num_laye…

计算机网络-第6章 应用层(2)

6.5 电子邮件 电子邮件&#xff0c;把邮件发送到收件人使用的邮件服务器&#xff0c;并放在其中的收件人邮箱中。最重要的两个标准&#xff1a;简单邮件传送协议SMTP&#xff0c;互联网文本报文格式。 SMTP只能传7位ASCII码邮件&#xff0c;93年提出互联网邮件扩充MIME。邮件…

关于YOLOv9去掉辅助分支脚本使用的一些说明。

专栏介绍&#xff1a;YOLOv9改进系列 | 包含深度学习最新创新&#xff0c;主力高效涨点&#xff01;&#xff01;&#xff01; B站链接&#xff1a;YOLOv9去除辅助训练分支&#xff01;_哔哩哔哩_bilibili 一、说明 在subbranch_removal.py脚本中&#xff0c;我们需要填入上方…

新西兰 eSIM 卡 ONE NZ充值、激活

新西兰One NZ 保号规则和费用 先说大家比较关注的保号条件和费用吧。 新买的卡有效期 720 天&#xff0c;能够充值续期&#xff0c;但是充值后的有效期反而变为 360 天&#xff08;用于保号的兄弟就快过期再充值&#xff09;如果到期后不去充值&#xff0c;账户将变为非活跃状…

SAP 工单CO02 TECO时检查的增强BADI:WORKORDER_UPDATE

需求&#xff1a;需要在CO02进行TECO时检查一下 第三代增强&#xff1a;BADI&#xff1a;WORKORDER_UPDATE中的REORG_STATUS_ACT_CHECK方法 第一步&#xff1a;SE19输入BADI&#xff0c;然后创建 填入名称&#xff1a;ZWORKORDER_UPDATE和描述 输入类名&#xff1a;ZCL_WORKORD…

C语言函数—自定义函数

如果库函数能干所有的事情&#xff0c;那还要程序员干什么&#xff1f; 所有更加重要的是自定义函数。 自定义函数和库函数一样&#xff0c;有函数名&#xff0c;返回值类型和函数参数。 但是不一样的是这些都是我们自己来设计。 这给程序员一个很大的发挥空间。 函数的组…

第十四届蓝桥杯蜗牛

蜗牛 线性dp 目录 蜗牛 线性dp 先求到达竹竿底部的状态转移方程 求蜗牛到达第i根竹竿的传送门入口的最短时间​编辑 题目链接&#xff1a;蓝桥杯2023年第十四届省赛真题-蜗牛 - C语言网 关键在于建立数组将竹竿上的每个状态量表示出来&#xff0c;并分析出状态转移方程 in…

在Linux中进行OpenSSH升级

由于OpenSSH有严重漏洞&#xff0c;因此需要升级OpenSSH到最新版本。 OpenSSL和OpenSSH都要更新&#xff0c;OpenSSH依赖于OpenSSL。 第一步&#xff0c;查看当前的OpenSSH服务版本。 命令&#xff1a;ssh -V 第二步&#xff0c;安装、启动telnet&#xff0c;关闭安全文件&a…

免费AI软件开发工具测评:iFlyCode VS CodeFlying

前言 Hello&#xff0c;各位看官&#xff0c;今天为大家带来两款人工智能的软件开发工具的测评&#xff0c;他们分别是iFlyCode和CodeFlying&#xff0c;我相信当大家看到这两款产品名字的时候不禁都会有些好奇&#xff0c;两个产品都有Code 和Fly两个元素&#xff0c;那他们之…

Python语言在编程业界的地位——《跟老吕学Python编程》附录资料

Python语言在编程业界的地位——《跟老吕学Python编程》附录资料 ⭐️Python语言在编程业界的地位2024年3月编程语言排行榜&#xff08;TIOBE前十&#xff09; ⭐️Python开发语言开发环境介绍1.**IDLE**2.⭐️PyCharm3.**Anaconda**4.**Jupyter Notebook**5.**Sublime Text** …

若依上传文件/common/upload踩坑

前言&#xff1a;作者用的mac系统&#xff08;这个是个坑&#xff09;&#xff0c;前端用的uniapp&#xff0c;调用若依通用上传方法报错NoSuchFileException: /home/ruoyi/uploadPath/upload... 前端上传代码示例如下: uni.chooseImage({count: 1,success(res){ uni.uploa…

在centos8中部署Tomcat和Jenkins

参考链接&#xff1a;tomcat安装和部署jenkins_jenkins和tomcat-CSDN博客 1、进入centos中 /usr/local 目录文件下 [rootlocalhost webapps]# cd /usr/local2、使用通过wget命令下下载tomcat或者直接在官网下载centos版本的包后移动到centos中的local路径下 3、下载tomcat按…

1307页字节跳动Android面试全套真题解析在互联网火了-,完整版开放下载

多进程带来的问题 AIDL 使用浅析binder 原理解析binder 最底层解析多进程通信方式以及带来的问题多进程通信方式对比 Android 高级必备 &#xff1a;AMS,WMS,PMS AMS,WMS,PMS 创建过程 AMS,WMS,PMS全解析AMS启动流程WindowManagerService启动过程解析PMS 启动流程解析 A…