低代码平台智能化

前言

为提升人效,我们组自研了一个低代码平台,说是自研但其实还是amis为核心的低代码平台,众所周知,低代码平台使用起来都会有一定的学习成本,尤其是在用户体量上来之后,经常会有人来问我如何使用或者让我答疑等等,咱也不是没文档,但是用低代码的各类人群都有,比如产品测试等。这类人群基础薄弱,根本不想看文档,他们就想很方便快捷的弄出来一个页面。因此,我们推出了智能化低代码计划。

智能化一代

在某天我闲暇之余看到了一篇关于(问答机器人)的文章,我突然灵光一闪,想到了将低代码平台的文档喂给GPT,通过问答的方式帮助用户解决问题,这样用户可以直接问机器人,而不必问我了,于是初版智能化方案营运而生。

实现方案

技术栈我们分别采用了Node + Nestjs + LangChian + React
1、在我们的编辑器页面,添加一个机器人入口图标。
2、用户输入的文本发送至后端服务。
3、检查是否有向量库,如果有则将用户输入的文本进行脱敏,没有则创建向量库并脱敏。

之所以要这么做是因为,没有向量库是没办法进行向量搜索的,没办法搜索就没办法回答。

4、将脱敏后的文本传入到一个模板中,也就是最后的Prompt(提示词)中。

如: 我希望你作为XXX,帮我XXX, ${ 脱敏文本 }, - 如果不知道答案,只能回答'对不起我不知道'

5、问答结束后,判断返回结果是否失败,如果成功将历史记录存储到数据库,下次提问携带上历史记录利于上下午的建设,如果失败则跳过存储历史直接返回给前端,但是由于各种限制,我这里是直接存入了文件。未命名文件.png
最终的一期的实现效果如下所示,对于基本的问题已经能够回答了,但是还不够智能,对用户来说问机器人和问我都差不多,而且如下图所示,它对于用户的问题理解得好像还是有一些问题,把「文本框」理解成了「多行文本框」。初版的机器人还有很长的路要走。
2.gif

缺陷

1、提问时有50%的几率直接返回「我不知道」,原因是,向量库使用的是本地向量库,部署的时候是多云部署,所以会导致请求有概率打到没有向量库的机器。
2、模式单一,节省的成本有限与直接问开发者几乎没有差别。
3、prompt提示词对GPT引导不足,导致它无法更好的从文档中获取答案。

智能化二代

在上一版的基础上进行了大量优化,
首先是我们将 prompt 进行了一版优化,GPT的回答准确率直线上升。
第二是我们对机器人的形态进行了重构,拆分了三种形态的机器人,他们分别是 组件机器人表达式机器人全局机器人
最后是将多云部署修改为了单台部署,避免出现第一期的问题。

实现方案

1、拆分为三种机器人形态,请求时根据type字段来区分它们。
2、根据type类型的不同可以传入更多参数args,该参数中包含了配置上下文代码前缀代码后缀

配置上下文能让GPT更好的理解用户的问题

3、将参数&用户问题嵌入与type类型匹配的Prompt中发起提问。
4、每种机器人的历史记录单独存放,避免出现提问上下文错乱的情况。

表达式机器人

用过amis的同学应该都知道,表达式是amis中很常用的功能,包括控制显隐,数据映射,数据转换等。而表达式的语法既能使用JS表达式又能使用表达式函数,通常表达式函数都记不住。所以我们打造了表达式机器人来帮助我们编写表达式,减轻我们的心智负担。
核心流程如下:
未命名文件 (2).png
通过一个AI输入框,输入问题,点击「回车」or「发送」生成相应表达式。
生成表达式后会让用户自行确认是否应用,在用户确认前可对机器人进行点赞,点踩操作。
aa.gif

组件机器人

在我们日常使用低代码的过程中,超80%的时间都是在配置组件,每个组件的配置不尽相同,就算有可视化界面也有一定的查找成本。所以我们推出了组件机器人,通过用户当前选中的组件的配置和用户的问题,来精确的回答用户并将其直接写入到该组件的配置中,高效的完成一次修改,一次修改时间不超过6s
原理
单个组件的配置比预期的可能要长,一个基础的组件转换为字符串后,字符已然超过100,如果是选中了带子组件的组件,长度可想而知,所以我们采用了两套策略。

  • 首先是将我们的模型更改为gpt-3.5-turbo-16k它允许我们传递16k Token量。

Token 计算方式 输入 + 输出 <= 16k, 输入 = 用户问题 + 用户配置 + 预设Prompt + 组件文档,输出 = GPT回答

  • 其次是我们将含有子组件的组件,提问时置空其子组件,避免浪费Token。

含children 的组件 排除 type 类型为 select, checkbox 等

对于输入基本已经解决了,但是输出的问题还没解决,为何这么说?
因为输出的 Token 如果让 GPT 按照问题修改后全量返回,这可能导致 Token 不足。
所以我们经过思考后,决定定义一套规则让GPT来 patch,让 GPT 先理解规则和组件文档,再对用户的配置进行patch,最终将修改结果当做一系列操作返回给前端,然后执行相应的修改操作。1.png
核心流程如下:
未命名文件 (3).png
通过在组件上的工具栏中增加一个机器人图标,点击后出现AI输入框,输入问题,点击「回车」or「发送」生成相应配置并直接应用,对修改结果不满意直接撤回组件修改即可。最终的实现效果如下。3.gif

全局机器人

首先是将一期的预设Prompt进行了优化,让其回答成功率和精确度更加出色。对其入口进行了更改,其次是全局机器人入口从顶部工具栏图标进入,转为可拖拽的常驻机器人进入,最后是加入了更多场景的文档包括但不限于公共文档&api文档等等,期望能弥补用户在未覆盖的场景中也能找到合理的答案和需要的文档。

总结

经过此次迭代,不仅节省了我个人的时间,而且提升了低代码平台的易用性,让更多人参与的低代码又往前迈进了一步。后续我们可能会对其继续进行迭代,包括但不限于重构文档,高质量文档对回答准确性有着决定性的作用,采用微调手段让GPT更加符合我们的应用场景。最后,这是我们上线该功能后采集的反馈。
看完觉得还不错的话,麻烦给个一键三连
截屏2024-02-19 下午3.54.16.png

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

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

相关文章

Plug and Play ADS-B Transceiver TR-1W for UAV and Drones

目录 Introduction TECHNICAL PARAMETERS ELECTRICAL SPECIFICATION MECHANICAL SPECIFICATION Introduction OVERVIEW TR1W belongs to the class of the smallest ADSB transceivers on market and has been developed for civil and commercial Unmanned Aircraft Syst…

MKdocs添加顶部公告栏

效果如图&#xff1a; docs/overrides下新建main.html &#xff0c;针对main.html文件 树状结构如下: $ tree -a . ├── .github │ ├── .DS_Store │ └── workflows │ └── PublishMySite.yml ├── docs │ └── index.md │ └──overrides │…

Cesium1.95地图使用UrlTemplateImageryProvider加载supermap rest服务报错问题

Cesium1.95地图使用UrlTemplateImageryProvider加载supermap rest服务报错问题 问题描述问题分析解决方案 问题描述 参考这篇博客加载supermap的 rest服务 使用Cesium1.65时能正常加载&#xff0c;升级为1.95后&#xff0c;获取图片的请求报400 Bad Request错误 问题分析 查…

mac电脑 安装 ios开发工具xcode步骤 以及新建ios项目

在Mac电脑上安装Xcode&#xff0c;苹果公司的官方iOS开发工具&#xff0c;以及新建iOS项目&#xff0c;以下是详细步骤&#xff1a; 安装Xcode 1. 打开Mac上的App Store。 2. 在搜索栏中输入“Xcode”。 3. 从搜索结果中找到Xcode&#xff0c;点击“获取”按钮。 4. 输入您的Ap…

【鸿蒙 HarmonyOS 4.0】路由router

一、介绍 页面路由指在应用程序中实现不同页面之间的跳转和数据传递。HarmonyOS提供了Router模块&#xff0c;通过不同的url地址&#xff0c;可以方便地进行页面路由&#xff0c;轻松地访问不同的页面。 二、页面跳转 2.1、两种跳转模式&#xff1a; router.pushUrl()&…

数据结构2月19日

题目&#xff1a;顺序表作业 代码&#xff1a; 功能区&#xff1a; #include <stdio.h>#include <stdlib.h>#include "./d2191.h"SeqList* create_seqList(){SeqList* list (SeqList*)malloc(sizeof(SeqList));if(NULL list){return NULL;}list->p…

06 分频器设计

分频器简介 实现分频一般有两种方法&#xff0c;一种方法是直接使用 PLL 进行分频&#xff0c;比如在 FPGA 或者 ASIC 设计中&#xff0c;都可以直接使用 PLL 进行分频。但是这种分频有时候受限于 PLL 本身的特性&#xff0c;无法得到频率很低的时钟信号&#xff0c;比如输入 …

Puppeteer 使用实战:如何将自己的 CSDN 专栏文章导出并用于 Hexo 博客(三)

文章目录 往期效果将文章信息导出适配 hexo 的文章模板导出的文章路径问题终端控制执行脚本代码整理结尾 往期 Puppeteer 使用实战&#xff1a;如何将自己的 CSDN 专栏文章导出并用于 Hexo 博客&#xff08;二&#xff09; 效果 写了一个 node 脚本用来批量处理 md 文件 本期…

塑造网络安全战略的 5 个趋势

从重创工业部门的勒索软件攻击到人工智能推动的创新网络威胁&#xff0c;2023 年发生了一波备受瞩目的网络安全事件。网络安全形势充满挑战。也就是说&#xff0c;我们当然可以期望组织改进其反防御措施&#xff0c;以应对不断升级的威胁。 1. 零信任获得更多关注 传统的基于…

架构设计:如何保证接口幂等性

引言 在分布式系统中&#xff0c;幂等性是一种十分重要的设计原则。它确保了系统在面对重复请求时能够产生相同的结果&#xff0c;而不会引发意外的行为或者数据不一致的问题。在本文中&#xff0c;我们将深入探讨幂等性设计的重要性&#xff0c;并结合 Java 代码以及不同场景…

【JVM】打破双亲委派机制

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;JVM ⛺️稳中求进&#xff0c;晒太阳 打破双亲委派机制 打破双亲委派机制三种方法 自定义类加载器 ClassLoader包含了四个核心方法 //由类加载器子类实现&#xff0c;获取二进制数据调用…

XML的写法

下面我将以如下代码来解释下XML的写法 <?xml version"1.0" encoding"UTF-8" ?> <Steam><steam id"1"><zhanghao>admin</zhanghao><mima>123</mima><num>120</num></steam><st…

Eureka注册中心(黑马学习笔记)

Eureka注册中心 假如我们的服务提供者user-service部署了多个实例&#xff0c;如图&#xff1a; 大家思考几个问题&#xff1a; order-service在发起远程调用的时候&#xff0c;该如何得知user-service实例的ip地址和端口&#xff1f; 有多个user-service实例地址&#xff0c…

从 Elasticsearch 到 Apache Doris,统一日志检索与报表分析,360 企业安全浏览器的数据架构升级实践

导读&#xff1a;随着 360 企业安全浏览器用户规模的不断扩张&#xff0c;浏览器短时间内会产生大量的日志数据。为了提供更好的日志数据服务&#xff0c;360 企业安全浏览器设计了统一运维管理平台&#xff0c;并引入 Apache Doris 替代了 Elasticsearch&#xff0c;实现日志检…

mysql和sql server 中如何创建和管理用户

阅读本文之前请参阅----MySQL 数据库安装教程详解&#xff08;linux系统和windows系统&#xff09; 在MySQL和SQL Server中创建和管理用户的过程有所不同。下面分别介绍这两种数据库系统中用户管理的常见步骤。 MySQL 创建用户 在MySQL中创建用户的语法…

【鸿蒙 HarmonyOS 4.0】网络请求

一、介绍 资料来自官网&#xff1a;文档中心 网络管理模块主要提供以下功能&#xff1a; HTTP数据请求&#xff1a;通过HTTP发起一个数据请求。WebSocket连接&#xff1a;使用WebSocket建立服务器与客户端的双向连接。Socket连接&#xff1a;通过Socket进行数据传输。 日常…

在UE5中制作UI环形进度条

在日常开发中&#xff0c;经常会有环形进度条UI的效果&#xff0c;例如技能CD时间、加载动画等&#xff0c;本文将通过材质球节点实现该效果&#xff0c;相较于准备美术素材&#xff0c;这样的做法更为方便&#xff0c;效果如下&#xff1a; 1.制作环状效果材质函数 在内容面…

【智能家居】7、主程序编写+实现语音、网络和串口功能

需要毕业论文私信有偿获取 截止目前mainPro.c代码 #include <stdio.h> #include <string.h>#include "controlDevices.h" #include "inputCmd.h"struct Devices *findDevicesName(char *name,struct Devices *phead){struct Devices *tmpphe…

设计模式----开题

简介&#xff1a; 本文主要介绍设计模式中的六大设计原则。开闭原则&#xff0c;里氏代换原则&#xff0c;依赖倒转原则&#xff0c;接口隔离原则&#xff0c;迪米特原则和合成复用原则。这几大原则是设计模式使用的基础&#xff0c;在使用设计模式时&#xff0c;应该牢记这六大…

【PX4-AutoPilot教程-TIPS】PX4控制无人机在Gazebo中飞行时由于视角跟随无人机在画面中心导致视角乱晃的解决方法

PX4控制无人机在Gazebo中飞行时由于视角跟随无人机在画面中心导致视角乱晃的解决方法 问题描述解决方法 问题描述 无人机在Gazebo中飞行时&#xff0c;无人机始终处于画面中央&#xff0c;会带着视角乱晃&#xff0c;在Gazebo中进行任何操作视角都无法固定。 观察Gazebo左侧Wo…