关闭

提示工程在软件开发领域的应用——人人都是提示工程师(16)

发表于:2024-1-30 09:23

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:陈明明 李腾龙    来源:51Testing软件测试网原创

  第7章 提示工程在软件开发领域的应用
  7.1  用 ChatGPT 帮助写代码
  代码生成是指使用自动化工具和技术,根据指定的输入规则和要 求,生成相应的计算机代码。这种自动生成代码的技术在各个领域都 有广泛的应用,尤其在软件开发、数据分析、人工智能等领域中更加常见。
  在软件开发领域,代码生成可以帮助开发人员快速创建模板代码、 重复性的代码,从而提高开发效率。在数据分析领域,代码生成可以  根据数据分析结果自动生成相应的数据处理代码。在人工智能领域, 代码生成可以帮助机器学习模型自动生成相应的代码,以实现更高效的模型构建和测试
  通过代码生成,提高代码的质量,减少错误和重复性的工作,从而缩短开发时间,提高开发效率。此外,代码生成也可以提高代码的 可读性、可维护性和可扩展性,帮助开发人员更好地管理和维护代码库。
  ChatGPT 在代码生成中的应用可以通过输入关键词、选择编程语言、生成代码等步骤来实现。具体步骤如下。
  ① 输入关键词。用户可以根据需求输入关键词,例如,“生成随机 数列表”“读取 CSV 文件”等。关键词的准确性和清晰度将对生成的代码质量产生重要的影响。
  ② 选择编程语言。ChatGPT 支持多种编程语言,例如,PythonJava、JavaScript 等。用户可以根据自己的需求和熟练程度选择合适的编程语言。
  ③ 生成代码。根据用户输入的关键词和选择的编程语言,ChatGPT 可以生成对应的代码。用户可以对生成的代码进行调整和优化,以满足自己的需求。
  接下来,我们看一个具体的例子。例如,我们在ChatGPT 中输入如下内容。
  利用 Python编程语言生成一个随机序列,并且实现一个排序算法。
  ChatGPT 输出如下内容。
  生成随机序列可以使用 Python 内置的 random 模块。排序算法可以使用经典的冒泡排序算法。
  以下是示例代码。
  import randon
  #生成一个包含10个随机整数的列表
  random_list =  [random.randint(1,100)   for  i  in  range(10)]
  print("   随机序列:", random_list)
  # 冒泡排序算法
  def bubble_sort(array):
  n =len(array)
  for i in range(n):
  for j in range(n-i-1):
  if array[j] >array[j+1]:
  array[j],array[j+1] =array[j+1],array[j]
  return array
  #对随机序列进行排序
  sorted_list =bubble_sort(random_list)
  print("排序结果:", sorted_list)
  以上代码使用Python 编程语言内置的 random.randint 函数来生成 10个范围在1~100的随机整数,并使用冒泡排序算法对序列进行排序。输出结果如下。
  随机序列:[90,49,57,60,51,24,48,9,38,83]
  排序结果:[9,24,38,48,49,51,57,60,83,90]
  上述输出结果非常神奇——ChatGPT可以帮助用户写代码。可能 我们会觉得这种基础代码在现实中并不会用到,我们也可以让ChatGPT 写一段项目代码。例如,我们希望读取数据库中的新闻文本数据,然后对相应的数据进行分析。我们可以在 ChatGPT 中输入如下内容。
  帮我用 Python写一段代码,要求如下:
  1. 从 MySQL 读取新闻文本
  2. 识别其中的股票名字
  3. 对这段文本进行情感分类
  4.输出对应的公司名称和情感分类
  ChatGPT 输出如下内容。
  以下是一段示例代码,可以实现从 MySQL 数据库读取新闻文本、 识别股票名称、进行情感分类,并输出对应的公司名称和情感分类。 需要安装 Pandas、PyMySQL、Jieba、SnowNLP 等库。
  import pandas as pd
  Import pymysql
  import jieba
  From snownlp import SnowNLP
   MySQt(host='localhost',user='root',
  password='password',database='news', charset='utf8mb4')
  sql='SELECT *FROM news'
  Df =pd.read_sql(sql,conn)
  conn.close()
  #识别股票名称
  stock_list =[ '腾讯'  ,'阿里巴巴','美团','百度','京东','华为', '小米',‘苹果','微软','谷歌’,‘亚马逊']
  company_sentiment_dict ={}
  For index,row in df.iterrows():
  tnlro'wti[t'n']tent']
  Keywords =jieba.lcut(title +content,cut_all=False)
  Companies =[stock for stock in stock_list if stock in keywords]
  # 进行情感分类
  s  =  SnowNLP  (content)
  sentiment = s . sentiments
  if sentiment > 0.5:
  sentiment _ label = 'positive'
  elif sentiment < 0.5:
  sentiment _ label = 'negative'
  else:
  sentiment _ label = 'neutral'
  #输出对应的公司名称和情感分类
  for company in companies:
  if company not in company  _ sentiment_dict:
  company _ sentiment  _ dict  [company] = {'positive ':0,' negative ':0,' neutral  ':0}
  company _ sentiment _dict [ company][sentiment _ label] += 1
  for company , sentiment
  print (company_dict+':'+
  in company  _ sentiment
  str (sentiment _dict
  _dict . items ():
  ))
  这段代码首先从名为“news”的MySQL数据库中读取新闻文本,并使用Jieba库识别其中的股票名称。然后,对每段文本进行情感分类,并将其与对应的股票名称关联。最后,输出每个公司的情感分类结果。
  ChatGPT 很快生成了代码。如果你对这段代码不满意,那么也可 以直接对其进行修改。例如,目前的公司名字直接放到 stock_list 列表中并不合适,如果我们希望从数据库中读取这个变量,那么可以再次在 ChatGPT中输入如下内容。
  stock _ list = ['腾讯','阿里巴巴','美团','百度','京东','华为',·小米',‘苹果’,’微软‘,’谷歌’,’亚马逊‘]  
  将上面这行代码修改为从 MySQL 数据库读取公司名字,ChatGPT 输出如下内容。
  假设数据库中有一张名为“company” 的表,包含一个名为“name” 的列,其中存储了公司名字信息。可以使用Python 的 pymysql 库连接到 MySQL 数据库,并执行SQL 语句来读取公司名字信息,例如:
  import pymysql
  # 连 接 MySQL  数据库
  conn   =pymysql.connect(
  host='localhost',
  port=3306,
  user='root',
  password='123456'
  database='mydatabase'
  #读取公司名字信息
  cursor =conn.cursor()
  x)FROM company')
  #将结果转换为列表
  stock_list = [result[0] for result in results]
  上述代码首先使用PyMySQL 库连接到 MySQL 数据库,然后执行 SQL语句 “SELECT name FROM company”,  并使用 fetchall()方法获取查询结果。最后将结果转换为列表 stock list,  其中每个元素为一个公司名字。
  这样我们就对特定的代码进行了改写。如果我们希望对代码进行转写,也就是从一种编程语言转换成另一种编程语言,那么这个工作 交给ChatGPT也是非常合适的。例如,如果我们需要将上面的代码转换成 Go 语言代码,那么可以在 ChatGPT 中输入如下内容。
  将下面的 Python 语言代码转换成 Go 语言代码:
  import pymysql
  # 连 接 MySQL  数据库
  conn =pymysql.connect(
  host='localhost',
  port=3306,
  user='root',
  password='123456',
  database='mydatabase'
  )
  #读取公司名字信息
  cursor =conn.cursor()
  )FROM company')
  #将结果转换为列表
  stock_list= [result[0] for result in results]
  ChatGPT 输出如下内容。
  以下是Go 语言的代码翻译版本:
  package main
  import (
  "database/sql"
  "fmt"
  "github.com/go-sql-driver/mysql"
  func main (){
  //连接 MySQL  数据库
  db, err:=sql. Open (" mysql  "," root :123456@ tcp (localhost :3306)/
  mydatabase")
  if err != nil {
  panic ( err. Error     ())
  defer db . Close    ()
  //查询公司名字信息
  rows , err := db . Query (" SELECT name FROM company")
  if err != nil {
  panic ( err. Error ())
  defer rows . Close  ()
  //将结果转换为列表
  var stock_ list  []string
  for rows. Next   (){
  var name string
  err = rows . Scan (&name)
  if err != nil {
  panic ( err . Error ())
  stock _list =  append (stock _list , name)
  //输出结果
  fmt . Println ( stock_ list)
  注意:安装Go 语言之前,需要先安装Go 语言的 MySQL驱动程 序“go-sql-driver”.
  ChatGPT 在代码生成中的优点很多,具体如下。
  ● 提高效率。 自动生成代码可以大大缩短开发人员手动编写代码的时间,提高工作效率。
  ● 减少错误。由于自动生成的代码是基于模型学习而来的,因此可以减少人为导致的错误。
  ● 增强灵活性。可以根据不同的输入关键词生成不同的代码,增强代码的灵活性。
  虽然 ChatGPT 拥有很多的优点,但是ChatGPT 在代码生成中存在一定的局限性,具体如下。
  ● 生成结果的准确性有时难以保证。由于代码生成是基于模型学习得到的,因此生成结果的准确性有时难以保证。
  ● 存在语义理解的限制。 由于自然语言和编程语言之间存在差 异,因此模型可能会对输入语句理解不准确,生成的代码不符合预期。
  ● 缺乏领域知识。模型缺乏特定领域的知识和经验,可能导致生成的代码无法满足特定领域的需求。
为了提高生成结果的准确性和流畅度,可以通过以下方式进行优化。
  ● 增加训练数据。通过增加训练数据,提高模型对不同场景下的理解能力,进而提高生成结果的准确性。
  ● 改进模型结构。优化模型结构,增加模型的深度和宽度,提高模型的泛化能力,减少过拟合的情况。
  ● 结合领域知识。通过引入领域专家的知识和经验,帮助模型更好地理解特定领域的语义和逻辑。
  ChatGPT 在代码生成领域的应用不断增多,未来的发展趋势如下。
  ● 结合代码模板和规则。尽 管ChatGPT 具有强大的自然语言处 理能力,但是在生成代码时还需要遵循一定的代码规则和模 板,以确保生成的代码符合语法和逻辑。因此,未来的发展趋 势之一是将 ChatGPT 与代码模板和规则相结合,从而提高生 成的准确性和可读性。
  ● 增加训练数据。 由于ChatGPT 的生成结果受到训练数据的影 响,因此随着越来越多的代码生成数据集的发布和使用,未来 的发展趋势之一是增加训练数据来提高生成结果的质量。
  ● 结合其他技术和工具。除 ChatGPT 之外,许多其他的自然语 言处理技术和代码生成工具也可以用于生成代码。未来的发展 趋势之一是将这些技术和工具结合起来,以提高生成效率和代 码的准确性。例如,可以结合代码注释生成工具,通过自动生 成注释提高代码的可读性和可维护性。
  ● 面向特定领域的模型训练。在某些特定领域中,代码生成的需 求比其他领域更加复杂和具体化。因此,未来的发展趋势之一 是针对特定领域开展模型训练,以生成更加符合实际需求的代 码。例如,针对机器学习领域,可以训练一个专门生成机器学习算法的模型。
  综上所述, ChatGPT 在代码生成领域的应用还有很大的发展空间,未来 ChatGPT将会结合代码模板和规则以及其他技术和工具,通过增 加训练数据,面向特定领域进行模型训练等提高生成效率和代码的准确性。
版权声明:51Testing软件测试网获得作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号