在之前的两篇文章里,我们详细拆解了12个常见的Prompt框架,每个框架都配了实际测试的例子。后台收到不少肯定,也意外得到了业内资深人士孙志岗老师的认可——这既是鼓励,也是继续深入的动力。
今天要聊的是另一个话题:如何用Prompt来生成Prompt。简单说,就是让大模型自己帮我们写Prompt例子,然后拿去验证框架效果。整个过程有点意思,也踩了一些坑,下面直接上干货。
目录
- 先上干货
- 这个Prompt是怎么来的
- 道路是曲折的
- 总结
先上干货
读过前两篇文章的同学可能会问:那些健身计划、英语学习、旅游规划的Prompt例子,都是你一个一个想出来的吗?其实不是。它们全是用一个Prompt批量生成的——对,用Prompt生成Prompt。
直接上核心指令(以ERA框架为例):
你是一个Prompt高级工程师,现在有这样一个Prompt框架「ERA框架」:
EXPECTATION 期望:描述所需的结果
ROLE 角色:指定ChatGPT的角色
ACTION 行动:指定需要采取哪些操作
现在要你写一个符合ERA框架的Prompt实例,要求输出中文,例子要具体详细
实际操作时,我用了两个模型搭配工作:先用文心一言生成Prompt实例,再拿这个实例去ChatGPT上跑,验证ERA框架的效果。至于为什么跨平台,后面会细说。
这个Prompt是怎么来的
这个指令本身并不复杂,真正的难点在于想到“用Prompt生成Prompt”这个思路。当时在准备12个框架的介绍,按习惯要对每个框架动手实践才能放心分享。第一个框架的Prompt例子就花了不少时间,效果还不理想。这么搞下去,效率太低。
转念一想:既然在学大模型,这事能不能交给大模型干?于是就有了这个想法。一试,果然可行。
道路是曲折的
虽然思路有了,执行过程中却遇到了几个坎。
第一版:中英文混杂
生成的实例里中英文夹杂,显然不符合要求,需要迭代。
第二版:输出的是模板而非实例
指令没有把“需要具体实例”这个需求说清楚,结果生成的是通用模板,不够具体。继续调整。
第三版:终于可用
调整后的指令能输出可用的实例了。拿这个例子填充数据后作为Prompt给ChatGPT,得到了符合预期的结果。
大模型本身的问题
过程中还发现两个“不靠谱”的地方:
问题1: 部分生成的Prompt例子需求描述模糊,不知道要做什么。比如下面这个:
问题2: 在同一个聊天记录中,生成的Prompt实例会“串框架”——明明指定了ERA框架,生成的内容却带有其他框架的逻辑。即使新建对话,有时也会出现类似问题。
针对这两个问题,改用文心一言生成实例,再在ChatGPT上独立运行,有效避免了上下文干扰。
总结
以上就是用Prompt解决实际问题的一个完整闭环。几点感受:
- 写一个适合特定场景的Prompt,大概率需要多次迭代,一次成型很少见。
- 大模型存在概率性的“不靠谱”,不同模型交叉验证是个实用技巧。
- Prompt是涌现出来的产物,尝试越多,越会发现新大陆。
在这个浮躁的时代,只有自律的人,才能够脱颖而出,成就大事。 ——《觉醒年代》
