鹅厂:如何与ChatGPT4结对编程提升研发效率

ChatGPT4 相比 ChatGPT3.5 在逻辑推理能力上有了很大的进步,他的代码生成能力更是让我非常震撼,因此我尝试在工作中某些不涉密的基础工作应用 ChatGPT4 来提升研发效率,简单尝试之后发现确实有不少场景是有效的。本文将向大家展示如何充分利用 ChatGPT-4 这一强大的 AI 工具,并结合结对编程方法,从而在研发过程中实现显著的效率提升。

重要提示:大家在作相应尝试的时候,一定要注意信息安全。

场景一:正则表达式编写

我们团队负责 PCG 可观测平台-伽利略的研发,PromQL 是可观测领域常用的查询语言,Protobuf 这种协议有自带基于正则表达式的参数检查器,因此我们需要写一个正则表达式,来检测 PromQL 的合法性,以便于尽早的发现不合法的 PromQL,抛出错误,降低底层引擎的压力。

这个需求,按经验至少得花超过一小时编码及单元测试,得翻阅不少 PromQL 手册,正则表达式的手册。我们试着把这个任务交给 ChatGPT4。

916a4caf65e41ce17972c2dcfedc8d4b.png

ChatGPT4 写了一个很复杂的表达式,并且告诉我们这个需求是不合理的,完美的语法检测得要实现一个语法分析器,而不是正则表达式。

这里我完善我的需求,我们在接入层的正则应该在乎精确率,忽略召回率,旨在尽早发现一部份错误,而不是全部错误。

d4c687f4cd4c5f5315efb6f8b23ac7c5.png

这一次,看上去还不错,但是我懒,不想仔细看,我又不放心他写。所以我要求他自己写个单测,进行充分的自测。

2a44d82adc89f6ce703a0be3740c1fd8.png

ChatGPT4 写的单测非常的 Readability,他还知道表驱动的方式写测试数据。

咱们把代码 run 起来:

35f1177589eb1f2882d35c31df8b3b06.png

有一个测试用例没过,把这种情况告诉 ChatGPT4,让他自己解决吧。

10a72a4e3d9b95f61087cb88524fca14.png

ChatGPT4 说要解决这个问题,必须引入更复杂的表达式。这不是我们想要的结果,因此我们还是选择了更简单的正则表达式交付需求,做一些简单的检查,更复杂的检查就交给 promql 语法解析器去做。

所以我花 5 分钟,发现了需求的不合理,选择了最符合业务需求的方案,并且还写完了我们想要的正则表达式。并且代码非常 Readability,同时有单测。

场景二:重构代码

我们写代码的过程中,往往会因为疏忽,而产出各种 bug 和坏味道。我们来试试 ChatGPT4 能帮我们做什么。

下面随机找了一段我们代码仓库里面的不涉密基础代码,发给 ChatGPT4。

package stringsimport ("fmt""regexp""strconv"
)var reOfByte = regexp.MustCompile(`(\d+)([GgMmKkBb]?)`)// ParseByteNumber 解析带有容量的字符串
func ParseByteNumber(s string) int64 {arr := reOfByte.FindAllStringSubmatch(s, -1)if len(arr) < 1 || len(arr[0]) < 3 {return -1}n, err := strconv.Atoi(arr[0][1])if err != nil {return -2}if n <= 0 {return -3}switch arr[0][2] {case "G", "g":return int64(n) * (1024 * 1024 * 1024)case "M", "m":return int64(n) * (1024 * 1024)case "K", "k":return int64(n) * (1024)case "B", "b", "":return int64(n)default:return -4}
}

先让 ChatGPT 看一眼代码。

94cda3ee97fd2efa42955b116961dc4a.png

ChatGPT4 表示他看懂了,接下来给 ChatGPT4 提一下重构的需求,看看 ChatGPT4 的表现。

d89dec6784d889e29933bbaf7817296c.png

不得不说,ChatGPT4 这些优化,使得代码 Readability 了很多,特别是错误码返回这里,原来的代码真是天坑。但同时我们也发现这个函数实现是不太符合需求的,他只匹配了 substring。例如 XXXX100KBXXX 这类参数也会被错误匹配。我们把这些情况告诉 GPT4,看看他的表现。(毕竟是结对编程,我也得动点脑子做点贡献!!!)

04a8b2be9178823b1f42f17e4dab81e2.png

这里我们看到,GPT4 不仅仅完成了需求,他还做到了兼容浮点数输入,使得返回的精度更高了。例如 1.5MB 实际是 1536B,按我们最初的实现确实会丢失精度,变成 1024B。这还帮我们发现了个 BUG,捂脸。

最后照例,让他补充一下单测。

85cc484abcaa1ab05fd2c3ff2b276013.png

通过 15 分钟的简单交流,我和 ChatGPT 一起完成了这次代码重构!!!

场景三:实现业务逻辑

虽然要求 chatGPT4 一次性给我们交付整个完整需求有点过分,但我们依然可以把需求拆分成小的逻辑单元给 chatGPT 实现,并要求他编写单测。

这次,我们找了我们项目里面最新的需求来做个实验,让 ChatGPT 帮我们完成需求。

需求是要做一个事件的聚合能力,伽利略会收集各个平台的事件数据,聚合之后以更加可视化的方式给用户展示。来吧,GPT4!

23787bb59790133552266c1ec2a0cdb3.png b10c0c9b6d96f57b941cee87916c48c5.png 956660d6299f72048bec52f9bc8dd629.png 3b92f65ae42e5f104700c4c6f29db48f.png

在我不断的追加我的需求细节之后,chatGPT4 交付了一个还算可以的东西,当然这里我们也发现这段代码有个 BUG,当然,我是不会自己动手修复的,让 GPT4 自己来吧。

9d9bc4ad4413d1a1fe74245f81a2fcb5.png

整体代码虽然不算特别清晰,但做一些修改还是可以用的,当然我觉得这跟我本身没把需求描述的太清楚也有关系。

场景四:改 BUG

我们伽利略平台支持自定义指标,底层识别的变量类型是 2,$3 这种形式,UI 为了用户可读性,是表现为 A,B,C。最近出现了一个 BUG,A+B+C+D+E+F+G+H+I+J+K 配置下去再加载上来之后编程 A+B+C+D+E+F+G+H+I+J+B0。

原因 K 是 ,但是前端转码的实现,是循环遍历处理的,所有处理两位数字有,转回来识别成了1 和 0。

c52aa2b757ffe807a4dbec48d342f0be.png

我们把这个问题给 ChatGPT,看他怎么解决。

ffe6351a11d751b2e3e01b9bf77aa8b7.png 74a7cbe992009aaa1504e7d8f0f72ac9.png

场景五:写单测

我相信上面的例子也足够体现 GPT4 写单测的能力了,它不管是表驱动、测试用例的构造能力、代码的 Readability 能力都非常强!

场景六:取名字

我们知道取变量名和函数名是工程师们最头疼的问题,这个 ChatGPT4 非常擅长,毕竟这是它的母语呀,例如上面的解析存储容量的函数,它给的建议确实比原名好太多了。

779f4988c30334081699053f7daee298.png

总结

GPT3 我感觉他还是网上搜了一些代码组合给我的,GPT4 给我的感觉是他真的 get 到我的意思了,而且他能根据我的反馈不断的优化他给我的代码。虽然不能完全替代工程师编码,但在很多繁琐且不需要交代太多背景的独立工作上,GPT4 还是完成的非常不错的。作为一个技术人员,尝试下与 GPT4 结对编程的方式,有可能在某些方面真的能提升自身生产效率。

微软在生产力工具这个方向上的成就真的是不错,也期待我们公司能搞出这么牛的成果!

PS:

验证它是 GPT3 还是 GPT4 最简单的一句话:昨天的今天是明天的什么。

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

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

相关文章

chatgpt赋能python:Python去除非法字符:让你的数据更干净、更有效

Python去除非法字符&#xff1a;让你的数据更干净、更有效 在处理数据时&#xff0c;非法字符是常见的问题。它们可能是一些无意义的符号、特殊字符或非常规字符等等。如果不被正确处理&#xff0c;这些非法字符可能会给你带来麻烦&#xff0c;如导致脚本失败、破坏数据完整性…

chatgpt赋能python:PythonGUI界面中如何添加背景

Python GUI界面中如何添加背景 介绍 Python是一种简单易用、易学习的高级编程语言&#xff0c;因其强大的功能和优秀的开发环境广泛应用于众多领域&#xff0c;尤其是在大数据领域&#xff0c;如人工智能、机器学习等方面都有着广泛的应用。在PyQt、Tkinter等图形用户界面&am…

chatgpt赋能python:Python如何转换Unicode?——详细解读

Python如何转换Unicode&#xff1f;——详细解读 Python是一种功能强大的编程语言&#xff0c;被广泛使用于web开发、数据科学、人工智能等领域。在Python程序中&#xff0c;我们常常需要使用Unicode字符编码&#xff0c;尤其是在国际化开发和多语言支持方面。 那么&#xff…

chatgpt赋能python:Python中的输出换行符:\n

Python中的输出换行符&#xff1a;\n Python是一门高级编程语言&#xff0c;广泛应用于数据分析、机器学习、人工智能等领域。在使用Python编写程序时&#xff0c;输出数据是必不可少的一部分。在输出数据时&#xff0c;有时需要使用换行符&#xff0c;以使输出显示更加规范。…

医院患者随访管理系统

康策医院随访管理系统对全院患者的定期回访服务提供了专业化的管理&#xff0c;搭建医院三级随访的架构&#xff0c;可根据病人信息进行回访设置自动进行回访提醒&#xff0c;并可在查看患者信息资料时直接通过系统拨打语音电话并录音、发送节日问候短信&#xff0c;系统包含统…

BloombergGPT: 首个金融垂直领域大语言模型

BloombergGPT: 首个金融垂直领域大语言模型 Bloomberg 刚刚发布了一篇研究论文&#xff0c;详细介绍了他们最新的突破性技术 BloombergGPT。BloombergGPT是一个大型生成式人工智能模型&#xff0c;专门使用大量金融数据进行了训练&#xff0c;以支持金融行业自然语言处理 (NLP…

2023最新最新ChatGPT超全面从基础到实战视频教程/有兴趣自己学

正文: ChatGPT超全面从基础到实战视频教程&#xff0c;有兴趣的自行去研究学习吧&#xff0c;其它就没什么好介绍的了。 教程: wwxjas.lanzoum.com/inQN80ra5wfa 图片:

语音输入转文字怎么操作?分享几种语音转文字技巧

相信有不少小伙伴在整理语音文件的时候&#xff0c;都会有过怎样把这些语音直接转换成文字的想法吧。每次在我开完会之后&#xff0c;需要对会议语音进行整理时&#xff0c;都会产生这种想法。因为我们需要不断的去听这个会议的语音内容&#xff0c;这样做既费时又费力。但其实…

Android 文件转语音TTS输出(文字转语音)

一、介绍 目录 一、介绍 二、配置 三、使用 四、权限 五、补充 目前国内Android系统自带语音引擎基本上都是Pico TTS&#xff0c;Pico TTS不支持中文转语音播报。因为项目需要播放中文&#xff0c;引入科大讯飞引擎3.0.apk。 二、配置 下载好科大讯飞语音引擎3.0.apk&a…

将文本转为语音文件的各种TTS

1.jacob 在百度上搜索大部分结果都是它,支持中文, 但是不支持linux系统, github上给的文件是.dll, 这是个windows系统的文件 2.FreeTTS 这是我最开始找到的插件, 得益’于ChatGPT的推荐, 我在这个插件上耗了半天的时间, 但是它确实不支持中文, (事实上用它写代码也有不少坑, 给…

paddlespeech asr语音转录文字;sherpa 实时、离线、rtsp流语音转录

1、paddlespeech asr语音转录文字 参考&#xff1a; https://github.com/PaddlePaddle/PaddleSpeech 安装后运行可能会numpy相关报错&#xff1b;可能是python和numpy版本高的问题&#xff0c;我这里最终解决是python 3.10 numpy 1.22.0&#xff1b; pip install paddlepadd…

共享硬盘没有权限访问计算机,Win7系统打开磁盘共享说“没有访问权限

在操作win7系统的时候经常会在局域网中共享磁盘&#xff0c;方便其他用户访问共享资料等等&#xff0c;但是有win7用户说自己打开磁盘共享提示说“没有访问权限”&#xff0c;这是怎么回事&#xff1f;针对这个情况&#xff0c;下面小编就给大家讲讲解决的办法吧。 具体方法如下…

linux添加用户到附属组无权访问

目标&#xff1a;首先在root 超级用户权限下创建admin 和test俩个账号&#xff0c;然后用test用户访问admin用户的文件。 Linux创建新用户admin useradd admin passwd admin 为admin用户配置密码&#xff08;root管理员模式下必须指定给那个用户创建密码&#xff09; 同理在创建…

打印机扫描显示服务器拒绝访问,打印机拒绝访问,教您打印机拒绝访问怎么解决...

在办公的时候&#xff0c;很多时候都会使用打印机共享的功能&#xff0c;这样大家打印文件就方便很多了。而打印机的连接经常会出现很多问题&#xff0c;其中windows无法连接到打印机&#xff0c;拒绝访问&#xff0c;最为常见&#xff0c;也最为棘手&#xff0c;下面&#xff…

计算机没有u盘权限,访问u盘提示没有权限怎么解决,u盘无权访问的解决方法

在我们利用u盘从计算机中拷贝文件的时候弹出提示“需要管理员权限”&#xff0c;这是怎么回事呢&#xff1f;访问u盘提示没有权限怎么解决&#xff1f;今天&#xff0c;小编在这就教大家通过u盘属性设置来解决没有访问权限的问题。 具体的设置方法&#xff1a; 1、u盘连接上电脑…

你当前无权访问该文件夹 解决你当前无权访问该文件夹拒绝你访问该文件夹

我 这样就完成了 http://www.xitonghe.com/jiaocheng/windows7-5642.html https://jingyan.baidu.com/article/4b52d702aa01b3fc5c774b1b.html Win10正式版提示你当前无权访问该文件夹怎么办 https://jingyan.baidu.com/article/4b52d702aa01b3fc5c774b1b.html 1407345人看了…

访问ftp服务器不显示文件夹权限问题,访问ftp服务器显示无权限问题

访问ftp服务器显示无权限问题 内容精选 换一换 无法访问httpd文件服务器的下一级目录,提示无权限访问。查看系统中的日志(/etc/httpd/logs/error_log或var/log/httpd/error_log),发现selinux权限处于打开状态,没有权限访问/var/www/html/entry目录;报错日志内容:SELinux p…

打印机共享无法访问该计算机,共享打印机拒绝访问怎么办详细解决方案

在办公室经常要用到打印机&#xff0c;而一般都是大家共用一台打印机&#xff0c;它的连接方式属于共享打印机&#xff0c;而有时候我们会遇到共享打印机拒绝访问&#xff0c;这又是什么原因呢&#xff1f;其实原因很简单&#xff0c;那就是共享的权限问题&#xff0c;我们只需…

kibana设置账号密码 - nginx配置访问权限

kibana设置账号密码 一、背景二、实现修改配置文件主要配置这两项配置登陆用户帐号密码 三、效果如下 一、背景 kibana默认没有访问的权限控制&#xff0c;如果需要设置访问的账号密码&#xff0c;可以使用nginx配置代理来发布kibana。 二、实现 修改配置文件 server {liste…

因为计算机限制无法访问U盘,U盘拒绝访问怎么办解决教程

U盘使用过程中&#xff0c;莫名其妙的问题还是有很多的&#xff0c;其中最奇怪的就是出现U盘拒绝访问的问题&#xff0c;然后就无法打开U盘了&#xff0c;里面的资料也拷贝不出来&#xff0c;对于这种问题怎么办呢&#xff1f;下面就教大家解决。 方法一、排除是U盘问题还是系统…