产品必读|AI对话(二):Prompt不只是一句话
很大程度上,Prompt的结构与内容会对最后模型的输出能力产生极大影响,所以,我们需要做好Prompt的设计。这篇文章里,作者就对Prompt如何构建等问题做了分享,一起来看。
Prompt是什么?简单理解,用户输入给AI模型的一串指令或提示词(Prompt)让模型完成指定任务。前文提到,训练模型的【Pre-train,Prompt,Predict】这个范式,用特定语言的模板(prompt)挖掘预训练模型(Pre-train)的本身能力,因此可以降低语义差异。(其他训练范式请见上个系列)
理所当然的,输入的不同直接决定了输出的质量。Prompt 的结构与内容对最后模型的输出能力有极大影响,要想更好地得到输出,对Prompt的设计必不可少。
一、Prompt有哪些分类
1. Zero-shot
零样本提示,即直接给指令,不举例引导。其实这是最为能证明模型推理能力的情况,也是我们最理想的任务形式,我们让机器人做什么事,它就能直接做了。
例如:在机器没有专门针对进行股市描述分析训练,输出一份股市走势报告。
我们常发现这样的情况模型输出的效果不是很好,因此针对这样的情况,还会进一步补充更多的提示信息过渡。
2. Few-Shot
即提供给模型几个示例,实现上下文学习(ICL – In Context Learning),引导模型更好地输出任务。其中只提供了一个示例的是One-shot。
例如下图(与豆包对话),在这个Case中给出了两个示例,最后的输出也可以看到依赖了相关输入。
但Few shot仍然具有局限性,特别是对于推理性等复杂任务。
但大家发现,如果将问题分解成步骤,并向模型演示,可能会有所帮助,因此CoT(chain-of thought prompting)成为大家关注的方向,以解决复杂任务(例如算术、推理等)。
3. CoT(Chain of Thought)
简单来讲,为了更好地解决复杂问题,我们需要模型了解中间推导/计算的过程,因此思维链其实是多了中间的推导。但CoT对小模型作用不大,对复杂问题的性能增益更大。(模型参数达到10B有效果,100B效果明显)
1)Zero shot CoT
这种思维链非常的取巧,即不再给模型任何的示例,只是发出指令让它自己“一步步想”。即利用:Let’s think step by step 以及 Therefore,the answer is 等提示得出答案。
例如下图的情况,虽然模型回答错了;
当然如果矫正这个问题,我们可以再给出一些提示,继续给出推导思路 (不属于Zero Shot);
现在模型已回答正确,那么我们再提问一次,可以看到模型已经学到这样的推导逻辑。
2)Few shot CoT
是ICL(In-context learning)的一种特殊情况,将<Input,Output>扩充为<input,CoT,output>
Few shot CoT是在进行提示的时候,给出一个具体的推导示例,例如:
3)增强的CoT策略:Self- Consistency
这个名字看起来很复杂,翻译也比较复杂,利用自洽性提高语言模型中的思维链推理效果。其实你可以很简单的理解,就是模型通过了多种思维得出了多个结果,最后投票看哪个结果占比最多(可能也有其他维度),最后输出这个投票出来的结果。
例如刚刚的篮子数学题,豆包给了三种解法:
假设现在使用的是Self- Consistency,那么模型内部投票发现有两个结果的答案是4个水果,1个答案是5个水果,按照既定投票规则,最后输出的答案是4,就可以在很大程度上可以提高模型的效果。
针对思维链,行业内也整理了有效思维链的特点:
- 具有逻辑性,即思维链的逻辑相互连接,形成了一个完整的思考过程
- 具有全面性:即全面细致地思考问题,这里可以采用MECE法则(独立且穷尽每一个关键步骤)
- 可行性:每个步骤都可行
- 可验证性:每个步骤都可验证
二、如何构建Prompt
AIGC产品经理(及人工智能训练师)构建Prompt的能力是核心竞争力之一,Prompt影响最终模型输出,而使用者需要洞察当下产品需求。框架化、结构化组建Prompt可以更好地完成任务。
网上已经有很多介绍如何Prompt的体系和模板,但万变不离其宗,再多维的框架也有基础。针对文本类,我个人比较推荐QCIPSPE框架,大家可以根据不同的需求进行修改。注意,要避免说不做什么,直接说要做什么即可,做直接、具体、精确的输入。
- Q:Question type:问题类型,例如建议、查询、比较等
- C:Capacity and role :角色
- I:Insight:提供上下文
- P:Priorty::表明问题中的优先级
- S:Statement:需求澄清
- P:Personality:回答的风格
- E:Experiment:多个答案或者比较
三、Prompt需要避免的问题
- 过于精简的信息:如果BOT能根据缺失信息再触发多轮问询是最好的,但如果BOT不支持,可能就会出现回答过于宽泛或者不准确的问题。如框架所示,附上背景描述或示例参考有助于模型更好的输出。
- 过于修饰的词藻:复杂的语义反而会扰乱模型输出,Prompt简单、直接、完整,即可最高效的得到答复。
- 前后语义互斥:保证指令的准确性,不要将冲突信息放在一起。这里特殊地,尽量要求模型做什么,不要说不可以做什么。
对于生成类对话产品来说,Prompt决定了最后的输出。但是对于垂类场景来说,Prompt是用户对于BOT的指令,用户使用门槛是否过高还需提供框架精简用户输入,是否每个场景都合适生成式引入也需垂类产品考虑。
本文由 @JasmineWei 原创发布于人人都是产品经理。未经作者许可,禁止转载。
题图来自Unsplash,基于CC0协议。
该文观点仅代表作者本人,人人都是产品经理平台仅提供信息存储空间服务。
- 目前还没评论,等你发挥!