如何使用ChatGPT编写更好的代码

news2024/11/18 15:24:48

生成代码是ChatGPT和其他遵循指令运行的大型语言模型(LLM)一个功能强大的应用。如果得到正确的提示,大型语言模型(LLM)可以生成程序员可能需要数小时才能编写的代码。

然而,大型语言模型(LLM)并不能完成程序员的所有工作。他们无法分解复杂的问题,思考逻辑和结构,也无法创建多层次的解决方案。它们一次处理一个指令,预测可能遵循用户提示和输出的下一段代码。

以下是可以帮助用户充分利用ChatGPT强大的编码能力以及避免进入陷阱的四个技巧。

如果无法验证,就不要信任ChatGPT

像ChatGPT这样的大型语言模型(LLM)的一个突出特征是它们的权威声音。它们总是充满信心地回答,即使他们的答案毫无意义。不可避免,有时ChatGPT采用令人信服但错误的答案回答了一些问题。

我使用ChatGPT的经验法则是,只在他完全理解并可以验证的主题中使用它。例如不会用它来写量子物理的解释,因为他对这个主题了解不够。但是ChatGPT可以帮助他撰写一篇关于机器学习基础知识的有趣文章,因为可以完全检查和纠正它的输出。

同样,当使用ChatGPT生成代码时,只让它完成可以完全验证的任务。ChatGPT可能编写无效或更糟的代码,这些代码虽然有效但不安全。因为ChatGPT是一个自动化工具,可以完成那些需要花费很长时间编写或需要多次访问文档页面或在线论坛(如StackOverflow)的繁重工作。例如,可以要求它编写排序算法,采用Python启动Web服务器的代码,从数据库模式中执行SQL查询,或者在Matplotlib中执行数据可视化命令。

一次迭代一个代码块

大型语言模型(LLM) 往往难以处理需要推理和逐步规划的任务。因此,不要指望ChatGPT能够成功地编写完整的程序或复杂的代码块。但是,这并不意味着ChatGPT不能帮助人们完成复杂的编程任务。如果给它提供一个简单的任务(例如上面提到的任务),就有可能完成。

用户可以将任务分解成更小的步骤,并一次一步地提示ChatGPT。一个成功的方法是从给ChatGPT一个你想要编写的程序的逻辑的逐步大纲开始。

这有助于大型语言模型(LLM)为更复杂的任务做好准备,然后逐步提示大型语言模型(LLM)。简而言之,用户进行推理,ChatGPT完成工作。顺便说一句,这种从大纲开始并逐步完成的方法在完成其他任务时也很成功,例如撰写某些类型的文章。

如果对循序渐进的过程没有清晰的愿景,用户可以从ChatGPT本身获得帮助。通过提示大型语言模型(LLM)生成完成任务的步骤列表来启动编码会话。然后根据需要修改大纲,并开始提示它生成第一步的代码。

向ChatGPT提供反馈

不能指望ChatGPT每一步都提供干净、安全、有效的代码。当查看其代码并将其输入集成开发环境(IDE)时,可以进行更正和调整。当这样做时,最好的做法是将更正后的代码作为反馈提供给ChatGPT,并在适用的情况下提供解释。

需要注意的一点是,ChatGPT对场景非常敏感,它的行为可以根据聊天历史改变。用户可以利用这一点,这就是为什么提供反馈和纠正代码片段非常有帮助的原因。

例如,用户可以说:“这就是我更改你提供的代码的方式:[在这里插入修改后的代码]。试着(插入行为更正)继续这样做。”这可以帮助引导ChatGPT朝着正确的方向前进,避免在回答以后的提示时重复犯错。(同样,本文作者在ChatGPT的其他任务中也成功地使用了这种反馈方法,包括撰写文章)。

有时可以使用ChatGPT来获得关于其自身代码的反馈。尝试打开一个单独的聊天会话,在其中向ChatGPT提供它生成的代码,并要求它对其进行改进或更正。有时,它会产生有趣的结果和新的探索方向。

清理ChatGPT的场景

如果用户正在处理一个特别大的任务,聊天记录可能会变得很长,特别是如果使用ChatGPT进行了大量的重复操作。根据用户使用的模型,大型语言模型(LLM)可能会耗尽ChatGPT场景的内存。ChatGPT的免费版本有4000个令牌的内存。(对于语言任务,100个令牌覆盖大约75个单词。对于编程来说,它通常要少得多。)

一个成功的技巧是偶尔清理一下ChatGPT的场景。为此,可以采用一个提示启动一个新的聊天会话,在这个提示中,可以向ChatGPT提供任务的大纲、到目前为止完成的步骤、到目前为止生成的代码,以及希望它遵循的一些通用指导原则。然后告诉它继续下一步。通过消除以前与大型语言模型(LLM)交互中的混乱,可以提供更清晰的场景,并提高了ChatGPT生成代码的准确性。

大型语言模型(LLM)正在改变编程方式

大型语言模型(LLM)辅助编程领域正在迅速发展。例如,ChatGPT Plus现在有几个插件可以帮助程序员预测代码。其他基于大型语言模型(LLM)的编码工具(例如GitHub Copilot和Amazon CodeWhisperer)正在帮助程序员显著提高他们的速度和生产力。检索增强技术可以使程序员将大型语言模型(LLM)的行为定制为他们自己的专有代码库或库,这些代码库没有包含在训练数据集中。人们仍在探索大型语言模型(LLM)能为程序员做些什么。

改变开发模式的低代码平台

看到ChatGPT带来的生产力,我想到了低代码平台。

低代码是什么?一组数字技术工具平台,能基于图形化拖拽、参数化配置等更为高效的方式,实现快速构建、数据编排、连接生态、中台服务等。通过少量代码或不用代码实现数字化转型中的场景应用创新。它能缓解甚至解决庞大的市场需求与传统的开发生产力引发的供需关系矛盾问题,是数字化转型过程中降本增效趋势下的产物。

这边介绍一款好用的低代码平台——JNPF快速开发平台。近年在市场表现和产品竞争力方面表现较为突出,采的是最新主流前后分离框架(SpringBoot+Mybatis-plus+Ant-Design+Vue3。代码生成器依赖性低,灵活的扩展能力,可灵活实现二次开发。

以JNPF为代表的企业级低代码平台为了支撑更高技术要求的应用开发,从数据库建模、Web API构建到页面设计,与传统软件开发几乎没有差异,只是通过低代码可视化模式,减少了构建“增删改查”功能的重复劳动,还没有了解过低代码的伙伴可以尝试了解一下。

应用:https://www.jnpfsoft.com/?csdn

有了它,开发人员在开发过程中就可以轻松上手,充分利用传统开发模式下积累的经验。所以低代码平台对于程序员来说,有着很大帮助。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

学生用RockyLinux9.2模板虚拟机说明

“RockyLinux9.2”模板虚拟机下载地址 链接:https://pan.baidu.com/s/1xcakszIQ7Kp9Nw_NA9Znlg?pwdqzmm 提取码:qzmm 1.模板机是基于“Rocky-9.2-x86_64-minimal.iso”安装 2.模板机是2023.10.10执行dnf update && dnf upgrade更新和升级软件…

Unity_相机灵活跟随角色移动

每日一句:慢慢改变,慢慢成长,慢慢适应,慢慢优秀 目录 角色旋转、移动类 相机跟随人物移动类 角色旋转、移动类 /*旋转刚体,位移的动画驱动移动*/ using System.Collections;using System.Collections.Generic;using…

一套完整的软件测试面试流程(面试题),这些题你真的都能答上吗?

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、自我介绍 2、…

外汇天眼:外汇交易商常见黑心手法大公开!投资务必留意这5种骗局

众所周知,外汇市场无论在交易量、流动性方面都是世界之最,如今随着网络科技愈来愈发达,任何人都能通过手机使用全球的经纪商,随时随地在线上进行外汇保证金交易。 然而,市面上充斥各种黑平台与假券商,投资人…

神经网络中卷积和池化的区别

1、什么叫卷积? 卷积层是用一个固定大小的矩形区去席卷原始数据,将原始数据分成一个个和卷积核大小相同的小块,然后将这些小块和卷积核相乘输出一个卷积值(注意这里是一个单独的值,不再是矩阵了)。 卷积的…

智能合约漏洞,价值 5200 万美元的 Vyper 漏洞攻击原理分析

智能合约漏洞,价值 5200 万美元的 Vyper 漏洞攻击原理分析 7 月 30 日,因为 Vyper 部分版本中的漏洞,导致 Curve、JPEG’d 等项目陆续受到攻击,损失总计超过 5200 万美元。 Safful 对此事件第一时间进行了技术分析,并…

WebDAV之π-Disk派盘 + 书藏家

书藏家是一款书籍收藏的软件,对于喜欢阅读书籍的用户来说非常友好,记录你所阅读的书籍内容,对你所阅读的书籍内容进行全方位的管理,并且支持多种录入的方式,不管是实体书籍还是网络书籍都能够进行更为有效的管理;内置WebDAV 模块,更加便利的整理自己的文件资源;书藏家的…

三维模型3DTile格式轻量化云端处理技术方法分析

三维模型3DTile格式轻量化云端处理技术方法分析 在现代的地理信息系统 (GIS) 中,3D Tiles 是一种很重要的数据格式,用于存储和传输大规模地理空间数据。然而,由于其数据密度高,传输和加载过程中非常消耗资源,因此需要采…

element-ui的 el-option如果label为空显示value问题处理

element-ui的 el-option如果label为空显示value问题处理 问题描述我的第二项没有lable值直接取的value 处理办法定义一个函数处理一下 function toStr(str) {let data;if (str) {data encodeURI(str);} else {data 暂无名称;}data data.replace(/ /g, %20);return decod…

MySql运维篇---009:分库分表:垂直拆分、水平拆分、通过MyCat进行分片,读写分离:一主一从、 双主双从

3.分库分表 3.1 介绍 3.1.1 问题分析 使用单个数据库存储所有的数据,如果磁盘和内存和内存不足了可以增大磁盘和内存,但是对于一台服务器的磁盘和内存不可能无限制的扩张下去,它是受我们服务器的硬件影响的,如果说数据库所存储…

查看和分析 IIS 日志文件以增强 Web 服务器安全性

Microsoft IIS服务器,无论是Web还是FTP,对于企业来说都是必不可少的。但是,IT 安全管理员的工作并不止于部署 IIS 服务器。部署后,管理员必须采取安全措施来保护这些服务器,监控 IIS 服务器安全性的一种行之有效的方法…

BC v1.2充电规范

1 JEITA Reference to https://www.mianbaoban.cn/blog/post/169964 符合 JEITA 规范的锂离子电池充电器解决方案 2 Battery Fuel Gauge 2.1 Cycle Count(充放电循环次数) 此指令回传一只读字段,代表电芯组已经历的完整充放电循环数。当放电容…

Pulsar简介及其安装

Pulsar简介及其安装 简介特征Pulsar 本地安装与运行Pulsar集群安装jdk版本映射关系下载解压 Pulsar 本地安装与运行Pulsar集群安装jdk版本映射关系下载解压解压目录介绍 启动创建topic发送消息消费消息停止 简介 Apache Pulsar 是 Apache 软件基金会顶级项目,是下一…

host配置

配置host文件的作用主要是用于自定义域名与IP地址之间的映射关系。Host文件是一个操作系统用于将人类可读的域名(例如:www.example.com)映射到IP地址(例如:192.168.1.1)的文件。当你在浏览器中输入一个网址…

欠酸洗,异物压入,斑迹和脏污 学习笔记

欠酸洗: 带钢的宽度方向上,可能会出现在整个宽度或某个局部宽度区域的特殊分布。这种分布看起来像波浪或鱼鳞的痕迹。这种情况通常在带钢的开始和结束部分更为常见。 异物压入 通常,这种情况是由于圆点或小条状的粉尘和颗粒被压入所导致的…

一站式工单系统哪家好?一站式工单系统有什么特点?

伴随着高新科技的不断发展和行业竞争的加重,对于一站式工单系统这一类的公司服务系统软件有着越来越多的流程规定和可靠性的要求。一个比较完善的智能化一站式工单系统包含众多的流程,并适用更广泛性的企业信息化,接下来我们将一起看看一站式…

MyLife - Docker安装MySQL

Docker安装MySQL 个人觉得像数据库之类的基础设施在线上环境直接物理机安装使用可能会好些。但是在开发测试环境用docker容器还是比较方便的。这里学习下docker安装mysql使用。 1. MySQL 镜像库地址 MySQL 镜像库地址:https://hub.docker.com/_/mysql/tags 这里是官…

HP打印机一点击打印就出现Windows资源管理器已停止工作问题解决

本次处理的打印机型号是HP Officejet 200 移动便携式打印机,不过其他型号如果出现类似现象,解决方法应该是一致的。 在弹出Windows资源管理器已停止工作的报错提示框后,点击左下角的详细信息,看到的内容显示是KernelBase.dll崩溃…

10月10日星期二今日早报简报微语报早读

10月10日,星期二,早报简报微语早读分享。 1、全国铁路国庆黄金周运输发送旅客1.95亿人次; 2、贵州公安:三名抢劫杀人嫌犯潜逃至缅北电诈窝点,全部落网; 3、四川:游客擅自进入未开发开放游览活动…

Redis(六) 内存策略

文章目录 Redis内存回收一、过期策略Redis是如何知道一个key是否过期的?是不是TTL到期就立即删除呢? 二、淘汰策略 Redis内存回收 一、过期策略 Redis是如何知道一个key是否过期的? 利用两个Dict分别记录key-value对及key-ttl对 是不是TTL到…