前言
随着AIGC的发展以及大语言模型的成熟,各种AI应用眼花缭乱,以至于我们看到各种新奇的应用都会产生焦虑,我有一天会不会被淘汰?且看后文分析。AIGC的发展与逐渐成熟已经是无可逆转的局势,既然我们打不过为何不加入进来,今天这篇文章将带领你掌握使用ChatGPT帮助我们程序员提高工作效率,摆脱焦虑。
本人java CRUD boy一枚,在工作搞了五六年CRUD,实在觉得CRUD没什么技术含量,但是呢,实际业务开发中哪里有那么多高并发、有技术难度的场景,整个产品百分之八十都是CRUD堆积起来的,那么作为一个老鸟实在不想花费太多精力在CRUD上面,于是自己探索了一套关于CRUD的提示词分享给所有苦于CRUD的小伙伴,帮助你们摆脱CRUD噩梦,解放出更多的时间提升自己的技术,多研究技术、算法。自己能力提升了,可以跳槽或者晋升,拿到更多的薪资难道不香吗?
提效成果
相信大家更关心的是看了本篇文章,我究竟能提升多少效率,能够节省多少时间。
维度 | 效率提升 |
---|---|
时间成本 | 50% |
代码量 | 80% |
本人在工作开发中使用了半年多的时间,结合自身的情况,我来讲讲提效成果,保守一点估计可以在做CRUD开发过程中提效50%,可以节省将近一半的时间。前提是你对我下面总结的提示词非常熟悉,应用恰当。从代码量的角度,可以帮我们自动生成80%的代码,剩余20%需要我们自己完善以及优化AIGC提供给我们的代码。从这个角度来看,A现阶段AI大模型根本无法替代我们的工作,剩余20%是非常重要的。
适用人群
所有苦于CRUD的程序员,本提示词适用于所有语言。
本人不建议新手或者连CRUD都写不好的初级程序员去看本篇文章。为什么?AI提效本质上不是替代你,而是你的小弟帮你干活而已,如果你自己的CRUD都没搞明白,让AI写出的代码大概率也是垃圾代码,bug百出,建议这部分人群先写好CRUD代码,夯实基础,而不是想的是投机取巧。
使用模型
首推ChatGPT的GPT4、GPT4o,GPT3.5也是可以的,只是效果差一点,这个是本人使用半年多下来效果比较好的大模型。相比之下,科大讯飞、文心一言、通义千问在我这套提示词下效果不太理想。具体的模型小伙伴可以以实践为准,毕竟大模型在不断发展。
正文开始
需求说明
在我们日常开发中,我相信公告管理这个功能需求还是比较常见的,今天以此为例,来展示一下,这套提示词是如何应用的。具体的需求就不过多阐述,直接看下文的原型图理解。
ChatGPT示例对话
由于对话太长,我将完整对话放在了当前博客对应的资源下,在此博客的顶部查看。也可以通过百度网盘下载本地查看。
下面是关键部分的截图
- 理解需求
- 数据库建模
如果不对,提出修改意见,让AI修改。数据库建模越准确,生成的数据库建表语句就越准确。
- 数据库建表语句
- 设计restful接口
这里是AI的分水岭,有一些大模型是无法理解需求给出准确的接口数,建议多试几次,或者直接更换更好的大模型。
如果有不对的地方,提出意见,让AI修正。这里修正完能让后续代码生成更准确
- 业务功能设计
给出意见修正业务流程,可以让生成的代码更符合预期
- 功能代码生成
提示词汇总
- 假如你是一位Java架构师,现在我正在开发大数据项目中的数据服务相关功能,我希望你能协助我去开发数据服务相关功能,接下来我会给你一份需求文档,你先充分分析与理解需求文档内容,为我们后续开发做准备,我再介绍一下我的开发环境,我的电脑操作系统是windows 10,也安装好了MySQL 5.7数据库、JDK 11、redis6.0和IDEA。我已经做好研发准备了,你准备好了吗?(可选加上当前项目的技术栈)
确保需求文档完整,条理清晰,否则可能会有很大误差
-
根据上文给的业务需求,我希望你按照业内数据库建模规范和最佳实践给我写一份数据库建模表格文档,包含表名、列名、数据类型、约束条件、描述、枚举值(用数字代替、用大写英文替代,保持简洁,所有枚举项列举完全),ID是自增的,针对是否判断字段使用bit类型,标准字段:create_time、update_time、creator、modifier、version,针对从属表无需加上标准字段。
-
如果ChatGPT给出的数据库建模文档不符合要求,可以通过提示词让它修正,例如:上文中数据建模文档中有几个问题,第一个问题,XXX。第二个问题,XXX。请求按照我的要求修正。
-
第一步工作我们已经完成了,我在电脑上已经安装好了MySQL 5.7,请按照前面生成的数据库文档进行表结构设计,在进行表结构设计时,需要考虑到查询性能以及数据的规模和增长趋势,以确保系统能够承受未来的数据访问负载,并且相关的字段comment注释、表comment注释、需要建立索引的也需要加上。然后建表语句和索引语句告诉我。要求:不要采用外键关联、表加上存储引擎和字符集。
-
(可选) 我需要每张表5条左右的测试数据,覆盖了每个字段的情况,特殊字段符合中文风格要求。每条SQL语句都可以直接执行,以插入测试数据。
-
按照前面业务需求和生成的表结构来分析,如果需要你设计一份标准的基于RESTful接口文档,每一个接口都需要进行分析和论证必要性和设计合理性。预计你会出多少个接口?
-
将你设计的完整的接口文档发给我,每个接口包括接口描述、HTTP 方法、请求路径、请求参数、响应参数等
-
上面你给出的接口文档有几个问题需要更正一下,第一个问题,XXX。第二个问题,XXX。
-
(可选)接下来我们就进入开发环节,我希望的技术栈是Java17+SpringBoot+MyBatisPlus+Lombok的方式进行开发,你可以一步一步教我如何搭建一个项目吗?
-
(可选)基于前面你生成的4张数据库表结构,接下来我们建实体类,我要求:import语句、lombok、字段注释、类注释都需要
-
(可选)基于前面你生成的4个实体类,接下来我们建Mapper层接口,要求继承MyBatisPlus的BaseMapper类,但是不需要写任何接口
-
接下来我们就进入开发环节,我现在项目使用的技术栈是Java11+SpringBoot2.3.12.RELEASE+MyBatis Plus3.5.0+Lombok+swagger的方式进行开发,项目开发过程中所有返回给前端的数据都需要定义vo视图对象。基于你提供表设计,我已经通过idea的MybatisX插件生成了基本的entity、mapper、service。基于前面的需求文档和插件生成的基础代码以及设计的接口文档,接下来我们开始进行业务功能设计,要求:包含业务处理流程,先不用告诉我代码实现(备选如果业务比较复杂用到设计模式可以使用这段:基于前面的需求文档和插件生成的基础代码,接下来我们开始进行业务功能设计,要求:利用面向对象的设计原则和设计模式,确保业务功能的实现既健壮又易于维护,先不用告诉我代码实现)
-
根据上面的业务功能设计,先给出新增公告功能的完整实现代码,要求:关键代码加上注释。
-
(可选)基于前面实现的EmployeeService,接下来我们要为所有方法进行单元测试用例的编写,要求:核心代码需要加上适当的中文注释,结合spring-boot-starter-test实现。我需要EmployeeService类中所有的方法写出可测试的单例,并不是一个Demo
提示词核心思想
整体上围绕我们日常开发功能的思路一步步的引导AI去理解我们用的技术栈、需求、数据库设计、接口文档、功能处理流程、代码规范、单元测试等等。上面给出的提示词只是抛砖引玉,理解如何引导AI后,你可以写出自己的提示词。
结尾
从上面的示例以及提示词可以看出,通过AIGC可以帮我们生成大部分CRUD代码,但是项目有一些细节是不太好很方便的告诉大模型的,我们需要自己完善,毕竟我们想要所有功能都交给大模型处理是不现实的。
感谢大家看完这篇文章,希望这篇文章能够帮助拥抱AI,帮助大家提高工作效率,节省时间提升自己能,人人都能成为百万架构师,共勉。
友情提醒:针对使用频率不高的小伙伴,可以国内免费的大模型、GPT3.5做替代,没必要花那么多钱开GPT4的会员。