OpenAI 官方的提示工程指南
2024-04-12
去年也简单分享过 prompt engineering (提示工程),历史文章在这里:prompt 工程简介🔗。
这一年来,不仅已经习惯了从与 GPT 的交流中获取答案和灵感,也适应了 GitHub Copilot 不经意间给的惊喜(惊吓,写得太棒了!)。
多了一些经验和感悟。
1. 个人经历
简答来说,个人经常用到的技巧有三个,跟之前文章里谈到的原则基本一致:
-
清晰地描述问题
-
提供足够多的上下文
-
迭代式提问
分别说说。
你永远无法得到一个准确的答案,如果你连问题是什么都不清楚。这句话作为第一个技巧的注脚十分合适。
所以第一步,就是思考清楚你想问的问题,然后准确地写出提示词,最后丢给 GPT 等待回答。
至于怎么思考清楚,这个问题太大,不是今天文章涉的内容。这里要强调的是,只有清晰、具体的问题,才有可能得到一个高质量的反馈,否则就是鸡同鸭讲,毕竟目前 GPT 的水平,距离“读心”,还差得远。
第二点是你要给它足够多的信息,计算机领域里叫 Context (上下文)。
这就很像我们人与人之间交流。有两个人在聊天,如果你中途才加入,会发现你完全听不懂他们在说什么,而此时如果旁边有人告诉你他们之前聊的内容,你就很容易参与进去。
GPT 也是如此。你给的参考信息越多,它就越容易“理解”你的需求。
但是,有了前两点,还不够。
我之前也犯过类似的错误,总想着一把梭哈,一个问题,就得到最后的答案。
后来多次尝试后发现行不通。因为很多时候,一个提问里,不仅没有办法清晰地描述问题,也不能提供足够丰富的参考信息。回答内容自然差强人意。
不过没关系。我们有第三个武器。
第一次说不清楚,多说几次。
第一次信息不全,那我就多给你几次。
几轮交互下来,大体就能得到一个还不错的结果。
2. Open AI 的官方指南
我今天花了点时间,读了下 Open AI 官方文档里的 Prompt Engineering🔗。
核心的观点差不多。
官方给出了六点建议:
- 写出清晰的指令
- 提供参考信息
- 将复杂任务分解成多个简单子任务
- 给模型时间“思考”
- 使用外部工具
- 系统测试变更
每点建议下,都还附送了使用技巧和示例。
因为我平时使用 GPT 很少涉及复杂场景,因此细节上不展开,这里不提术,只谈道。
而且我认为,工具的学习就是要实用点,用多少,学多少,在起步阶段,把握几个核心原则即可。
像那些模拟角色(Ask the model to adopt a persona)、指定步骤(Specify the steps required to complete a task)的提示词,通常都有特定的应用背景,作为普通人不需要过多关注。
官方六点建议里的前两点,与之前所谈基本一致。
第三点很有意思,拆解复杂问题。这已经不单单是一个技巧了,更是一种解决问题的思考方式和通用步骤。
复杂的问题,通常涉及内容较多,很难一下子完全解决。此时合适的方案就是分割,将一个大问题拆分成几个简单的小问题,然后一个个解决小问题,最终把大问题解决。计算机领域里叫“分治(divide and conquer)”。
同样的思路,可以应用于 prompt 的编写上。如果一个问题很大,很麻烦,我们不妨先从几个相关的小问题入手,不断迭代式提问,最终把所有的答案收集汇总。
最后的三点,很像是对 GPT 不足之处的一种补充。
给模型时间“思考”,其实用到的是 Chain of Thought🔗。也就是我们在迭代提问的时候,要有逻辑性,提问本身,也是一种思考。非线性的问题,GPT 回答的并不好。
使用外部工具,是说 GPT 并非全能,也有它不擅长的领域,比如说,如果你想计算 45*78,与其问它,不如用计算器。
系统测试,你只可能优化一个你可以测量的系统(Improving performance is easier if you can measure it)。这一点对于我们普通用户而言似乎意义不大,更像是给产品开发者的一句建议,毕竟稳定性对于一个产品而言是非常重要的。
3. 启发
GPT 并不是一个搜索引擎,因为相较于一个客观问题,搜索引擎无疑能更高效地检索到正确结果。
GPT 更像是一个能帮助你梳理混乱思路的好帮手。
所以我一直觉得,Copilot(副驾)这个名字起得真是极好。
你在提问,同时你也在思考,它(GPT)有时也会误导你,因为毕竟,人也会犯错,它也有它不擅长的领域。
总之,把它放到你的工具箱吧,好好地学习如何使用,并借此放大自身优势。
就像最近,时常听闻的“超级个体(Super Individual)”。以前觉得很难,现在觉得并非不可能。
或许科技发展,就是让更多不可能变得可能了。
不过同时也要意识到,人是目的,而非工具。
(完)
参考
- 本文作者:Plantree
- 本文链接:https://plantree.me/blog/2024/openai-prompt-engineering/
- 版权声明:所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
最后更新于: 2024-11-20T09:44:17+08:00