10个值得收藏的ChatGPT辅助编程技巧

news2024/12/27 11:06:01

在我们开始之前,你必须先了解编程语言,然后才能相信 ChatGPT 抛给你的任何东西。 我必须明确这一点,因为许多误入歧途的绵羊被告知 ChatGPT 是新的圣杯,开发人员将被淘汰。

在这里插入图片描述

推荐:用 NSDT场景设计器 快速搭建3D场景。

使用 ChatGPT 或任何 LLM 不会自动让你成为大师,也不会自动让你更有效率。

一味的复制粘贴代码对任何人都没有好处; 这只是懒惰。 它可能会导致意想不到的后果,当你添加不理解的代码时,这可能会直接或间接地损害你的项目。

你需要承认 ChatGPT 已经使用 2021 年之前的公开数据进行了训练。结果可能有偏见、容易出错并且缺乏引用。 因此,最好始终牢记这一点,因为它提供准确和最新答案的能力并不比其训练数据集的准确性和相关性更好。 随着 OpenAI 弄清楚如何持续确保模型是最新的,这可能会随着时间的推移而改变。

如上所述,“提示”可能会生成答案或代码片段,这些答案或代码片段可能会引用较旧的框架版本或具有安全缺陷或错误的已弃用功能。

现在我们已经解决了这个问题,让我们进入并查看一些有价值的提示,这些提示将帮助你增强使用 ChatGPT 的方式。

1、避免丢失上下文

ChatGPT 是上下文感知的。

ChatGPT 有文本输出限制,但可以通过键入“continue”或“继续”轻松绕过这一限制。

如果“继续”返回的解决方案略有不同,你可能需要返回并修复变量名称或更改函数参数的顺序。

如果你在聊天中问太多问题,它最终会失去上下文,因为每次你问一个新问题时它只会延续之前对话的有限部分。

要解决这个问题并保留上下文,可以编辑之前的问题并提出一个完全不同的问题。 ChatGPT 仍将保留更早之前的上下文,这对于询问有关同一应用程序中不同文件的编码问题很有用。

另一个提示是提示“Rewrite for ”让 ChatGPT 修改其答案。 具体说明你想要的输出样式。 “Teach me about code…”、“Write code on…”都会给出不同风格的答案,这可能与点击重新生成的响应不同。

2、保持提示简短准确

有时,冗长、复杂的提示可能会产生相反的效果,因此保持简短和精确总是好的。 如果你给它太多的任务或者答案需要大量的文字,它可能只是拒绝回答/帮助。

最好描述程序,然后分别询问每个功能,同时指定与先前代码兼容的提示。 一旦你这样做了,你就可以得到想要的效果。

3、明确提示输出样式

将关键字“list”添加到你的提示中可以更改 ChatGPT 的输出方式。例如,下面的第二个提示要求chatgpt列出最大的银行:
在这里插入图片描述

由于 ChatGPT 是基于文本的,你可以使用关键字“markdown”作为提示的一部分。例如:
在这里插入图片描述

这是另一种要求代码输出的变体。 下面的键/值需要反过来,但是我们不清楚如何定义哈希表:
在这里插入图片描述

由于我们现在知道 ChatGPT 是上下文感知的,我们可以继续根据之前的输出请求进一步的更改:
在这里插入图片描述

此外,我们可以继续这个上下文感知之旅,并通过根据之前的提示编写更复杂的逻辑来进一步操纵输出:

在这里插入图片描述

4、生成代码文档

ChatGPT 可以帮助你为代码编写清晰简洁的文档,包括项目的 README.md 文件。 通过为模型提供有关你的代码的信息,它可以生成详细的文档来解释它的工作原理和使用方法。

采取的步骤包括:

  • 提供带有你希望记录的代码功能片段的提示。 确保添加足够的上下文
  • 如果需要,请提供更多详细信息
  • 重复打磨

5、辅助完成代码

通过粘贴代码片段并提示建议,ChatGPT 可以帮助完成代码。 这为不同的问题解决技术提供了机会。 通过不断的提示,可以建立一个反馈循环来澄清特定的代码行,这有助于理解和深入了解你可以进行的潜在增强。

6、对输入保密代码保持警惕

鉴于 ChatGPT 使用的是 Large Language Model (LLM),即 Generative Pretrained Transformer,其中“生成”是指模型生成新内容的能力,该模型的底层基础是将大型训练数据集转换为数学 结构。 然后,它会学习该模式并使用它一次迭代地预测一个词,从而为给定的提示创建最佳响应。 这意味着你添加到其中的任何内容都可能用于未来的迭代训练。

在某些真实情况下,为了调查目的而插入代码片段是有意义的。 例如,交叉检查已经在公共领域的开源代码中的错误或不直接或间接披露专有公司机密的代码片段。

“这一切都是有趣的游戏,直到有人做了一些愚蠢的事情。”

7、给出要求编码的提示

以下是一些示例提示,可帮助你简化代码和重构工作:

Code alternative example
input <yourcode>

Simplify below code 
input <yourcode>

Refactor this code 
input <yourcode>

ChatGPT 可以充当 SQL 终端并可以响应提示。 这对于测试很有用,但最好直接通过像 DBeaver 这样的 SQL IDE 来学习。

在这里插入图片描述

这是另一个用作正则表达式生成器的 ChatGPT 示例。 正则表达式会变得非常复杂; 测试和学习如何解释它们总是好的。

下面显示的第一个提示用于电子邮件验证。 你会注意到输出不符合 RFC2822 标准,该标准取代了 RFC822,并于 2001 年过时。因此,仅生成基本验证。 还可以提出进一步的请求以获得符合 RFC2822 规范的模式。

在这里插入图片描述

然后,我们可以在我们最喜欢的 IDE 中执行一些测试,并围绕生成的正则表达式编写测试用例,以确保它符合我们的要求。 请注意,协助并不意味着没有尽职调查、测试代码和验证是否处理了所有验收标准和边缘情况。

import re

def test_email_regex():
    pattern = r"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,}$"

    # Test valid email addresses
    assert re.match(pattern, "example@example.com")
    assert re.match(pattern, "example.example@example.com")
    assert re.match(pattern, "example+example@example.com")
    assert re.match(pattern, "example_example@example.com")
    assert re.match(pattern, "example%example@example.com")
    
    # Test invalid email addresses
    assert not re.match(pattern, "example@.com")
    assert not re.match(pattern, "example@com")
    assert not re.match(pattern, "example@example.")
    assert not re.match(pattern, "@example.com")
    assert not re.match(pattern, "example@example..com")

试试上面的 pytest。 你可能会注意到有些东西有点奇怪,这证明了我需要验证的观点。

8、不要太天真

ChatGPT 可以生成代码并不意味着它可以开箱即用。 诸如“给我写一个简单的 Django 待办事项列表应用程序”之类的提示会在一定程度上为简单的 Django Python 项目创建一个基本结构。 为了让生成的代码正常工作,你必须投入的工作量会更多,这有时可能会违反直觉,由于需要更多代码工作的上下文,可能会减慢你的速度。

如果你没有经验并且对框架和代码没有很好的理解,那么 ChatGPT 生成的任何内容都不会在现场生产环境中发挥作用。 ChatGPT 也不适合那些事先不了解他们请求 ChatGPT 信息的主题的人。

始终交叉检查外部引用并练习结对编程和代码审查,以验证推送到你的存储库中的任何代码。

有一种误解认为 ChatGPT 会神奇地为你简化一切。 像任何工具一样,它的结果完全取决于使用它的人。

我仍然相信编码是一个创造性的过程; ChatGPT 等工具可以协助但不能取代软件开发人员。 他们有能力帮助开发人员更聪明地工作,但也有能力让我们作为软件开发人员自满和脑残。

9、提示生成测试用例/计划

鉴于 ChatGPT 的准确性有时会受到质疑,在编写测试用例时,这是你可以安全地依赖 ChatGPT 作为灵感来源的领域。 鉴于测试用例不是代码执行的重要组成部分,与利用 ChatGPT 相关的风险可以忽略不计,获得的灵感可以帮助你编写更好的代码。

测试用例也很容易验证正确性,因为如果错误就会失败。 单元测试通常很容易理解,预期的结果是事先知道的。 LLMs 模型正确的可能性非常高。

测试计划是你可以生成的另一件事,这对于与 QA 相关的测试特别有用。 通过利用人工智能,QA 团队可以自动执行重复性任务,并深入了解可生成质量更高的系统的边缘案例。

示例:假设你有一个网站 app.ekyc.com,你在该网站上构建了一些功能并想要计划测试自动化。

你可以向 ChatGPT 提供有关功能组件及其使用的详细信息,并要求它在这种情况下生成测试计划。
在这里插入图片描述

这是简单易读的,可以作为 QA confluence 测试用例验收标准文档的良好起点。 你可以与质量检查团队分享此信息。

现在,假设你希望测试计划采用一种可以轻松复制到 Jira、wiki 或 GitHub 中的测试票格式。 在这种情况下,可以通过在同一线程中添加更多提示来使用 ChatGPT。
在这里插入图片描述

10、提示生成样板代码

如果你是经验丰富的开发人员,一些使用该工具有意义的情况包括不需要脑力的繁琐工作。

  • SQL表创建
  • 增删改查代码
  • 发送电子邮件
  • 将数据导出到 CSV Excel
  • 创建主要数据输入表单
  • 用于列出表格数据的主数据网格

在这里插入图片描述

11、提示非常重要

如果希望生成模型能够很好地为你工作,那么提示工程是你需要掌握的一项技能。 无论是使用 DALL-E 等 AI 生成器生成内容和令人惊叹的图像,还是利用 meta Blenderbot、ChatSonic、Bloom 和 Google LaMDA 等鲜为人知的服务。 正确提示将为你提供所需的输出,因此花时间学习如何执行此操作将节省破译垃圾输出的时间。
在这里插入图片描述

指示 ChatGPT 成为 X 的提示以得出该 X 的响应。

我希望你扮演一个<描述和精确避免歧义>的人。

作为数据科学家的 ChatGPT:

在这里插入图片描述

Chat GPT 作为仿真 Linux 终端:

在这里插入图片描述

ChatGPT 作为随机数据生成器,例如你需要测试数据样本时:

在这里插入图片描述

注意对于随机采样数据生成,如果你注意到结果输出不是唯一的,可能需要给出确切的提示以确保列随机化。


原文链接:ChatGPT辅助编程技巧 — BimAnt

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

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

相关文章

Redis学习(三):五大数据类型及常用操作

五大数据类型 Redis-Key set [key] [value] # 向数据库添加一个键值对 keys * # 查看当前数据库所有的键值 EXISTS [key] # 查看key是否存在在当前数据库中&#xff0c;存在返回1&#xff0c;不存在返回0 move [key] [index] # 将key移动到编号为index的数据库&#xff0c;…

Docker(八)---Docker安全相关设定

文章目录一、理解docker安全二、容器资源控制1.cpu资源限制2.cpu优先级3.内存资源限制4.磁盘io限制三、docker安全加固&#xff08;隔离&#xff09;四、容器特权一、理解docker安全 Docker容器的安全性&#xff0c;很大程度上依赖于Linux系统自身&#xff0c;评估Docker的安全…

扬帆优配|多只“迷你基”清盘未果业绩反领跑 盲目追捧有风险

2023年以来&#xff0c;在信创板块一枝独秀的行情下&#xff0c;多只重仓该板块的基金成绩乘着春风起舞&#xff0c;但作为较为小众的职业&#xff0c;现在来看能够真正享受到红利的基金多为迷你基金。有剖析指出&#xff0c;不少“迷你基”经过押注单一赛道或许投资小盘股等方…

【数据库】排名问题

返回第N高的一个解决思路返回N组中的第N高解决思路分数排名解决思路窗口函数数据库经常被用来解决排名问题。 返回第N高的一个 单表查询: 表: Employee------------------- | Column Name | Type | ------------------- | id | int | | salary | int | ----…

HTML DOM 改变 HTML 内容

HTML DOM 允许 JavaScript 改变 HTML 元素的内容。改变 HTML 输出流在 JavaScript 中&#xff0c;document.write() 可用于直接向 HTML 输出流写内容。实例<!DOCTYPE html><html><body><script>document.write(Date());</script></body>&l…

算法分析与设计之并查集详解

算法分析与设计之并查集1.前言2.并查集的基础2.1.关于动态连通性2.2.动态连通性的应用场景&#xff1a;2.3.对问题建模&#xff1a;2.4.建模思路&#xff1a;2.5.API2.7.Quick-Find算法&#xff1a;2.8.Quick-Union算法&#xff1a;3. 并查集的应用1.前言 本文主要介绍解决动态…

day02_设计测试用例的常见方法

软件测试用例 概念&#xff1a;一个为了特定的目的&#xff08;检验开发的代码实现是否满足用户的需求&#xff09;而设计的文档&#xff08;包含测试输入、执行条件、预期结果&#xff09;&#xff0c;文档的形式可以是xmind、excel等。 测试用例的核心要素 常见测试用例的…

Echarts-授人以鱼不如授人以渔

Echarts 授人以渔 授人以鱼不如授人以渔 这篇文章就告诉大家如何快速查阅官网的配置项手册 建议收藏&#xff0c;老司机请跳过 echarts是一个非常强大的图形库 但是对于很多刚入门的小伙伴而言echarts里面配置项海量的名词看到吐血 想要修改样式的时候不知道改哪里 下面就简…

【LeetCode】1653. 使字符串平衡的最少删除次数

1653. 使字符串平衡的最少删除次数 题目描述 给你一个字符串 s &#xff0c;它仅包含字符 ‘a’ 和 b’​​​​ 。 你可以删除 s 中任意数目的字符&#xff0c;使得 s 平衡 。当不存在下标对 (i,j) 满足 i < j &#xff0c;且 s[i] ‘b’ 的同时 s[j] ‘a’ &#xff0…

一次输入多个数据-batchsize大于1的简单的线性回归模型-标量

最简单的线性回归模型-标量 接上篇&#xff0c;由于batchsize为1&#xff0c;因此loss有很大的波动&#xff0c;这篇我们讨论batchsize大于1的情况。若batchsize数量为N&#xff0c;则ywxbywxbywxb的损失函数为&#xff1a; L∑i1N(wxi∗b−yi∗)2(wxTbeT−yT)(wxbe−y)\begin{…

html网页源码加密

html加密、网页加密、网页源码加密html网页源码能加密吗&#xff1f;能加密到何种程度&#xff1f; 某些时候&#xff0c;我们可能需要对html网页源码加密&#xff0c;使网页源码不那么容易被他人获得。出于这个目标&#xff0c;本文测试一种html加密方式。 提前透露&#xf…

Linux系统PWM应用编程

目录应用层如何操控PWM编写应用程序在开发板上测试本章我们将学习如何对开发板上的PWM 设备进行应用编程。 应用层如何操控PWM 与LED 设备一样&#xff0c;PWM 同样也是通过sysfs 方式进行操控&#xff0c;进入到/sys/class/pwm 目录下&#xff0c;如下所示&#xff1a; 这里…

Java多态性

用一句话概括就是&#xff1a;事物在运行过程中存在不同的状态。 多态的存在有三个前提: 1.要有继承关系 2.子类要重写父类的方法 3.父类引用指向子类对 但是其中又有很多细节需要注意。首先我们定义两个类&#xff0c;一个父类Animal&#xff0c;一个子类Cat。 父类Animal cl…

Hive学习——企业级调优

目录 一、计算资源调优 (一)Yarn资源配置——集群 1.Yarn配置说明 (1)yarn.nodemanager.resource.memory-mb (2)yarn.nodemanager.resource.cpu-vcores (3)yarn.scheduler.maximum-allocation-mb (4)yarn.scheduler.minimum-allocation-mb (二)MapReduce资源配置 二、…

裁员降本,扭转颓势!通用汽车吹响智能电动「中国集结号」

2023年&#xff0c;将是合资品牌能否搭上中国智能电动市场红利的关键一年。 全新一代VCS智能座舱&#xff08;高通8155&#xff0c;30英寸6K曲面OLED显示屏&#xff0c;12.6英寸WHUD以及5G版本的别克eConnect车联系统&#xff09;、全新一代Super Cruise超级辅助驾驶系统&#…

7.SpringSecurity中的权限管理

SpringSecurity中的权限管理 SpringSecurity是一个权限管理框架&#xff0c;核心是认证和授权&#xff0c;前面已经系统的给大家介绍过了认证的实现和源码分析&#xff0c;本文重点来介绍下权限管理这块的原理。 一、权限管理的实现 服务端的各种资源要被SpringSecurity的权限…

ccc-pytorch-卷积神经网络介绍(5)

文章目录一、卷积二、池化三、Batch Norm四、经典卷积网络简单介绍一、卷积 卷积连续函数形式&#xff1a; F(x)∫f(t)g(x−t)dtF(x)\int f(t)g(x-t)dtF(x)∫f(t)g(x−t)dt 物理意义是一个函数在另一个函数上的加权叠加。在2D卷积中指卷积核在数据矩阵中分割出的矩阵和卷积核相…

PMP和软考高项集成,更应该考哪个呢?

要看你自己的偏向&#xff0c;要说考的话&#xff0c;我是觉得都值得考的&#xff0c;一个证一份技术嘛。 我给你稍微介绍一下&#xff0c;PMP都是美国PMI发起的考试&#xff0c;软考高项是国内的考试。PMP是项目管理证书&#xff0c;学习的内容是项目管理&#xff0c;包含大约…

研报精选230306

目录 【行业230306东亚前海证券】食品饮料行业2023年年度投资策略&#xff1a;复苏在途&#xff0c;蓄势待发【行业230306国金证券】基础化工行业研究&#xff1a;MDI价格上行&#xff0c;新一轮国企改革在即【行业230306中银证券】华为汽车产业链深度报告&#xff1a;三种合作…

k8s控制器

目录 一、控制器简介 二、控制器类型 1、RC和RS 2、Deployment 3、DaemonSet 4、Job 5、CronJob 6、StateFulSet 7、HPA 一、控制器简介 在kubernetes中&#xff0c;按照Pod的创建方式可以将其分为两类&#xff1a; 自主式:kubernetes直接创建出来的Pod&#xff0c;…