你好,我是小树。这是我为你写的第 78 封信。每期都会同步更新在微信公众号一颗小树和竹白专栏。现在有 327 位朋友订阅了这封信,也欢迎你。
为什么需要结构化 prompt
最近在做大模型相关的产品需求时,发现用户实际对输出的结果反馈效果并不好。
除开国产大模型本身的一些能力限制,在用户输入这端,也存在很多问题。
常见的问题:
- 用户无法准确地描述自己的需求
- 用户会默认大模型能够理解需求背后的背景信息、限制条件
- 用户会默认大模型的输出结果符合自己的预期
举几个例子:
为我写一篇关于赤壁赋的教案
一个更好的写法是:你是一名中学语文老师,请为我撰写一份关于《赤壁赋》的教案,内容包括:教学目标、教学内容、教学步骤和评估方法,不少于 1000 字。
按照销售渠道分析占比
一个更好的写法是:你是一名数据分析专家,我的表格数据为 xxx,请帮我分析不同销售渠道本年度的销售金额趋势,并给出业务增长的建议。
这种提示词的书写方式,借鉴了 CRISPE 框架。
- CR:Capacity and Role(能力与角色)。用于指定 ChatGPT 扮演的角色。
- I:Insight(洞察力),背景信息和上下文。帮助 ChatGPT 理解你当前需求的情境,从而做出更合理的解答。
- S:Statement(指令),你希望 ChatGPT 帮你完成什么任务。
- P:Personality(个性),你希望 ChatGPT 以什么风格或方式回答你。
- E:Experiment(尝试),可以要求 ChatGPT 为你提供多个答案。
这就是我们俗称的:“你告诉大模型的信息越多,返回的结果就会越好。”
但使用过几次这种方式之后,就会意识到,这类框架只教会了我们思维方式,实际还是需要我们自己编写,就像是高考时的命题作文,即使有固定的套路,依然要靠自己的逻辑和思维能力才能把话说清楚。
通过这种方式生成的提示词不容易沉淀,每次都要重新写一份新的,如果是复杂的需求,费时费力。
如果想要批量化工厂化地生产提示词,并保证结果的稳定性,我们就需要更加结构化的提示词。
结构化 prompt 的好处
基于这个 prompt,我向他提问:现在是否应该买房。
从输出结果的角度看,一方面结构化的 prompt 能够降低模型理解的语义负担,从而提升理解效果。标签化的属性词起到了对 prompt 内容归纳和总结的作用,减少被 prompt 不相关内容干扰的可能。
另一方面,特定的属性词能够确保唤醒大模型的深层能力。比如用 Role 指定模型当前的角色,将 ChatGPT 固定为某个领域专家;用 Rules 规定模型应该遵守的规则,缓解大模型的幻觉和不良内容问题。
从使用者的角度看,结构化的 prompt 符合人的阅读和表达习惯,更易于书写和维护,相当于是把写作文的难度,降低到了完形填空。基于已有的 prompt 进行微调后适应自己当前的场景,也会更容易。
从构建生产级的 prompt 角度看,结构化意味着标准化,也是批量生产和维护的前提。结构化的 prompt 清晰地划分为了不同的模块,更易于用编程语言描述,也可以方便地进行版本管理。
现在很多地方都在提数字员工的概念,我认为结构化的 prompt 模版,就是一份用于招聘数字员工的岗位描述,最终可以让 ChatGPT 为你生成专注于解决这个需求场景的助理。
如何编写结构化提示词
下面是一个用于生产结构化 prompt 的模版,可以按照自己的需求场景进一步完善。
各个模块的内容,可以按照自己的需要自行填充。
这是我按照模版实现的一个简单的“数字员工”。
注 1:以上方法基于 ChatGPT 模型产出,不同模型可能会有不同的提示词方法。
注 2:实际场景中,部分需求需要 GPT4 才能达到更好的效果,也有部分场景需要使用英文 prompt 效果更好,需要自行尝试。
这篇文章参考了如下内容,感谢社区的无私贡献:
碎碎念
推荐一期播客:Ep98【沈阳生存手册】要不是怕削,我可就都说了
这期太好了 🥹 最后的合唱让我热泪盈眶,好久没有这么简单纯粹的快乐了。谢谢基本无害,谢谢大风天。
谢谢你的关注,我们下期再见。👋🏻
往期推荐
你也可以在这里找到我:即刻、Twitter、微信公众号一颗小树。
如果你觉得这篇文章对你有用,欢迎分享给更多好友。