Prompt Engneering

132 阅读3分钟

近期在进行提示词优化相关工作,感觉没有什么头绪,于是在工作完成过程中就Prompt Engneering记录一些浅薄的思考。

下文中所有数据均是经过微调的本地部署的GPT2模型跑出来的结果,可能泛用性一般,参考价值不大,就是我自娱自乐罢了。

提示效果(少样本)

直接表达

效果:1分。(效果无比的差,确实不能直接说)

分部表达

效果:5~8分。(有的分部效果还行,有的分布效果不及格)

提示-上下文-例子-输入-输出

效果:6分。(整体还行,及格水平,输出基本满足格式)

任务描述-背景信息-示范学习-数据加载-结果格式

效果:8分。(效果不错,输出都满足格式)

指令-上下文-输入数据-输出指示

效果:5分。(理解错的偏多)

提示技术

零样本提示

没有向模型提供任何示例,进行提示。

至少在我用来效果不好,但是2109.01652.pdf (arxiv.org)证明是可以通过调整变好的,但是我认为有点收获与付出不成正比了,泛用性实在太差。

少样本提示

提供少量样本,进行提示。

这是我较为普遍的提示方法,而且可以先通过基本无提示挑选出“典型”案例,用典型案例和不敏感案例混合为少样本,可以很好地完成提示工作。

但是少样本提示局限于样本过少,在处理较复杂任务时,会出现乱回答无法处理的情况。

思维链(Chain of Thought Prompting)

思维链就是优化少样本提示无法解决复杂问题的一种方法,思维链通过中间的推理过程实现了由简单结合成复杂的过程。

并且还有自动思维链技术,[2210.03493] Automatic Chain of Thought Prompting in Large Language Models (arxiv.org),这能生成思维链,很好地便利了思维混乱的我。

流式输出

将结果作为新提示词的一部分继续迭代,进行提示。

这种效果挺好的,并且泛用性也还不错,因为大部分复杂问题都是一个个简单问题的集合,并且这样把中间数存储下来,进行逻辑推理和后期归因都会方便很多,对于工程问题来说很适用。

自动推理并使用工具(Automatic Reasoning and Tool-use)

接到一个新任务的时候,从任务库中选择多步推理和使用工具的示范。在测试中,调用外部工具时,先暂停生成,将工具输出整合后继续接着生成。

看了思路,感觉没什么维妮塔,但没用过。

总结

求大神只条明路,感觉大的方法好选,但是具体的提示词是真的恶心,有些时候一个单词的区别效果差挺多的,不知道这个有没有什么通解,求指点!!!