提示工程
提示词:
我们通过简单的提示词(Prompts)可以获得AI返回的大量结果,但这些结果的质量和生成预期与使用的提示词有很大关系,这也是产生提示工程的原因。
一个提示词可以包含传递到模型的_指令_或_问题_等信息,也可以包含其他详细信息,如_上下文_、_输入_或_示例_等。您可以通过这些元素来更好地指导模型,并因此获得更好的结果。
提示词要素:
指令:想要模型执行的特定任务或指令。
上下文:包含外部信息或额外的上下文信息,引导语言模型更好地响应。
输入数据:用户输入的内容或问题。
输出指示:指定输出的类型或格式。
注意,提示词所需的格式取决于您想要语言模型完成的任务类型,并非所有以上要素都是必须的。
设计提示的通用技巧
指令
用命令来指示模型执行各种简单任务,例如“写入”、“分类”、“总结”、“翻译”、“排序”等,从而为各种简单任务设计有效的提示。可以使用一些清晰的分隔符,如“###”,来分隔指令和上下文。
具体化
对您希望模型执行的指令和任务非常具体。提示越具体和详细,结果就越好。当您有所期望的结果或生成样式时,这一点尤为重要。
避免不精确
提示设计最好具体和直接,非常类似于有效的沟通越直接,信息传递就越有效。
更多技巧参考
零样本提示(zero-shot prompting)
YOU:<问题>?
Chatgpt:<Answer....>
YOU: 翻译"Transformer"
Chatgpt:"Transformer" 可以翻译成 "变压器" 或 "转换器",具体的含义取决于上下文。此外,"Transformer" 也可以指代一种神经网络模型,通常不被翻译,保持原文 "Transformer"
当零样本不起作用时,可以在提示中提供演示或示例,这就引出了少样本提示
小样本提示(Few-shot Prompting)
虽然大型语言模型展示了惊人的零样本能力,但在使用零样本设置时,它们在更复杂的任务上仍然表现不佳。少样本提示可以作为一种技术,以启用上下文学习。
"你是一个英语单词查询助手,每当用户发送一个英语单词给你,你都要以固定格式响应用户, 如果用户发给你的不是一个单词,回复 'invalid token'"
单词回复格式如下:
run [/rʌn/]
n. 奔跑;竞赛;连续的演出\nHe went for a run after work. (他下班后去跑步了)
v. 奔跑;运行\nI like to run in the park every morning. (我喜欢每天早上在公园里跑步)"
adj. 连续的;流畅的\nThis printer is really fast and runs smoothly. (这台打印机速度非常快,而且运行流畅)"
总的来说,提供示例对解决某些任务很有用。当零样本提示和少样本提示不足时,应该考虑微调模型或者其它方法。
链式思考(CoT)提示
链式思考(CoT)提示通过中间推理步骤实现了复杂的推理能力。您可以将其与少样本提示相结合,以获得更好的结果,以便在回答之前进行推理的更复杂的任务。
输入:
这组数中的奇数加起来是偶数:4、8、9、15、12、2、1。
A:将所有奇数相加(9、15、1)得到25。答案为False。
这组数中的奇数加起来是偶数:15、32、5、13、82、7、1。
A:
Chatgpt:
将所有奇数相加(15、5、13、7、1)得到41。答案为False。
这里还有一个技巧,在提示时输入“think step by step”,“让我们逐步思考”,可以提高推理的准确性。
自我一致性
自我一致性旨在“替换链式思维提示中使用的天真贪婪解码方法”。其想法是通过少样本CoT采样多个不同的推理路径,并使用生成结果选择最一致的答案。这有助于提高CoT提示在涉及算术和常识推理的任务中的性能。
现在Chatgpt3.5模型的推理能力已经提高了,想了解更多请参考 这里。