AI 简介
像 ChatGPT/New Bing 这类 AI 属于人工智能中的 NLP 领域,也就是自然语言(英文、汉语等)处理领域。换句话说就是让计算机来理解并正确地操作自然语言,完成我们给它指定的任务。
准备工作
- 你需要想办法注册一个 ChatGPT 账号,或者像本文一样直接使用基于 GPT-4 的 New Bing AI 来完成你的代码优化
- 由于 AI 的回答具有一定的随机性,你应该将 AI 设置为精准回答,而不是富有创造性的回答,这能有效避免 AI 给出错误答案
如何成为提问(Prompt)工程师?
想 AI 提问的时候,应该尽可能的详细一些,下面分享一些常见的提问案例作为参考。
低效
比较低效的,是这种非常简单的提问方式:
优化代码:code
用 Bing AI 测试:
可以看到 Bing AI 并没有立即优化你的代码,而是阅读你的代码后,用询问的方式来确定是否要优化这段代码...
合格
优化你提出的需求,增加一点要求和约束,比如 “帮我” “这段”。
帮我优化这段代码:code
这时候 Bing AI 就能直接给出一段优化后的程序供你参考了,省去了一次多余的对话时间。
高效
- 继续优化需求,用【】对要处理代码的范围进行约束
- 添加附加条件,比如 “我不想用 if 语句了”
帮我优化【】中的代码,我不想用 if 语句了:【code】
专业
采用 设定角色 + 提出需求 + 附加条件 的提问方式,比如角色设定为高级前端工程师,需求是优化给出的代码,附加条件是不想要 if 语句并给出优化后的代码。
先设定角色
你现在充当一名高级前端工程师
然后提问
帮我优化【】中的代码,我不想要 if 语句并请你给出优化后的代码:【code】
这是一份比较通用且高效的提问格式,建议大家以后常用这种方式进行提问。
代码优化的方向
这里要求提问工程师本身具备一定的代码优化能力,了解基本的代码优化方向,比如:
- 优化代码结构
- 优化代码可读性
- 优化算法和数据结构
- 优化代码的性能和效率
或者具备一些具体的优化点,比如:
- 干掉可优化的循环
- 干掉可优化的 if 语句
- 缓存常用的值
- 避免重复的代码
- 消除多余的语句
再直白一点,比如:
- 双循环优化为单循环
- 表驱动编程代替 if else 语句
- switch 代替 if else 语句
- && 或 || 或 三元运算符代替 if 语句
- 提取全局变量、常量
- 将重复的代码优化成函数
- 添加详细的注释
这些优化方向,你都可以在向 AI 提问的时候,添加到附加条件里,指定 AI 往这些地方进行优化。
示例:
帮我优化【】中的代码,将双循环优化为单循环并使用 && 或 || 或 三元运算符代替 if 语句,请你给出优化后的代码:【code】
始终需要检查 AI 的回答
不能无脑相信 AI 帮你优化的代码,它常常也是会给出一个看似正确,实则有 BUG 的代码程序。截取一段 GPT-3.5 的优化案例作为参考:
哪怕是同一段代码,由于提问的方式不同,AI 给出的答案也可能会不同,并且答案还可能有问题。
你能检查出来图中哪一段代码是有 BUG 的吗?
可能需要你拆解代码
如果一大段代码投喂过去,Bing AI 可能并不会帮你优化(特别是在你使用最低效的提问方式的时候):
这时候需要将你的代码拆解后一点点投喂给它,比如你可以以函数为单位,一个一个函数叫他帮你优化,并且尽可能将你的提问语按照专业的方式进行提问。
可能需要你提供更多上下文
有时候一个功能模块的代码并不在同一个文件里,这时候就需要你将相关的代码都依次投喂给 AI,让他阅读后再提出你想要优化的需求。
End
感谢阅读,希望这篇文章能帮助你学会更高效的向 AI 提问的方式,最终利用 AI 来协助你优化代码。