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表明,你如果调用这个函数,需要向函数提供两个参数,并且对两个参数都进行了描述。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Tl2uvl8v-1692754507906)(media/e8573f9b741e5f8740fa1e4b64f973c2.png)]

看懂了functions参数,我们大概知道了原理,其实并不复杂,我们通过定义一系列函数,告诉GPT函数是什么时候用,做什么用,需要什么参数才能用等,GPT会根据与用户的聊天信息自行判断是否要“执行函数”。

为什么要给执行函数打上双引号呢?事实上GPT肯定是不能直接执行函数的,因为这只是个普通的HTTP请求,GPT也只是返回一个JSON格式的响应信息,那该如何实现执行函数的呢?

如何让ChatGPT调用函数

要搞懂这个,我们还得看看GPT给我们返回的数据长什么样子。

在这里插入图片描述

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

我们发送“请问北京现在天气怎么样”给GPT,看它的回答。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NWzpRPsm-1692754507909)(media/fb51776ba6344fb79cdfcb610513cdfe.png)]

这里可以明显看到,finish_reason的值变成了“function_call”,开发人员通过判断finish_reason的值,就可以知道GPT是否要调用函数。

这下豁然开朗了,我们通过回复的内容,弄清楚GPT要调用什么函数,然后拿到GPT帮我们获取的参数,直接执行函数就可以了。

使用ChatGPT嵌入活字格

数据库表和前端设计

下面我们来给活字格装上AI的翅膀,我们先打开活字格9.0的版本,新建一个“订单数据表”,并填充模拟数据,另外再建一张消息记录表。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DLYTxGeh-1692754507909)(media/8ffb0ef6d65b0bfee67bbdd8527bb78f.png)]

(订单数据表)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EkkvyVFG-1692754507910)(media/0583676b74034c7cf582135bd016efce.png)]

(表字段)

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MMIYvdcW-1692754507910)(media/5d9f20a70e8db6683778d99ce7d0f2cd.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vmOuxKmi-1692754507910)(media/f8d96b5f66f4e9b1d535314ceba6590d.gif)]

(运行效果)

这个页面用来与用户进行自然语言交互,前端我们暂时做到这儿。

后端设计

接下来设计后端,把ChatGPT对接部分做好。

为了方便使用,我提前将GPT的API封装成了插件,原理跟上面官方所说一致。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iBdcYGJA-1692754507911)(media/984348321097c7a3cdcb793a11b78160.png)]

(封装后的插件)

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sOY9Vitp-1692754507912)(media/4c773f6b614907d31a693862726e2862.png)]

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-djyjEUwB-1692754507912)(media/5ed7aea543b7e601dc03790c48d9e786.png)]

在参数的配置上,我们也有一个“参数说明”,也就是用来告诉GPT,这个参数是什么意思,GPT会根据用户的信息,自己来归纳和推测参数内容。

使用ChatGPT查询订单

好了,做到这儿,GPT后端部分也已经配置好,现在我们模拟一个场景出来,例如我想让GPT帮我们查询订单数据,我们可以这样定义:

首先定义一条命令如下,告诉GPT,这个命令是用来按条件查询多个订单数据。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aughbWLn-1692754507913)(media/4f595078dda1e1ad8c81c81e1464a374.png)]

(定义命令)

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-08KxEXbi-1692754507913)(media/af4e0a373de08a2b4e576c237f4e31ba.png)]

(参数定义)

判断GPT返回的function_call.name是不是等于GetOrderData:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Fw6lXO7b-1692754507914)(media/ec49001b1cd9936954ad29e85715bfc6.png)]

(判断function_call.name)

如果是,就把获得的参数用来筛选数据:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-npiaZmje-1692754507914)(media/735094dc3a5119651cde75e117b7c31b.png)]

(筛选数据)

最后把获取到的数据返回给前端:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sbv0XklX-1692754507915)(media/78e87b4db15e5428500a88a9c686adf9.png)]

(数据返回前端)

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z8rxIF1x-1692754507916)(media/d5a81b456a6e33e8edbe048459f38351.png)]**

最终实现的效果:

在这里插入图片描述

(查询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和活字格技术的不断发展,推动低代码开发向智能开发的创新和突破,让我们迎接更加智能的软件时代。
44138851):

总结

ChatGPT与活字格的结合为软件设计带来了巨大的潜力,并给开发者带来了全新的思考和改变。AI的执行任务能力和自然语言交互使软件操作更加智能化和直观化。开发者将专注于与AI的对话和数据分析目标的设定,而无需担心底层的技术细节。我们期待ChatGPT和活字格技术的不断发展,推动低代码开发向智能开发的创新和突破,让我们迎接更加智能的软件时代。

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

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

相关文章

indexDB入门到精通

前言 由于开发3D可视化项目经常用到模型,而一个模型通常是几m甚至是几十m的大小对于一般的服务器来讲加载速度真的十分的慢,为了解决这个加载速度的问题,我想到了几个本地存储的。 首先是cookie,cookie肯定是不行的,因为最多以只…

【项目实践】基于LSTM的一维数据扩展与预测

基于LSTM的一维数据拟合扩展 一、引(fei)言(hua) 我在做Sri Lanka生态系统服务价值计算时,中间遇到了一点小问题。从世界粮农组织(FAO)上获得Sri Lanka主要农作物产量和价格数据时,其中的主要作物Sorghum仅有2001-2006年的数据,而Millet只有…

常用的Selenium基础使用模板和简单封装

前言 近来又用上了 Selneium ,因为反复用到,所以在这里将一些常用的方法封装起来,方便后续的使用。 在这篇文章中,我们将探讨 Selenium 的基础模板和基础封装,以便更好地理解 Selenium 的使用方法。 在Selenium的使…

MyBatisPlus入门

入门&#xff1a; 依赖&#xff1a; <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>{version}</version> </dependency> 配置&#xff1a; ## 去除logo …

无涯教程-PHP - 标量函数声明

在PHP 7中&#xff0c;引入了一个新函数&#xff0c;即标量类型声明。标量类型声明有两个选项- Coercive - 强制性是默认模式。Strict - 严格模式必须明确提示。 可以使用上述模式强制执行以下类型的函数参数- intfloatbooleanstringinterfacesarraycallable 强制模…

opencv 进阶15-检测DoG特征并提取SIFT描述符cv2.SIFT_create()

前面我们已经了解了Harris函数来进行角点检测&#xff0c;因为角点的特性&#xff0c;这些角点在图像旋转的时候也可以被检测到。但是&#xff0c;如果我们放大或缩小图像时&#xff0c;就可能会丢失图像的某些部分&#xff0c;甚至有可能增加角点的质量。这种损失的现象需要一…

Revit 3D高效处理:cad exchanger sdk 3.21 Crack

3D 格式概述&#xff1a;Revit Revit 已成为寻求高效、准确的建筑信息建模的专业人士的首选解决方案。在这篇引人入胜的功能概述中了解 Revit 的特性和影响。 什么是Revit&#xff1f; Autodesk Revit 是一款流行的 CAD 软件&#xff0c;重点关注 BIM&#xff0c;被建筑师、工…

C++入门:引用是什么

目录 1.引用的概念 2.引用的特征 3.常引用 4.引用使用场景 5.传值&#xff0c;传引用效率比较 6.引用与指针的区别 1.引用的概念 引用不是新定义一个变量&#xff0c;而是给已存在变量取了一个别名&#xff0c;编译器不会为引用变量开辟内存空 间&#xff0c;它和它引用…

AUTBUS全球首发,东土与您相约工博会

2023年中国国际工业博览会将于9月19日至9月23日在上海盛大举办。作为工博会重点参展企业之一&#xff0c;东土科技将重磅亮相6.1号馆工业自动化展&#xff08;展位号&#xff1a;6.1H-D137&#xff09;。 值得一提的是&#xff0c;AUTBUS 国际标准作为全球第一个基于时间敏感网…

LLMs 缩放法则和计算最优模型Scaling laws and compute-optimal models

在上一个视频中&#xff0c;您探讨了训练大型语言模型的计算挑战。在这里&#xff0c;您将了解关于模型大小、训练、配置和性能之间关系的研究&#xff0c;以确定模型需要多大。请记住&#xff0c;预训练期间的目标是最大化模型的学习目标性能&#xff0c;即在预测令牌时最小化…

LeetCode--HOT100题(38)

目录 题目描述&#xff1a;226. 翻转二叉树&#xff08;简单&#xff09;题目接口解题思路代码 PS: 题目描述&#xff1a;226. 翻转二叉树&#xff08;简单&#xff09; 给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 LeetCode做题链…

pytorch 入门1-tensor 广播 view reshape

tensor 的四则运算broadcast import torch import numpy as np # 张量tensor 随机初始化 x torch.rand(4,3) print(x) y torch.randn(4,3) print(y)# 初始化全零 张量 a torch.zeros((4,4),dtypetorch.long) print(a) #初始化全一 张量 b torch.ones(4,4) print(b) c tor…

多客户企业选择拥有哪些功能的CRM系统?

管理海量客户信息对于每一家企业都是巨大的挑战。粗放式的管理客户资料是对资源的一种浪费&#xff0c;让很多有意向的高价值客户流失。客户比较多&#xff0c;有什么CRM系统推荐吗&#xff1f;帮助企业轻松地跟进客户&#xff0c;提高销售效率&#xff1f; 1.易于使用 首先是…

macOS Ventura 13.5.1(22G90)发布(附黑/白苹果系统镜像地址)

系统镜像下载&#xff1a;百度&#xff1a;黑果魏叔 系统介绍 黑果魏叔 8 月 18 日消息&#xff0c;苹果今日向 Mac 电脑用户推送了 macOS 13.5.1 更新&#xff08;内部版本号&#xff1a;22G90&#xff09;&#xff0c;本次更新距离上次发布隔了 24 天。 本次更新重点修复了…

Docker部署MongoDB 5.0.5

1、查看目录 rootwielun:~# tree mongo mongo ├── conf │ └── mongod.conf ├── data ├── docker-compose.yml └── logrootwielun:~# cd mongo rootwielun:~/mongo# chmod 777 log2、配置docker-compose.yml rootwielun:~/mongo# cat docker-compose.yml ve…

【ES6】—【必备知识】—扩展运算符与rest参数

一、扩展运算符 1. 定义&#xff1a;把数组或类数组展开成用逗号隔开的值 function foo(a,b,c) {console.log(a,b,c) } let arr [1,2,3] foo(...arr)2. 把两个数组合并 2-1. ES5 实现 let arr1 [1,2,3] let arr2 [4,5,6] Array.prototype.push.apply(arr1, arr2) consol…

多线程+隧道代理:提升爬虫速度

在进行大规模数据爬取时&#xff0c;爬虫速度往往是一个关键问题。本文将介绍一个提升爬虫速度的秘密武器&#xff1a;多线程隧道代理。通过合理地利用多线程技术和使用隧道代理&#xff0c;我们可以显著提高爬虫的效率和稳定性。本文将为你提供详细的解决方案和实际操作价值&a…

文心一言 VS 讯飞星火 VS chatgpt (80)-- 算法导论7.4 5题

五、如果用go语言&#xff0c;当输入数据已经“几乎有序”时&#xff0c;插入排序速度很快。在实际应用中&#xff0c;我们可以利用这一特点来提高快速排序的速度。当对一个长度小于 k 的子数组调用快速排序时&#xff0c;让它不做任何排序就返回。当上层的快速排序调用返回后&…

国产精品:讯飞星火最新大模型V2.0

大家好&#xff0c;我是爱编程的喵喵。双985硕士毕业&#xff0c;现担任全栈工程师一职&#xff0c;热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。…

ethers.js2:provider提供商

1、Provider类 Provider类是对以太坊网络连接的抽象&#xff0c;为标准以太坊节点功能提供简洁、一致的接口。在ethers中&#xff0c;Provider不接触用户私钥&#xff0c;只能读取链上信息&#xff0c;不能写入&#xff0c;这一点比web3.js要安全。 除了之前介绍的默认提供者d…