Featured image of post 探索ChatGPT的无限可能-实战代码

探索ChatGPT的无限可能-实战代码

本节课程是关于ChatGPT的代码实战课程,主要讲述ChatGPT在程序设计领域的一些实际应用方法。

本节课程是关于ChatGPT的代码实战课程,主要讲述ChatGPT在程序设计领域的一些实际应用方法,我们会通过编写网页应用以及爬虫应用来演示如何使用ChatGPT辅助我们编写程序代码,然后通过ChatGPT在SQL调优,代码注释方面的应用,来演示如何使用ChatGPT提升软件工程质量。

一:编写网页应用

我们先看一看如何使用ChatGPT编写网页应用

编写网页应用一般可以分解为几个模块

我们先回忆一下早前课程中角色设定技巧,并给予ChatGPT角色设定提示:

你是一名拥有丰富经验的软件开发全栈工程师,拥有丰富的软件开发项目经验,熟练掌握php,html,css,javascript,sql相关知识和技能,并且精通thinkphp,jquery,vue,react等框架,我会向你提一些软件开发的需求,请根据你的知识和经验回应我的需求。

以上提示语句涉及到了一些与程序开发相关的概念和术语。我们在使用ChatGPT帮助我们编写程序时,仍然需要对程序开发的基本步骤和概念有一定的了解,比如完成一套程序开发需要使用的语言,框架等等。基于这些知识,才能更好地引导ChatGPT完成程序设计。

设定好角色后,接下来,我们就可以描述我们的需求,我们先让ChatGPT帮我们生成服务器端程序,

请编写一段服务端登录验证程序,注意使用thinkphp 3.2.3 ,登录提交用户名和密码,服务端程序验证用户名和密码,用户名和密码存储于数据库app的user表中,对应字段为username,password且password使用md5加密

注意这段提问中,我们需要将需求描述清楚,比如明确了服务端程序使用thinkphp框架,并且给出了框架的版本号3.2.3,同时我们描述数据库user表的设计结构,这些明确的描述可以帮助ChatGPT生成更加准确的信息。ChatGPT根据我们的要求,很顺利地给出了服务器端程序,并对程序进行了简短说明,包括文件创建位置,命名等,同时ChatGPT还帮我们给出了前端设计的javascript代码。最后,ChatGPT甚至提示我们:实际项目中可能需要更多的安全性和验证步骤,如防止SQL注入、使用HTTPS等。此外,ThinkPHP 3.2.3已经比较旧,推荐考虑升级到更新的版本以获得更多功能和安全性的改进。

好了,后端程序已经完成,我们接着让ChatGPT生成网页页面,我们继续提出需求:

请帮我编写一个网页页面,该页面为登陆页,包含用户名输入框和密码输入框,请美化该页面。

ChatGPT很快生成了页面代码,

我们可以复制这段代码,保存为html文件,然后在浏览器中看一下效果,这个时候生成的页面还比较粗糙。

我们可以进一步优化该网页,我们提出需求:

请继续美化该登录页,给页面添加一副清新的背景图,登录按钮下方,也请添加隐私声明。

ChatGPT也会按我们的新需求完成代码修改,chatgpt也会特别说明,需要将代码中的背景图替换为真实的图片链接,另外隐私说明也应替换为真实的链接。我们按chatgpt的指导,替换真实的链接,我们看一下最后的页面效果。

完成了网页UI界面,接着我们还需要ChatGPT帮我们使用jQuery框架提交信息到后端,我们可以接着提需求:

该登录页使用jquery框架,并且提交用户名和密码到之前的服务器端程序页面验证,请帮我完成对应的前端代码。

ChatGPT也会很好地完成基于jQuery框架的js代码部分。同时给出了代码说明,并且告诉我们如何提交到后端服务器地址。这个服务器端地址与之前编写的服务器端程序地址是对应的。

前端页面和后端程序已经完成,在服务器端,我们现在还需要ChatGPT帮我们生成数据库,我们提出需求:

上述的登录功能,请帮我使用sql语句生成对应数据库及相关用户表。

ChatGPT会马上生成创建表以及添加用户的SQL语句(insert),同时给出文字说明,尤其是强调了密码需要是经过MD5哈希处理后的加密数据

上述的程序代码已经可以很好地完成用户登录验证功能。我们还可以让ChatGPT帮我们提供更多的帮助,比如我们可以让ChatGPT使用vue框架重新编写登录页,我们向ChatGPT提出新的需求:

请使用VUE框架重新编写登录页,

ChatGPT也能很好地给出基于vue框架编写的登录页面代码。

同时提示我们使用Axios 或其他HTTP库来发送POST请求到服务器。

这个例子可以看到ChatGPT有着非常强大的代码编写能力,这也是OpenAI早前宣传ChatGPT时经常提到的特性。只需用自然语言描述清楚需求或者想法,ChatGPT便能给出具备一定实用性的示例代码。

ChatGPT的代码编写能力对代码技能还处于早期阶段的开发者尤其有用,ChatGPT能提供非常多的帮助,他可以像老师一样,指导并带着学生快速成长。

当然,在真实的开发场景中,优秀的程序设计,更多是基于对业务的深刻理解,尤其是复杂业务需求的理解,业务环节的拆解、优化和设计,这些在软件项目里,通常由专业的需求工程师完成。而将ChatGPT应用到复杂项目中,除了理清需求,还需要将需求描述得足够清晰。由于要描述清楚复杂业务本身是有一定难度的,所以ChatGPT是否能在复杂业务中发挥作用,其根本还是取决于业务需求理清的同时是否也能描述清楚,这些对ChatGPT的使用者则是一个挑战。

当然对复杂业务场景,除了直接ChatGPT依然有其他用武之地,比如在算法层面,ChatGPT可以给出很多普通程序员难以自行完成的建议和优化,而在软件工程层面,ChatGPT能做的就更多,以上面的登录页为例,我们可以让ChatGPT辅助我们完成一些项目中的其他工作,比如,我们可以继续提出需求:上述的登陆页,请帮我写一份页面说明文档

ChatGPT会直接帮我们写好文档。除了文档协助。另外还有代码分析、注释、优化等等,ChatGPT均能提供高效的协助,这些我们会在后面的章节单独说明。

二:编写爬虫

上述的例子中我们使用ChatGPT帮我们编写了html,php,javascript等程序语言代码,而ChatGPT最擅长的程序语言应该是Python。我们再来看一个使用ChatGPT辅助编写python代码的例子,

这个例子中,我们演示一下如何使用ChatGPT帮助我们编写爬虫程序,爬取网页中的数据和信息。

由于爬虫程序通常采用python语言以及对应的框架编写,我们需要对角色设定进行一些修改,我们可以设定与爬虫程序设计相对应的角色提示:

你是一名拥有丰富经验的Python开发和大数据工程师,拥有丰富的软件开发项目经验,熟练掌握python,数据库以及大数据相关知识和技能,你非常擅长编写爬虫程序,精通scrapy,pyspider等爬虫框架,我会向你提一些软件开发的需求,请根据你的知识和经验回应我的需求。

然后我们提出具体需求,让chatgpt帮我们写一个简单的爬虫示例,并且使用最常用的scrapy框架,我们指示ChatGPT:

请编写一段爬虫代码,使用scrapy框架,

ChatGPT会给出答案:

包括如何安装scrapy框架模块,创建项目,编写示例代码,运行等等。

所以我们刚刚有提到,ChatGPT对于早期阶段的开发者是极为友好的工具,可以大大提速学习和成长的过程。

接着,我们提出更详细的需求:

请使用scrapy框架帮我爬取某个具体的网页地址“https://movie.douban.com/top250”下的信息 ,该页面是豆瓣上关于最优秀的250部影片的介绍页面。

ChatGPT会给出相应的代码,并对代码进行了解释

我们还希望更进一步的加强爬虫程序,我们需要将爬取的数据存到数据库,我们可以向ChatGPT提出需求:

请继续编写程序,将上述爬取到的信息存储到mysql数据库app_spider的douban_movie表中,douban_movie表包含“title,link,rating”字段

可以看到,ChatGPT给出了很好的方案,并一步一步指导我们如何去实施和运行。

我们将这些程序复制到一台服务器上,运行一下ChatGPT编写的爬虫程序,可以看到,爬虫程序能正常运行,并将爬取的数据存入了指定的数据库表中。

我们已经见识了ChatGPT的代码能力,但需要提醒的是,ChatGPT并不能总是给出正确的代码,如果需要生成具备生产力的程序。我们还是需要经过严格的软件测试环节,同时对未达预期的代码部分进行修复。

三:SQL专家

了解了ChatGPT在程序设计方面的优势,我们再看看ChatGPT在与程序设计相关的数据库领域,会有哪些超能力呢?

由于ChatGPT学习了大量的数据库知识,比如SQL语句知识,在实际开发或数据库管理场景中,我们可以让ChatGPT以SQL专家的身份帮我们编写查询语句以及优化查询语句。

我们举例说明,先设定好角色:

你是一名拥有丰富经验的DB专家,拥有丰富的数据库管理经验,精通SQL语句,MYSQL数据库,数据库优化,我会向你提一些关于数据库应用的需求,请更根据你的知识和经验回应我的需求。

如果需要ChatGPT给出高质量的回答,需要我们描述清楚我们所关注的信息以及我们的实际需求,我们期望ChatGPT帮我给出数据库领域的帮助和建议,第一步是需要描述数据库,数据库中的表,然后提出具体的需求。

比如,我们需要ChatGPT帮我们写一个查询语句,我们在提出需求前,需要表述清楚数据库表的结构:

这里,我们有一份客户消费数据表,我们需要ChatGPT帮我们进行一些特定的查询和优化操作,与之前Excel实战课程中的步骤是相似的,我们需要先描述表结构,然后,提出具体的需求。

假设有一份mysql数据库表customer_spent,记录了用户每次消费数据,该表包含id ,customer_id, customer_name,customer_state,exchange_time,product_id, product_count, spent几个字段,请编写SQL,仅显示在加州居住且消费总额排名前10位的客户。

ChatGPT不会让我们失望,立刻给出了合适的SQL语句,并解释了语句中的一些关键字的含义,如GROUP BY分组,sum聚合计算,limit限制结果集。

注意我们这里甚至都没有描述每个字段的含义,但ChatGPT仍然理解了数据库表的结构。因为我们的数据库字段的命名遵循了一定的标准,即下划线分隔的英文单词,ChatGPT能够理解数据表字段的命名意图,然后执行分析。

我们再看一个借助ChatGPT进行SQL优化的例子,我们提出一个优化现有SQL语句的需求:

请帮忙优化下面的sql语句

SELECT first_name

FROM employees

WHERE emp_no IN

(SELECT emp_no FROM salaries WHERE salary = 5000);

ChatGPT给出了建议,即使用连接,而避免使用子查询,同时给出了优化解释,这是SQL查询中典型的优化方式,尤其是对大量数据时,连接查询的效率要远优于子查询。

我们可以进一步提问:

还有优化的空间吗?

ChatGPT会指导我们如何去创建索引,创建索引的优势和缺点,这些也是SQL优化中常用的手段。

ChatGPT在SQL中的应用尤其是优化能力也是被诸多实践认可的,与程序设计类似,对于复杂场景,其应用效率更多取决于需求的清晰描述。

四:代码解释,注释,优化

我们在谈程序设计时有提到,ChatGPT在软件工程方面,也会给予诸多的帮助,我们来看一些实际的例子:

我们可以让ChatGPT解释代码,比如很多时候,程序开发人员需要阅读他人编写的代码,此时,ChatGPT的代码解释功能非常有用。

比如我们给出一个函数function,让ChatGPT帮我们解释这段代码

以下是thinkphp框架项目下LaboratoryController.class.php下的一个function,你能解释一下该function的功能吗?

chatgpt给出了非常准确的方法功能细节描述,当然,该function中的变量命名,函数命名相对是比较规范的,命名的规范也有助于ChatGPT正确分析和解释代码。

另外,写注释是很多程序员经常忽略的事情,却又是软件项目中必不可少的环节,关系到软件项目的可维护性,可持续性。

目前很多IDE提供了注释生成功能。而ChatGPT的出现,又提供了质量更高的代码自动注释手段。

我们可以将代码提供给ChatGPT,然后让ChatGPT帮我们生成注释

以下是thinkphp框架项目下LaboratoryController.class.php下的一个function,请帮我写一下注释

ChatGPT同样会生成非常准确的注释信息。

我们再让ChatGPT帮我们注释一段基于vue框架的前端代码:

请帮忙注释如下代码:

ChatGPT会生成非常友好的代码注释信息,同时对该代码中相关组件的功能做了很好的总结。

ChatGPT除了之前所述的优化SQL语句,优化程序代码同样是他的强项。比如我们提出需求“请帮我优化下面java代码”:

ChatGPT会改写并给出优化后的代码,同时给出了解释。

上面的一些例子中可以看到,ChatGPT在代码层面非常全能,大部分程序设计语言,开发框架,SQL语句等等,对ChatGPT而言都是信手拈来,运用得相当的熟练。

我们这里还是要提醒一下,使用ChatGPT进行代码注释,代码优化时,要注意将代码中的敏感信息隐藏,因为提供的代码信息实际会传输到服务器的后台,这会增加数据泄漏的风险。这其实也是AI在信息安全方面所面临的重要挑战,即如何保护用户提供的数据隐私安全以及防止数据泄漏和被非法利用。

好了,本节课的内容到这里就结束了,我们做一下总结。本节课主要讲述可chatgpt在代码领域的实际应用,通过编写常见的网页应用,编写爬虫,编写SQL查询语句,进行SQL调优,执行代码分析,代码注释,编写代码文档,进行代码优化等实操,我们可以了解到ChatGPT在代码领域,拥有着全面的应用能力,有效地利用ChatGPT,可以大幅提升我们在程序设计、软件工程等各方面的质量和效率,也能帮助我们构建更合理,更优秀的软件系统。

本期课程结束后,我们将进入AI 绘画领域的相关课程,我们会陆续介绍现在最重要的两个AI绘画工具midjourney和stable diffusion,下期课程中我们开启midjourney的学习之旅,我们将通过midjourney介绍,使用,常用指令和常用参数的讲解,让大家对midjourney绘画有一个初步的认识,并能使用midjourney开始快速绘制属于自己的精美图片。

使用 Hugo 构建
主题 StackJimmy 设计