大模型在蓝鲸运维体系应用——蓝鲸运维开发智能助手
本文来自腾讯蓝鲸智云社区用户: CanWay
背景
1、运维转型背景
蓝鲸平台从诞生之初,就一直在不遗余力地推动运维转型,让运维团队可以通过一体化PaaS平台,快速编写脚本,编排流程,开发运维工具,从被动地提供运维支撑服务,转型为主动地提供SRE增值服务。为了让运维人员更快成长为“六边形运维”(参考《在线跟腾讯工程师学习SaaS开发》,泛指运维界的六边形战士,特指掌握了运维开发技能的运维人群),降低运维开发 SaaS 的难度,蓝鲸不仅提供了蓝鲸开发框架,通过集成身份验证、API调用、模板渲染、UI组件库等功能,大幅降低了运维开发SaaS的难度。
然而,在实际操作中,我们观察到运维人员的主要工作往往涉及与各种IT对象和环境进行交互。因此,尽管他们学习使用Python这类脚本型语言来进行后台开发相对较为顺畅,但当他们试图设计并开发一个用户体验尚可的前端页面时,却面临较高的入门难度。他们往往面临两种选择:要么开发的页面功能相对简单、设计朴素,要么需要投入大量的时间和精力进行页面布局和交互设计的打磨。
为了解决这个难题,我们进一步提供了运维开发平台,使用低代码技术,通过拖拽组件组装页面,让开发工作可视化灵活组装、所见即所得,并且针对复杂交互场景有很好的适应性,可以灵活地通过函数编码实现。
2、大模型对运维开发带来的挑战和机遇
最近几年,大模型的爆发式发展为开发和运维行业带来新的变革,2021 年 7 月 1 日,由 GitHub 和 OpenAI 共同开发的人工智能编码助手——Copilot正式发布,如同连环炸弹的连续迸发,持续为开发者和整个软件行业带来震撼与惊喜。就在上个月,国内首个AI程序员入职了阿里云,这个叫“通义灵码”的程序员具有扎实的编程基础,能熟练使用200多种编程语言,具备生成词级/行级/块级/函数级/类级等代码内容的能力,还能自动生成测试用例、代码优化、生成注释等。而且,通义灵码的工作节奏比996还要极致:7x24小时随叫随到…看起来,大模型的应用似乎要终结开发框架、低代码这类脚手架开发工具。难道,运维不再需要开发转型了?甚至“零运维”在AI的帮助下提前实现了?
不过在最近一段时间,我们团队研究对比了多款国内外大模型,并且在知识查询、开发问答、代码补全、单元测试生成以及SaaS应用构建等多个维度进行了能力测试和验证,事实表明,大模型现阶段还不能完全替代开发者,在一些专业的运维开发领域,能够成为运维人员的“开发副手”,加快运维组织的转型。
大模型的优势分析
首先,我们分析,大模型的主要能力体现在以下几个方面:
1、语言理解
大模型通过训练可以理解和解释自然语言文本,能够回答问题、提供解释、理解指令和上下文含义等。
2、知识总结
大模型可以提取文本知识的关键信息,生成摘要,使得用户能够快速了解长篇文章或报告的主要内容。
3、语言创作
大模型能够根据输入的上下文信息生成连贯、流畅的文本,例如撰写文章、生成对话、创作诗歌或故事等。
4、问答系统
大模型可用于构建问答系统,与用户进行自然语言交流,回答用户提出的问题,如在线客服、智能助手等。
5、文本生成
大模型可以根据上下文生成各种类型的文本,如代码注释、代码补全、单元测试等。
这些能力使得大模型在许多实际应用中具有广泛的应用价值,如搜索引擎、推荐系统、知识库、智能客服等。随着技术的发展和模型的不断优化,大模型的性能和应用范围还将进一步扩大。
而我们推动运维开发转型的主要手段包含一体化运维平台、基于PaaS架构的开发框架、基于低代码技术的运维开发平台,这些工具分别提供了开箱即用的产品功能、可以快速组装的脚手架、所见即所得的图形化界面等多层次的能力,规避运维人员不熟悉开发语言和软件工程的短板,加速能力跃迁。
对比大模型的主流应用形态——AI对话交互和传统的运维产品和工具——GUI交互,两者各有优势。大模型更适合通过对话解决信息查询、上下文检索等问题,并且适合移动或小屏幕设备,在个性化、长尾需求场景里也能较好适配。而传统的GUI交互,在数据处理、高精度任务、快速导航上还保持着优势地位,并且提供了直观的操作体验。
大模型在运维开发上的应用
从大模型的原理上看,模型经过海量的数据训练,在开发领域,很多大模型学习了几十亿行代码,庞大的数据基础使得这些模型在代码的规范性、准确性方面展现出了卓越的效果。同时,自然语言理解的突出优势,让大模型在运维和开发专业知识掌握上是非常全面的,并且可以通过RAG等技术实现私域知识的检索,在运维工具开发辅助上可以发挥多种作用,提高开发效率和质量。以下是我们在运维开发领域的主要应用场景:
1、代码生成
在SaaS开发中,开发者经常会遇到需要查询资料或者阅读其他人编写的代码的情况,如果使用浏览器的搜索引擎或者一些开源大模型,必然会经常性地切换窗口打开浏览器,这个过程会给开发人员带来不少干扰。所以,在代码辅助编写场景,我们通过 BKGPT 插件对接大模型和IDE,让开发者可以在编程工具里闭环信息检索的过程,大大提升了开发问题查询效率。
其次,我们提供了BKCodeAI 插件,可以实现根据注释中的需求描述,进行代码生成和补全,当前已经支持函数级代码生成。BKCodeAI 安装并配置成功后,IDE 编辑器中,当前光标所处位置的上方有注释或者代码内容时,此时键盘回车、空格、tab 等按键时便会触发 BKCodeAI进行代码生成或补全。
较为常见的场景如下:
-
打开新文件,在第一行写注释,此时回车到下一行后便会触发;
-
打开老文件,修改文件中的某一行(非第一行)代码,此时在光标所处的回车、空格、tab 便会触发;
-
触发时,IDE右下角 BKCodeAI 标识处会出现 loading 标识,loading 结束后,便会展示代码生成结果(代码置灰预填充状态);
-
按Tab键可以将生成代码真正填充到编辑器内。
2、代码审查
另一方面,和其他的编程 Copilot 工具一样,BKGPT 是一个助手而非人类程序员的替代品,开发者不能简单地采纳Copilot的建议,还需要结合个人的编程经验和专业知识最终完成SaaS的构建。所以在当前阶段,单元测试、代码审查这类软件质量措施需要坚持执行,不过在大模型的帮助下,不再需要开发者花费太多精力处理这些事项,大模型可以自动生成单元测试,并根据代码的提交记录自动生成 Code Review 建议。
BKCodeAI 插件安装成功后,当在 git push 时,会自动触发 AI CodeReview 任务,CR 任务将异步执行,不会阻塞 push 操作,CR 任务执行完成后会在 IDE 弹窗提醒 CR 详情链接。
打开 CR 详情链接,可以跳转到AI开发助手产品的 CR 历史页面,查看到大模型为本地提交的代码自动生成的审查结果。
3、专业知识问答
大模型天然在自然语言理解和知识总结有巨大的优势,而嘉为蓝鲸又有上千家各行各业的企业运维解决方案实施经验,积累了海量的运维开发领域专业知识。技术架构上,通过 RAG + Embedding 技术,可以海量的运维知识(截至2023年12月,嘉为知识库存量文档394035篇,月均消费7万+次)向量化存储,作为大模型的外挂知识库,利用大模型强大的总结能力,可以总结提炼出解决方案回复给开发者。并且,针对API调用以及企业内的系统,可以通过Function call技术实时获取更多的知识如API调用测试结果,辅助开发者更准确的验证接口参数。
通过打通企业微信机器人,可以让开发者很方便地查询开发知识,该问答机器人除了回答常规的开源知识外,也能很好地提取公司内的私域知识,然后总结后回复给提问者。
“正确的问题往往比答案重要,好的问题就是一般的答案”这个结论在大模型领域体现得淋漓尽致,在智能问答助手上线后,我们发现有部分开发者反馈回复不准确,存在大模型“胡说八道”的情况,深入追究,发现往往是开发者的提问比较模糊或者提问格式不符合规范。其实这个现象在大模型的各个行业应用中都比较普遍,这也是为什么会有“提示词工程”的重要原因之一。
为了解决提问不规范的问题,我们单独开发了一个“AI开发助手”的SaaS,通过定义角色的方式预制 Propmt 提示词,这样可以让熟悉“提示词工程”的平台开发工程师汇总运维开发关注的常见问题,比如定义“前端TS专家”,用于解决开发者不熟悉前端的痛点;定义“变量取名专家”,规范开发者的代码变量命名。
通过“预设角色”功能,智能问答场景进一步降低了开发者的使用门槛,更进一步,平台开发工程师可以把产品的扩展开发能力——插件开发提炼成模板,开放给普通用户使用。这样即使是不懂开发的用户,在页面选择了“插件模板生成员”后,也能快速开发出一个插件出来。
经过一段时间的运行,我们也发现了一个非常实用的提示词撰写技巧——CO-STAR 框架。该框架由新加坡政府科技局 (GovTech) 举办的首届 GPT-4 提示工程大赛冠军 Sheila Teo 提出。
CO-STAR是结构化的Prompt模板六大要素的首字母缩写,即:
- © Context 上下文:为任务提供背景信息
- 通过为大语言模型(LLM)提供详细的背景信息,可以帮助它精确理解讨论的具体场景,确保提供的反馈具有相关性。
- (O) Objective 目标:明确你要求大语言模型完成的任务
- 清晰地界定任务目标,可以使大语言模型更专注地调整其回应,以实现这一具体目标。
- (S) Style 风格:明确你期望的写作风格
- 可以指定一个特定的著名人物或某个行业专家的写作风格,如商业分析师或 CEO。这将指导大语言模型以一种符合你需求的方式和词汇选择进行回应。
- (T) Tone 语气:设置回应的情感调
- 设定适当的语气,确保大语言模型的回应能够与预期的情感或情绪背景相协调。可能的语气包括正式、幽默、富有同情心等。
- (A) Audience 受众:识别目标受众
- 针对特定受众定制大语言模型的回应,无论是领域内的专家、初学者还是儿童,都能确保内容在特定上下文中适当且容易理解。
- ® Response响应:规定输出的格式
- 确定输出格式是为了确保大语言模型按照你的具体需求进行输出,便于执行下游任务。常见的格式包括列表、JSON 格式的数据、专业报告等。对于大部分需要程序化处理大语言模型输出的应用来说,JSON 格式是理想的选择。
4、原子平台产品集成
在运维的日常工作中,脚本编写是一个比较核心且重要的工作,蓝鲸平台已经提供了一套运维基础操作的原子平台——作业平台,让运维的脚本管理工作页面化,并且云化脚本版本管理模式,贴合现代化开放协同的理念,协作者借助平台,可便捷地共享脚本资源。在大模型的能力加持下,作业平台的脚本管理和问题分析插上了AI的翅膀,尤其是在脚本报错分析、IT对象操作知识等方面,能力非常突出,极大地提升了运维日常的脚本开发效率,降低了脚本出错的概率。
5、运维开发平台集成
最后,在低代码开发领域,运维开发平台的优势在于图形化开发方式、大量的预制组件、少量手工编码、实现完整的应用(包含页面、流程、数据等),可以降低开发难度、开发成本,缩短开发周期,但是也存在产品学习成本高、配置和脚本复杂度高、需求转化难度大等问题。而这些短板恰好是大模型的优势——自然语言理解、基本推理、海量代码的积累,所以,大模型可以比较完美地集成到蓝鲸运维开发平台中,并且在以下功能上带来了更高的效率和更好的体验:
-
自然语言自动生成页面
开发者接到需求后,没有产品经理,可以直接求助大模型帮忙生成页面需要的组件,如表格、登录框等。大模型查询运维开发平台内置的组件,并在页面快速生成组件实例,整个过程比拖拉拽的交互更加高效。
-
修改页面字段内容和配置
开发者需要针对组件设计一些交互逻辑,如属性、事件等,可以直接对事件进行描述,如添加一个按钮,并给按钮的点击事件进行描述“跳转到首页”,大模型的收到提示词后生成平台规则要求的配置或代码,效果如下:
-
后台代码或SQL生成
运维开发平台的后台代码或SQL语句生成应该与其它的 Copilot 的代码生成方式更优化,分成以下步骤:
1.用户直接在前端页面选择数据源,输入文本,描述需要生成的 SQL 的功能;
2.运维开发平台将数据库表结构和用户输入文本进行格式化整合后,经过 Prompt 优化后发送到大模型;
3.大模型返回SQL语句,用户复制或插入到平台中。
- 需求文档生成应用
更复杂点的场景,运维开发希望能根据业务需求,经过少量人为交互,可以直接生成最终的页面和应用,这个步骤会更加复杂:
1.开发者输入完整的需求,如“新建一个年会打卡抽奖系统”;
2.大模型先根据描述拆解任务,调用运维开发平台能力,生成开发任务步骤和流程,包含设计数据库模型、开发员工信息管理接口、开发打卡系统接口、开发抽奖系统接口、实现用户认证和权限管理、设计API响应格式,以及集成SaaS开发框架、执行开发环境启动和测试预览等部署工作;
3.每个开发任务步骤,大模型会自动生成代码函数片段,并自动调用大模型的 Code Review 能力,生成代码审查报告;
4.开发者根据每个步骤的代码片段,结合 Code Review 结论,可以进一步完善步骤提示词;
5.经过多轮步骤代码自动生成和代码审查,以及少量人为接入,完成最终版本的代码生成;
6.最后,结合蓝鲸SaaS开发框架和自动化部署能力,可以直接把每个步骤的函数代码组装成完整的应用,发布到测试环境进行验证。
未来展望
“把AI和大模型的能力赋能给运维团队,推动运维开发转型,实现组织可持续、自生长”始终是蓝鲸品牌的发展理念,无论是已经“越过顶峰、走出低谷”的PaaS平台、云原生技术,还是处于“期望顶峰”的大模型技术,蓝鲸始终坚持脚踏实地地推动技术的实际应用,不断降低运维使用新技术的门槛。当然,我们在中途休息小憩时,也不会忘记仰望星空,选择摘取几颗耀眼的“技术之星”,照亮我们的前行之路。