提示词工程是什么?

提示工程是什么
通过试错和迭代,找到大模型生成内容的最优解。是设计、优化、评估、调试的系统过程。
提示词工程师:
- 交付和测试提示词,让大模型产出最理想的成果
- 针对需求进行深入理解,然后提出解决方案,再从解决问题的过程中创造价值和记录最佳实践
大模型工作原理和提示词
LLM 是一个预测引擎,本质是基于概率学。接收顺序文本输入,预测下一个应该出现的 Token。LLM 被设计为反复执行此过程,将之前预测的 Token 添加到序列文本的末尾,以预测下一个 Token。
编写的提示词,是在引导 LLM 预测正确的 Token 序列。提示词技术具有普适性,但最佳的措辞和结构可能因模型的架构、训练数据和微调的差异而依赖模型本身,所以有效的提示工程需要了解目标模型的特性。
企业为什么需要提示词工程
普通用户与 AIChat 对话时可以很自由的进行调整询问内容,但产品化的 AI 工具一般会针对场景进行封装,所以企业级应用的产出内容需要做到相对的稳定,才会让用户感到对产品满意。 提示工程不是一次性任务,今天效果好的提示可能随着底层模型的演变而需要调整,所以持续测试和适应是必要的。
要素
指令 :想要模型执行的特定任务或指令
上下文:包含外部信息或额外的上下文信息,引导语言模型更好地响应
输入数据:用户输入的内容或者问题
输出数据:指定出的类型或格式
|
|
在上面的例子中,第一句是指令,第二句是输入数据,第三句是输出数据。本例子没有上下文。提示词所需的格式取决于想要完成的任务类型,并非所有元素都是必须的。
策略
- 编写清晰的说明
- 请简单回答 VS 请以高中生能听懂的话回答
- 请简短回答 VS 回答内容在100个字以内
- 总结不要太长 VS 用一句话总结
- 提供参考文本(能够减少幻觉、RAG是同样的原理)
- 将复杂任务拆分为更简单的子任务
- 可以让大模型辅助拆分任务
- 需要很长的对话的任务,可以过滤和总结之前的内容
- 给模型时间"思考"
- 让我们一步一步思考,确保内容的正确
- 使用外部工具
- 系统的测试变化
- 有可能提示词在某个单独的例子上性能很好,但在其他内容上性能很差,所以需要进行全面性测试
- 目的是确保这个提示词是最佳的,让这个改变对总体是正面的
框架
思维链
来自 2022 年的论文 Chain of ThoughtPrompting Elicits Reasoning in Large LanguageModels(《思维链提示引发大模型的推理能力》)。
是通过引导大模型进行逐步推理,使其在解决复杂问题时表现出更强的推理能力。结合链式提示有了产品:LangChain 和 Dify、Coze、N8N 的 WorkFlow
思维树
来自 2023 年的论文 Tree of Thoughts: Deliberate Problem Solving with Large Language Models(《思想树:用大型语言模型进行深思熟虑的解决问题》)
ToT 需针对不同的任务定义思维/步骤的数量以及每步的候选项数量。
假设三位不同的专家来回答这个问题。 所有专家都写下他们思考这个问题的第一个步骤,然后与大家分享。然后,所有专家都写下他们思考的下一个步骤并分享。以此类推,直到所有专家写完他们思考的所有步骤。只要大家发现有专家的步骤出错了,就让这位专家离开。 请问…
六顶思维帽方法、狼人杀方法
ReAct
来自于 2022 年的论文 ReAct:Synergizing Reasoning and Acting inLanguage Models (《ReAct:在语言模型中协同推理与行动》)。
使语言模型能够根据推理结果采取适当的行动,从而更有效的完成任务。分为两步和,Reasoning 和 Acting,既思考和执行。Acting 利用 Tool 的能力可以执行一些外部任务。
问题分解
来自于 2022 年的论文 Decomposed Prompting: A ModularApproach for Solving ComplexTasks”(《分析提示:一种求解复杂任务的模块化方法》)。
将复杂问题分解为多个子问题,然后逐步求解,最后整合结果。这种方法可以帮助语言模型更好的处理复杂的任务。
通用技巧
从简单开始
之所以被称为工程,是因为提示词设计是一个逐步迭代的过程,需要大量的实验才能获得最佳的结果。
通常具体性、简洁性和简明性通常会带来更好的结果。面对一个复杂的大任务时,尝试将任务分解为更简单的子任务,并随着结果的改善逐步构建,避免在提示词设计过程中一开始就添加过多的复杂性。
奥卡姆剃刀原理(简单有效原理):如无必要,勿增实体
指令
通过大量的实验以找出最有效的方法,以不同的关键词(keywords)、上下文(contexts)和数据(data)试验不同的指令(instruction),看看什么样的提示词最适合当前的特定用例和任务。
上下文越具体和任务越相关效果越好(大模型是基于概率推测和生成和产出内容的)
有些人的建议:
- 将指令放在提示的开头
- 使用 ### 这样的清晰分隔符来指令和上下文
避免不明确
向大模型询问了解提示词,以下都能得到结果
解释提示工程的概念。保持解释简短,只有几句话,不要过于描述。
使用 2-3 句话向高中学生解释提示工程的概念。
做什么还是不做什么
以下是向客户推荐电影的代理程序。 不要询问兴趣。不要询问个人信息。
你是向客户推荐电影的代理程序。代理负责从全球热门电影中推荐电影。你应该避免询问用户的偏好并避免询问个人信息。如果没有电影推荐,应该回答“抱歉,今天找不到电影推荐。
具体提示技巧
零样本提示
少样本提示
在复杂任务上,零样本表现不佳。通过提供少量提示能实现更好的生成性能。
对于更加困难的任务可以尝试增加更多的样本。但在复杂的推理任务中可能不具有良好的性能。
- 示例应多样化、高质量且书写良好。一个小错误就可能混淆模型并导致不希望的输出。
- 如果想生成对各种输入都具有鲁棒性的输出,那么在示例中包含边缘情况非常重要。
边缘情况是那些不寻常或意外的输入,但模型仍应能够处理。
链式思考(COT)
可以通过结合少样本提示,获得更好的结果
这组数中的奇数加起来是偶数:4、8、9、15、12、2、1。 A:将所有奇数相加(9、15、1)得到25。答案为False。 这组数中的奇数加起来是偶数:17、10、19、4、8、12、24。 A:将所有奇数相加(17、19)得到36。 答案为True。 这组数中的奇数加起来是偶数:16、11、14、4、8、13、24。 A:将所有奇数相加(11、13)得到24。 答案为True。 这组数中的奇数加起来是偶数:17、9、10、12、13、4、2。 A:将所有奇数相加(17、9、13)得到39。 答案为False。 这组数中的奇数加起来是偶数:15、32、5、13、82、7、1。 A:
零样本思维链(Zero-Shot-CoT)
我去市场买了10个苹果。我给了邻居2个苹果和修理工2个苹果。然后我去买了5个苹果并吃了1个。我还剩下多少苹果?让我们逐步思考。
自动思维链(Auto-CoT)
- 阶段一:问题聚类
- 阶段二:演示抽样
https://github.com/amazon-science/auto-cot
思维链需要手工制作有效且多样化的例子,可能导致次优解。自动思维链先将问题划分为几个聚类,然后从聚类中进行一个具有代表性的问题,再使用带有简单启发的零样本思维链生成推理链。
自我一致性
通过少样本 CoT 采样多个不同的推理路径,并使用生成结果选择最一致的答案。
在高温度值的设定下,通过多数服从少数的方式,选出概率最高的结果。
Q:林中有15棵树。林业工人今天将在林中种树。完成后,将有21棵树。林业工人今天种了多少棵树? A:我们从15棵树开始。后来我们有21棵树。差异必须是他们种树的数量。因此,他们必须种了21-15 = 6棵树。答案是6。 Q:停车场有3辆汽车,又来了2辆汽车,停车场有多少辆汽车? A:停车场已经有3辆汽车。又来了2辆。现在有3 + 2 = 5辆汽车。答案是5。 Q:Leah有32块巧克力,她的姐姐有42块。如果他们吃了35块,他们总共还剩多少块? A:Leah有32块巧克力,Leah的姐姐有42块。这意味着最初有32 + 42 = 74块巧克力。已经吃了35块。因此,他们总共还剩74-35 = 39块巧克力。答案是39。Q:Jason有20个棒棒糖。他给Denny一些棒棒糖。现在Jason只有12个棒棒糖。Jason给Denny多少棒棒糖? A:Jason有20个棒棒糖。因为他现在只有12个,所以他必须把剩下的给Denny。他给Denny的棒棒糖数量必须是20-12 = 8个棒棒糖。答案是8。 Q:Shawn有五个玩具。圣诞节,他从他的父母那里得到了两个玩具。他现在有多少个玩具? A:他有5个玩具。他从妈妈那里得到了2个,所以在那之后他有5 + 2 = 7个玩具。然后他从爸爸那里得到了2个,所以总共他有7 + 2 = 9个玩具。答案是9。Q:服务器房间里有9台计算机。从周一到周四,每天都会安装5台计算机。现在服务器房间里有多少台计算机? A:从周一到周四有4天。每天都添加了5台计算机。这意味着总共添加了4 * 5 =20台计算机。一开始有9台计算机,所以现在有9 + 20 = 29台计算机。答案是29。 Q:Michael有58个高尔夫球。星期二,他丢失了23个高尔夫球。星期三,他又丢失了2个。星期三结束时他还剩多少个高尔夫球? A:Michael最初有58个球。星期二他丢失了23个,所以在那之后他有58-23 = 35个球。星期三他又丢失了2个,所以现在他有35-2 = 33个球。答案是33。 Q:Olivia有23美元。她用每个3美元的价格买了五个百吉饼。她还剩多少钱?A:她用每个3美元的价格买了5个百吉饼。这意味着她花了15美元。她还剩8美元。 Q:当我6岁时,我的妹妹是我的一半年龄。现在我70岁了,我的妹妹多大? A:
生成知识提示
输入:希腊比墨西哥大。 知识:希腊的面积约为131,957平方公里,而墨西哥的面积约为1,964,375平方公里,使墨西哥比希腊大了1,389%。 输入:眼镜总是会起雾。 知识:当你的汗水、呼吸和周围的湿度中的水蒸气落在冷的表面上,冷却并变成微小的液滴时,会在眼镜镜片上产生冷凝。你看到的是一层薄膜。你的镜片相对于你的呼吸会比较凉,尤其是当外面的空气很冷时。 输入:鱼有思考能力。 知识:鱼比它们看起来更聪明。在许多领域,如记忆力,它们的认知能力与或超过非人类灵长类动物等“更高级”的脊椎动物。鱼的长期记忆帮助它们跟踪复杂的社交关系。 输入:一个人一生中吸烟很多香烟的常见影响是患肺癌的几率高于正常水平。 知识:那些一生中平均每天吸烟不到一支香烟的人,患肺癌的风险是从不吸烟者的9倍。 在每天吸烟1到10支香烟之间的人群中,死于肺癌的风险几乎是从不吸烟者的12倍。输入:一块石头和一颗卵石大小相同。 知识:卵石是一种根据Udden-Wentworth沉积学尺度的颗粒大小为4到64毫米的岩屑。卵石通常被认为比颗粒(直径2到4毫米)大,比卵石(直径64到256毫米)小。 输入:高尔夫球的一部分是试图获得比其他人更高的得分。 知识:
问题:高尔夫球的一部分是试图获得比其他人更高的得分。是或否? 知识:高尔夫球的目标是以最少的杆数打完一组洞。一轮高尔夫球比赛通常包括18个洞。每个洞在标准高尔夫球场上一轮只打一次。每个杆计为一分,总杆数用于确定比赛的获胜者。 解释和答案:
链式提示(Prompt Chaining)
将大问题分解成子任务,将子任务的提示词提供给模型,得到的结果作为新的提示词的一部分。 例子:Dify 中的节点和连线。
可以完成很复杂的任务,提高性能。另外的优点:
- 提高 LLM 应用的透明度,增加控制性和可靠性。
- 更容易地定位模型中的问题,分析并改进需要提高的不同阶段的性能
提示词:
你是一个很有帮助的助手。你的任务是根据文档回答问题。第一步是从文档中提取与问题相关的引文,由####分隔。请使用<quotes></quotes>输出引文列表。如果没有找到相关引文,请回应“未找到相关引文!”。
####
{{文档}}
####
输出:
根据从文档中提取的相关引文(由<quotes></quotes>分隔)和原始文档(由####分隔),请构建对问题的回答。请确保答案准确、语气友好且有帮助。
####
{{文档}}
####
<quotes> - Chain-of-thought (CoT) prompting[27]
- Generated knowledge prompting[37]
- Least-to-most prompting[38]
- Self-consistency decoding[39]
- Complexity-based prompting[41]
- Self-refine[42]
- Tree-of-thought prompting[43]
- Maieutic prompting[45]
- Directional-stimulus prompting[46]
- Textual inversion and embeddings[59]
- Using gradient descent to search for prompts[61][62][63][64]
- Prompt injection[65][66][67]
</quotes>
工具
提示词样例 https://www.aishort.top/
提示词生成 https://www.aipromptgenerator.net/
提示词交易平台