使用ChatGPT优化软件开发
作者:互联网
1.不要不假思索地复制一切。
我使用ChatGPT的第一个关键提示是不要盲目接受各种提示中的所有内容。平均而言,我必须纠正ChatGPT大约10次才能获得我想要的结果。
在我看来,在使用这种人工智能时,您也必须很好地了解自己正在做的事情,并能从经验中评估某样东西是否会产生可行的结果。
我总是建议自己查看文档,熟悉特定的技术或库,而不是仅仅依靠提示的结果。ChatGPT可能会编造或参考过时的标准。
然而,当您知道自己在做什么时,ChatGPT可以显著提高您的生产力。您将花更少的时间在像Stack Overflow这样的论坛和网站上搜索答案,在语法层面上可能特别有价值。
2.要求架构和修改
我发现非常有效的是要求一个特定的软件架构,然后对其进行修改。ChatGPT可以非常轻松地处理这个问题。但是,您应该对架构的外观有一个明确的计划,以便您可以评估结果是否符合您的期望。
让我举个例子:
假设我们有一个。返回产品数据的NET API,我们计划遵循一个简单的架构,其中控制器类使用存储库类。我们可以这样对待它:
当我问这个问题时,它导致控制器类使用存储库的基本内存实现。
// Product.cs 公共类产品 { public int Id { get; set; } 公共字符串名称{ get; set; } 公共十进制价格 { get; set; } // 根据需要添加其他属性 }
// ProductRepository.cs 使用System.Collections.Generic; 公共类产品存储库 { // 在本例中,我们使用一个简单的内存列表来存储产品。 私人列表<产品>_产品; 公共产品存储库() { _产品=新列表<产品> { 新产品{Id=1,名称=“产品1”,价格=10.99M}, 新产品{Id = 2,名称=“产品2”,价格=24.99M}, // 根据需要添加更多产品 }; } public IEnumerable<Product> GetAllProducts() { 退货_产品; } // 如果需要,实现其他数据访问方法,如GetById、AddProduct等。 }
// ProductsController.cs 使用Microsoft.AspNetCore.Mvc; [ApiController] [路线("api/[控制器]")] 公共类产品控制器:ControllerBase { 私有只读产品存储库_产品存储库; 公共产品控制器(产品存储库产品存储库) { _productRepository = productRepository; } // HTTP GET:api/products [HttpGet] 公共IActionResult GetProducts() { var products = _productRepository.GetAllProducts(); 退货OK(产品); } }
让我们更进一步,并要求:
- 存储库中的实体框架实现。
- 分页选项作为存储库方法中的对象参数。
为了保持简单,我将排除所有配置结果。这将导致一个更直接、更有针对性的演示。
// PaginationOptions.cs 公共类分页选项 { public int Page { get; set; } = 1; public int PageSize { get; set; } = 10; }
// ProductRepository.cs 使用System.Collections.Generic; 使用System.Linq; 公共类产品存储库 { 私有只读AppDbContext _dbContext; 公共产品存储库(AppDbContext dbContext) { _dbContext = dbContext; } 公共IEnumerable<Product> GetAllProducts(PaginationOptions paginationOptions) { 返回_dbContext.Products 。跳过((paginationOptions.Page - 1)* paginationOptions.PageSize) 。获取(分页选项。页面大小) 。ToList(); } //使用实体框架添加其他数据访问方法,例如GetById、AddProduct等。 }
// ProductsController.cs 使用Microsoft.AspNetCore.Mvc; 使用System.Collections.Generic; [ApiController] [路线("api/[控制器]")] 公共类产品控制器:ControllerBase { 私有只读产品存储库_产品存储库; 公共产品控制器(产品存储库产品存储库) { _productRepository = productRepository; } // HTTP GET:api/products [HttpGet] 公共IActionResult GetProducts([FromQuery] PaginationOptions paginationOptions) { var products = _productRepository.GetAllProducts(分页选项); 退货OK(产品); } }
如您所见,我提出了其他问题,并以最初的实施为基础。通过在同一会话中继续进行添加,您可以轻松地对架构进行更改。当然,这是一个简单的例子,关于为什么你可能不想这样做,有很多事情需要考虑,但原则是明确的。
当然,您也可以自己解决这个问题,但以这种方式进行快速更改,当您的设置事先明确时,可以产生快速的结果。
3.询问来源
我的另一个提示是询问信息背后的来源。通过这种方式,您可以验证数据是否是最新的,以及它是否来自可靠的来源。然而,ChatGPT可能并不总是立即披露来源。尽管如此,通过一些额外的问题,你经常可以发现它。
询问来源的一个很好的例子可能是当您请求最新的密码安全建议时。这可以确保您的用户的密码与当前的安全标准保持一致。然而,在处理此类问题时,必须仔细核实信息确实是最新的。
当然,我们知道2021年的知情截止日期,但让我们看看他从哪里想出来的。
让我们来试试这个:
当我问这个问题时,回答包括:
截至我2021年9月的最后一次知识更新,推荐的密码强度指南如下:
长度:使用至少12个字符的密码。更长的密码通常更好。
所以现在我问:
尽管它表明它不知道训练数据的来源,但它会出现以下URL:
NIST数字身份指南-NIST特别出版物800-63B:https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-63b.pdf
网络安全和基础设施安全局(CISA)——创建强密码的提示:https://www.cisa.gov/tips-creating-strong-passwords
谷歌帐户帮助—创建强密码和更安全的帐户:https://support.google.com/accounts/answer/32040
通过检查来源,我们可以验证数据是否仍然准确和最新使用。在这种情况下,并非所有URL都工作。
我还建议始终在人工智能之外搜索此类问题,以获得最准确的信息。
然而,我们可以从上述提示中获得关于潜在良好咨询来源的想法,例如美国的网络防御机构(CISA)。
因此,总而言之,建议是询问来源来验证数据,并继续在线搜索,以更好地了解最近的变化。
4.架构随规模而变化;ChatGPT不知道。
另一个需要考虑的点是您的应用程序的规模。在这方面,ChatGPT可能并不总是提供正确的结果。例如,与与大量用户打交道的大型企业解决方案相比,MVP(最低可行产品)的设置具有完全不同的约束。
尽管人工智能可以提供有关此事的信息,但必须与专业人士讨论这个问题,并根据您的软件产品的性质进行定制。
这就是为什么在现阶段,人工智能不能取代开发人员设计和设计的体验和解决方案。
当然,人工智能可以为您提供想法,就像搜索引擎一样。因此,请毫不犹豫地提出问题并寻求指导。
5.考虑到知识的截止
这个很明显,但你应该考虑知识截止。2021年9月之后推出的技术可能不包括在内。
因此,各种提示将不包含使用这些新技术或其相关语法的响应。这就是为什么与ChatGPT一起咨询其他最新来源仍然至关重要,以随时了解新发展。
6.如果ChatGPT说它不存在,那就谷歌一下。
当ChatGPT表明某些东西不存在时,必须不要立即假设它是正确的。ChatGPT的知识被限制到2021年9月,结果可能因使用的提示而异。有时,它可能表明这个东西确实存在一些例子,而其他时候,它可能会继续否认你的建议的存在。
你可以尝试指出它是错误的,它确实存在,所以它可以提出新的提示。如果这不起作用,我仍然建议您在谷歌或您首选的搜索引擎上继续搜索。
7.不要害怕它
与许多人所说的相反,我建议不要害怕人工智能的崛起。软件开发是一个快速发展的领域,今天新的东西明天可能会过时。
因此,软件开发人员已经习惯了该领域的变化。人工智能是必须考虑的此类变化之一。为什么我们不应该利用它?
此外,对于某人来说,拥有从此类工具中提取真正相关信息的知识至关重要。缺乏这种技能的人会漂泊不定,以后可能会落入不可预见的陷阱。
我们应该明白,人工智能可以处理我们领域的许多简单任务。因此,继续学习并对新技术保持兴趣至关重要。如果你这样做并保持好奇心,我相信我们的生产力会随着时间的推移而持续增长。