现在好几个大公司都推出了自家的大语言模型,有的参数比GPT多,但是真正能称得上会编程的,大概只有GPT一个,可以说是OpenAI的独门功夫。
这篇文章旨在探讨GPT辅助编程过程中常用的提示和技巧。当然,我自己也是一边学一边演练,一边演练一边完成的这篇博客内容。欢迎大家在评论区补充更多的用法。 祝大家都能用好ChatGPT这把趁手的兵器,大大提高效率~
推荐阅读:建议收藏:超详细ChatGPT(GPT 4.0)论文润色指南+最全提示词/咒语
基础篇——让代码编写更简单
开始之前
要让ChatGPT更准确地回答代码相关的问题,以下两个提示词用法值得记住:
1)始终确保你的问题明确且具体。
2)试试看在提示词后添加“请一步步思考”或“请务必认真回答”等语句。这种方法有助于提高ChatGPT的回答精确度。只需要在提示语后面加上这些提醒,ChatGPT的回答就会有显著的不同。
更多更细致的一些,针对提示词设计层面的一些方法,也可以参考我的另外一篇文章,有一些方法是通用的。
建议收藏:超详细ChatGPT(GPT 4.0)论文润色指南+最全提示词/咒语
代码理解
假如一家新公司,或者上手一个新项目,面对业务复杂、代码量大的场景,有时候你需要用ChatGPT作为你的编程顾问,帮你快速梳理出代码的逻辑。
代码解释
提示:这段代码主要用于[如果能给出具体的场景更好],我初步接触这段代码,需要快速读懂,您作为有着多年开发经验的软件开发工程师,请帮我详细梳理出代码的主要流程,用小标题 + 代码解释/作用/原理 +代码片段的形式给出。
注意,之所以这里用“小标题 + 代码解释/作用/原理 +代码片段”的形式,是因为这种方便自己做笔记整理,大家可以按照自己想要的形式来。
记忆检测
注意,由于ChatGPT的记忆有窗口限制,因此,在交流一段时间之后,如果还需要对原始代码进行继续提问,那么可以用下面这个方法来检测最初的那个问题它是否还记得,如果不记得的话,就得重新输入,保证它的回答不会跑偏。
提示:为了怕你忘记,检查你一下,你还记得咱们刚刚讨论的是哪个代码吗,请给出[代码名称或者函数名称]的原始实现。
核心线索
有时候对于庞杂的代码,或者复杂的SQL查询,你需要梳理出核心线索。
提示:这个SQL查询中,涉及的表过多,我有点乱,请帮我梳理出一条核心的线索,帮助我更好的读懂它。
代码优化
向ChatGPT寻求代码优化建议,以提高代码可读性和可维护性。
提示:如何重构以下Python代码,使其更易读和可维护?
[在这里粘贴你的代码]
注意,为了更加清晰看出修改之后的代码。可以用以下提示:
提示:[这里放你的要求], 请你帮忙修改,不涉及修改的代码省略即可。
下面的所有用法同理。
这样GPT给出的答案就会更加清晰易读。更重要的事,解决「因为代码过长导致无法一次性输出完整」的烦恼。
代码改写
有时,你可能需要将某个功能的代码从一种编程语言改写为另一种。这时,你可以请ChatGPT帮忙。
提示:我有这个JavaScript函数,需要将其改写为Python。你能帮我完成转换吗?
[在这里粘贴你的JavaScript函数]
Code Review
菜菜的自己在代码被大佬Code Review之前,终于有了一个得力的Code Review助手!
让ChatGPT审查你的代码并提供改进建议。
提示:请审查以下Java代码并提供改进建议。
[在这里粘贴你的代码]
错误排查
假设你有一段Java代码,其中存在一些错误,你可以请ChatGPT帮助你找出并纠正这些错误。
提示:我有以下一段带有错误的Java代码。你能帮我找出并纠正这些错误吗?
[在这里粘贴你的Java代码]
深度交互
在与ChatGPT交互时,有时需要多次往返才能得到满意的结果。例如,你可能在调试一个复杂的Python算法:
用户:我在这个Python算法中遇到了问题。它没有给我预期的输出。你能帮我找出问题所在吗?
[在这里粘贴你的Python算法]
ChatGPT可能会首先提供一些建议。如果这些建议仍不能解决问题,你可以继续与ChatGPT交流,直至找到问题的根本原因。
用户:我尝试了你的建议,但问题仍然存在。你能再看一下,提供更多见解吗?
通过与ChatGPT进行深度交互,你可以充分利用其能力,提高编程效率。
升级篇——理解复杂的业务需求
实际工作中的业务往往是复杂的,代码与代码之间有着多种关联关系,这个时候,如何使用ChatGPT解决复杂的业务需求,需要一点体力活。
首先,你需要了解你的业务逻辑。确保你明白每个模块的工作原理,每个函数的输入和输出,以及它们之间的相互关系。这是解决复杂问题的第一步。
其次,尝试将复杂的问题分解为一系列小问题。ChatGPT在处理小问题上表现得更好,因此,将大问题分解为小问题可以提高其解决问题的准确性。
以一个电商应用的订单管理系统作为例子。假设我们需要ChatGPT帮助我们设计一个新的订单分派功能,此功能需要将新订单分派给对应的仓库处理。
我们可以将这个复杂问题分解为以下几个小问题:
-
确定仓库:确定哪个仓库应处理订单,这可能取决于产品库存和订单的发货地址。
-
分派订单:一旦确定了仓库,我们需要在系统中分派订单到选定的仓库。
-
确认订单:仓库接收订单后,需要确认并开始处理。
-
订单状态更新:在订单的整个生命周期中,我们需要跟踪并更新订单的状态。
针对每个小问题,我们可以分别向ChatGPT寻求解决方案。例如:
用户:我正在设计一个订单管理系统。我需要确定如何将订单分配给仓库。我们应该考虑什么因素来确定哪个仓库处理订单?
ChatGPT可能会给出以下答案:
ChatGPT:在确定订单应该分派给哪个仓库时,你应该考虑以下因素:
库存:你应该查看每个仓库的库存,看看他们是否有足够的商品来满足订单。
发货地址:你应该考虑订单的发货地址和每个仓库的位置。通常,最接近发货地址的仓库可以更快地完成订单。
仓库的订单处理能力:某些仓库可能已经忙于处理其他订单,因此你也应该考虑仓库的订单处理能力。
根据这个回答,你就可以开始设计你的订单分派逻辑了。同样地,你也可以针对上述其他小问题提问,从而得到解决方案。通过将大问题分解为小问题,你就可以充分发挥ChatGPT的能力,解决复杂的业务需求。
工具篇——自动化代码提示、对话
GitHub Copilot
强烈推荐使用!!!
对于一些简单的编程任务,GitHub Copilot提供了交互体验更好的代码推理。
由于目前Copilot X还没有开放使用,因此Copilot最重要的功能仍然是补全代码。
1)在写代码前,先写注释
给出核心思路,Copilot会自动进行代码补充,然后可以自行校验,或者将给出代码补充,交给ChatGPT-4进行校验。
例如,对于Spring定时任务,需要在@Scheduled注解中给出CRON表达式,只需要像下面一样先写上注释即可。
2) 自动注释,反向理解代码
同样的道理,对于不理解的代码,可以用Copilot注释补全的方式,尝试理解代码。