ChatGPT赋能低代码开发:打造智能应用的双重引擎
摘要:本文摘自葡萄城低代码产品活字格的资深用户(格友超哥)所撰写的文章:《惊叹表现!活字格+ChatGPT:低代码开发智能应用的巨大潜力》。

ChatGPT的functions函数使用方
自从OPENAI发布了最新的GPT引擎gpt-3.5-turbo-0613之后,我就对它的functions参数很感兴趣,利用GPT超强的语言理解能力,如果加上函数执行,我们就可以让AI不再是聊聊天、回答问题了,甚至能够直接帮我们完成工作任务。刚好今天周末,不如就动手试试,看能否达到我所想的效果。
开始之前,我们先要看一下官方文档,看看这个functions,是个什么神奇的参数,只有搞清楚了它的作用和原理,我们才知道如何利用它。
这是官方对Function calling的介绍,我们可以看到,目前支持gpt-3.5-turbo-0613和gpt-4-0613两种引擎。
再看看functions参数的格式和属性,我们可以看到,这里我们向GPT定义了一个名为"get_current_weather"的函数,并且在description中描述了这个函数的用途,在properties中,我们定义了两个参数,location和unit,这是向GPT表明,你如果调用这个函数,需要向函数提供两个参数,并且对两个参数都进行了描述。

看懂了functions参数,我们大概知道了原理,其实并不复杂,我们通过定义一系列函数,告诉GPT函数是什么时候用,做什么用,需要什么参数才能用等,GPT会根据与用户的聊天信息自行判断是否要“执行函数”。
为什么要给执行函数打上双引号呢?事实上GPT肯定是不能直接执行函数的,因为这只是个普通的HTTP请求,GPT也只是返回一个JSON格式的响应信息,那该如何实现执行函数的呢?
如何让ChatGPT调用函数
要搞懂这个,我们还得看看GPT给我们返回的数据长什么样子。

上面是一个正常的聊天回复信息,我们看到,message里面只有role和content两个属性,另外还新增了一个属性 finish_reason ,当它的值为“stop”,说明此次的对话无需执行函数,也说明GPT并没有调用函数的打算,接下来我们看看GPT打算调用函数时,会返回什么?
我们发送“请问北京现在天气怎么样”给GPT,看它的回答。

这里可以明显看到,finish_reason的值变成了“function_call”,开发人员通过判断finish_reason的值,就可以知道GPT是否要调用函数。
这下豁然开朗了,我们通过回复的内容,弄清楚GPT要调用什么函数,然后拿到GPT帮我们获取的参数,直接执行函数就可以了。
使用ChatGPT嵌入活字格
数据库表和前端设计
下面我们来给活字格装上AI的翅膀,我们先打开活字格9.0的版本,新建一个“订单数据表”,并填充模拟数据,另外再建一张消息记录表。

(订单数据表)

(表字段)
然后新建一个页面,制作一个简单类似搜索的页面,运行看看效果。


(运行效果)
这个页面用来与用户进行自然语言交互,前端我们暂时做到这儿。
后端设计
接下来设计后端,把ChatGPT对接部分做好。
为了方便使用,我提前将GPT的API封装成了插件,原理跟上面官方所说一致。

(封装后的插件)
设置好KEY和消息数据以后,我们利用插件的自动化命令配置好需要ChatGPT的执行的命令。

这里的每个命令都有一个描述,我们可以用自然语言告诉AI,什么时候该调用我,AI会自己决定调用哪一个命令,当然光有命令还不行,我们还得让AI提供参数给我们。

在参数的配置上,我们也有一个“参数说明”,也就是用来告诉GPT,这个参数是什么意思,GPT会根据用户的信息,自己来归纳和推测参数内容。
使用ChatGPT查询订单
好了,做到这儿,GPT后端部分也已经配置好,现在我们模拟一个场景出来,例如我想让GPT帮我们查询订单数据,我们可以这样定义:
首先定义一条命令如下,告诉GPT,这个命令是用来按条件查询多个订单数据。

(定义命令)
再给命令定义查询订单需要用到的一些关键参数,有了这些信息,我们后面就可以实现查询条件,从而根据条件筛选数据。

(参数定义)
判断GPT返回的function_call.name是不是等于GetOrderData:

(判断function_call.name)
如果是,就把获得的参数用来筛选数据:

(筛选数据)
最后把获取到的数据返回给前端:

(数据返回前端)
最后我们在前端补充一个页面,用来接收并显示查询返回的数据表中的数据。

最终实现的效果:

(查询2023年6月的采购订单数据)
可以看到GPT准确的理解了我们的意图,并且调用了我们预设好的命令,还提供了我们需要的日期、订单类型等参数。
通过这个简单的例子,我们可以验证AI与活字格结合的可行性,那么我们除了查询数据,还能不能做点更复杂的事情呢?
使用ChatGPT显示订单内容
所以接着我又做了另一个尝试,让AI根据我的要求找到某个订单,并显示该订单内容
这个尝试,我加入了更多的参数,由日期、订单类型、负责人等,然后修改了逻辑,把命令放到前端页面来执行。

(前端命令设置)
来看看运行效果:

(打开2023年6月8日超哥采购Iphone的订单)
看来是完全没有压力的,这时候我们初步已经学会怎么运用GPT的能力,来为我们完成特定任务了,下面我将继续完成一个更复杂、更实用的尝试。
使用ChatGPT发送邮件
我想让系统理解这样一句话,并帮我执行。
我是乔布斯,请帮我找出2023年6月份马斯克经手采购iphone的订单数据,发送邮件给超哥,并写一段话礼貌的催促他快点审核。
我来帮大家理理,想要完成这个任务,我们需要做些?
让AI知道我是谁;
需要找出2023年6月1日到6月30日范围内,负责人为"马斯克"、订单类型为"采购订单"的数据;
将上面数据导出为Excel;
找到超哥的邮箱,并将上面的数据作为附件;
编写一段话作为邮箱正文;
寻找系统用户中一个叫“超哥”的人,并拿到邮箱地址;
将邮件发送出去并返回。
梳理清楚了,我们就开始做逻辑,同样配置好命令和参数的描述

然后利用报表模块,设计一个简单的报表,绑定订单数据库

(报表模块)
最后做一下导出Excel+发送邮件的命令

(命令执行过程设计)
好了,我们来试试效果,我给大家做了个带讲解的视频:
总结
ChatGPT与活字格的结合为软件设计带来了巨大的潜力,并给开发者带来了全新的思考和改变。AI的执行任务能力和自然语言交互使软件操作更加智能化和直观化。开发者将专注于与AI的对话和数据分析目标的设定,而无需担心底层的技术细节。我们期待ChatGPT和活字格技术的不断发展,推动低代码开发向智能开发的创新和突破,让我们迎接更加智能的软件时代。
ChatGPT赋能低代码开发:打造智能应用的双重引擎的更多相关文章
- 低代码开发Paas平台时代来了
概述 **本人博客网站 **IT小神 www.itxiaoshen.com 低代码理论 概念 低代码开发基于可视化和模型驱动的概念,结合了云原生和多终端体验技术,它可以在大多数业务场景中,帮助企业显著 ...
- 用友低代码开发平台YonBuilder首次亮相DevRun开发者沙龙
2020年的今天,没有人会再质疑企业上云的必要性与价值所在.从高科技行业到传统领域,大大小小的企业都希望走在变革道路前列,通过企业云加快业务数字化转型,更好地维护和管理企业数据. 然而,大多数企业都很 ...
- APICloud发布低代码开发平台
云原生的出现,致使传统IT模式正在集中向云架构.云开发转型,其中在企业业务的互联网化.数字化进程中尤为突出,并衍生出“敏捷开发”.“快速迭代”的刚性需求.面对双模IT,如何打造全新的IT团队与模式?并 ...
- 从表单驱动到模型驱动,解读低代码开发平台的发展趋势 ZT
原文地址:https://www.grapecity.com.cn/blogs/read-the-trends-of-low-code-development-platforms 随着社会数字化进程的 ...
- 商业创新不能等?用友低代码开发平台YonBuilder为您加速!
随着云计算.人工智能.物联网.大数据.5G等新一代技术的快速发展,越来越多的企业希望借助技术的力量加速数智化转型,期许通过更加敏捷和强大的应用系统推动企业的商业创新速度.但传统软件开发周期长.开发成本 ...
- 为企业应用开发提速,写给企业IT部门的低代码开发基础知识
简介:应用程序开发长期以来一直是IT部门和业务部门面临的问题. IT部门总是被新的应用程序需求弄得不堪重负.他们不可能完成业务部门想要完成的每一个项目. 同时,业务部门的用户厌倦了等待,并开始完全绕过 ...
- 开发者的拯救者还是掘墓人?解密低代码开发平台 ZT
据英国<金融时报>消息称,私募股权投资机构 KKR 和高盛共同筹集了 3.6 亿美元,以收购低代码开发平台 OutSystems 的“大量”少数股权,本次交易对 OutSystems 的估 ...
- 低代码开发LCDP,Power Apps系列 - 新建泰勒创新中心门户案例
低代码简介 上世纪八十年代,美国就有一些公司和实验室开始了可视化编程的研究,做出了4GL"第四代编程语言",到后来衍生成VPL"Visual Programming La ...
- 低代码开发LCDP,Power Apps系列 - 搭建入职选购电脑设备案例
低代码简介 上世纪八十年代,美国就有一些公司和实验室开始了可视化编程的研究,做出了4GL"第四代编程语言",到后来衍生成VPL"Visual Programming La ...
- rtvue-lowcode:一款基于uniapp框架和uview组件库的开源低代码开发平台
rtvue-lowcode低代码开发平台 rtvue-lowcode一款基于uniapp框架和uview组件库的低代码开发平台,项目提供可视化拖拽编辑器,采用MIT开源协议,适用于app.小程序等项目 ...
随机推荐
- pycharm eslint 关闭
pycharm 关闭eslint 文件->设置->语言和框架->JavaScript->代码质量工具->ESLint
- Vuex modules 中active相互调用
大中型项目中使用vuex进行状态管理时,经常会按模块分割到不同的module中去,而操作中难免有模块中的active相互调用的情况,然而有时也会出现一些问题,这里顺便记录下 store目录结构 在us ...
- 如何让Task在非线程池线程中执行?
Task承载的操作需要被调度才能被执行,由于.NET默认采用基于线程池的调度器,所以Task默认在线程池线程中执行.但是有的操作并不适合使用线程池,比如我们在一个ASP.NET Core应用中承载了一 ...
- html+css简单易懂的轮播图实现
实现轮播图感觉好复杂啊,这个比较简单的实现了 但是还是没有怎么理解代码,只能先发出来慢慢学习学习了 话不多说,直接上代码 <!DOCTYPE html> <html lang=&qu ...
- P3498 [POI2010]KOR-Beads 题解
前言: 最近在做哈希的题,发现了这道好题,看题解里很多大佬的方法都很巧妙,自己就发一个较为朴素的方法吧. 题意: 题目传送门 给你一个序列,需要求出数 k,使划分的子串长度为 k 时,不同的子串数量最 ...
- vue 自己实现一套 keepalive 方案
vue自定义keepalive组件 前一阵来了一个新的需求,要在vue项目中实现一个多开tab页面的功能,本来心想,这不简单嘛就是一个增加按钮重定向吗?(当然如果这么简单我就不写这个文章了).很快写完 ...
- 20200630 excel365 选中一个单元格,对应的行和列都高亮
Excel默认只高亮选中单元格的行标和列标,在整理数据时容易眼花,如能把这一行和列都高亮岂不是更好.方法在此: 1 打开"开发工具"菜单 默认这一项是隐藏的.文件-选项-自定义功能 ...
- 使用 InstructPix2Pix 对 Stable Diffusion 进行指令微调
本文主要探讨如何使用指令微调的方法教会 Stable Diffusion 按照指令 PS 图像.这样,我们 Stable Diffusion 就能听得懂人话,并根据要求对输入图像进行相应操作,如: 将 ...
- 为什么从 MVC 到 DDD,架构的本质是什么?
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 本文来自于小傅哥新编写的<Java简明教程>系列内容,本教程意在于通过简单.明了. ...
- gitlab配置环境及pycharm配置
一.gitlab介绍 GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务 git.gitlab.GitHub的简单区别 git 是一种基于命令 ...