1. 提示词基本概念
# 1.1 什么是 Prompt
一言以蔽之:Prompt(提示词)是引导大语言模型对既定任务生成符合预期结果的语言文本。
# 1.2 Prompt 类型
# 1.2.1 指令型
直接告诉模型具体任务,适合解决明确问题。
示例:
请将以下文本翻译为英文:'我喜欢学习人工智能。'
# 1.2.2 开放式
提供灵感或自由回答的机会,适合生成创意内容。
示例:
写一篇关于未来世界的短故事。
# 1.2.3 补全型
提供部分输入,让模型补全剩余部分。
示例:
在未来,人类与人工智能将共存,人工智能将主要负责……
# 1.3 提示词工程
# 1.3.1 什么是提示词工程
上文已解释过什么是提示词,提示词工程则是设计和优化提示词,以有效引导大语言模型(LLM)执行特定任务的各种方法论。 通过精心构建提示词,用户可以控制模型的输出,提高生成内容的准确性、相关性和质量。
# 1.3.2 提升提示词效果的六大策略
指令清晰:确保提示词明确、详细,提供必要的上下文和细节,避免模糊或含糊不清的描述,有助于模型准确理解需求,减少误解或错误。
提供示例:在提示词中包含相关的参考资料或示例,帮助模型更好地理解任务要求,并生成符合预期的输出。
将复杂的任务拆分为简单的子任务:将复杂的请求分解为多个简单的步骤,逐步引导模型完成每个子任务,以提高整体准确性和效果。
给模型时间"思考":通过在提示词中加入"让我们一步步思考"(let's step by step)等引导语,鼓励模型进行逐步推理,减少直接给出错误答案的可能性。
使用外部工具:在需要时,结合外部工具(如代码解释器、检索系统)来辅助模型完成特定任务,提升整体性能。
系统地测试变更:在修改提示词或策略后,进行系统化的测试,评估其对模型输出的影响,确保改进措施的有效性。
# 1.4 提示词技术
# 1.4.1 零样本(Zero-Shot)提示
零样本学习指的是模型在没有看到任何具体示例的情况下完成任务的能力,即模型仅依靠训练时的的知识泛化能力来理解和执行任务。
示例:
将文本分类为中性、负面或正面。
文本:我认为这次假期还可以。
输出:中性
2
3
4
# 1.4.2 少样本(Few-Shot)提示
模型在看到少量示例后完成任务的能力,示例通常为提示词的一部分,旨在帮助模型更好的理解任务的上下文或期望的输出格式。
示例:
新闻标题:中国足球艰难前行
主题:足球
新闻标题:中美纪念"乒乓外交"50周年
主题:乒乓球
新闻标题:广东队加冕中国篮球比赛"11冠王"
主题:
输出:篮球
2
3
4
5
6
7
8
9
10
# 1.4.3 思维链(Chain-of-Thought)提示
通过要求模型在给出最终答案之前,展示中间思考过程(即逐步推理过程)来帮助模型生成更加准确和合理的答案以增强模型推理能力的提示词方法。
示例:
这些数字中的奇数相加的结果是偶数:4, 8, 9, 15, 12, 2, 1。
答:将所有奇数相加(9, 15, 1),得到 25。答案是 False。
这些数字中的奇数相加的结果是偶数:17, 10, 19, 4, 8, 12, 24。
答:将所有奇数相加(17, 19),得到 36。答案是 True。
这些数字中的奇数相加的结果是偶数:16, 11, 14, 4, 8, 13, 24。
答:将所有奇数相加(11, 13),得到 24。答案是 True。
这些数字中的奇数相加的结果是偶数:17, 9, 10, 12, 13, 4, 2。
答:将所有奇数相加(17, 9, 13),得到 39。答案是 False。
这些数字中的奇数相加的结果是偶数:15, 32, 5, 13, 82, 7, 1。
答:
输出:
答:将所有奇数相加(15, 5, 13, 7, 1),得到 41。答案是 False。
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 1.4.4 零样本思维链提示
不依赖任何额外训练数据的情况下,通过特定的提示文本,如在问题结尾附加"Let's think step by step"等,激发模型在没有示例的情况下生成推理链条,从而引导模型进行推理。
示例:
我去市场买了10个苹果。我给了邻居2个苹果和修理工2个苹果。然后我去买了5个苹果并吃了1个。我还剩下多少苹果?让我们逐步思考。
输出:10
2
3
注:这个示例由于各个大模型都变强了很多,即使不提示也会以思维链的方式来求解,看不到该提示词的效果
# 1.4.5 自动思维链
通过自动构建包含问题和推理链的演示,引导模型进行更有条理和逻辑性的思考,以提高模型在回答需要复杂推理的问题时的表现。
自动思维链主要有两个阶段:
问题聚类: 将给定数据集中的问题划分为几个簇,确保每个簇中的问题在语义和推理难度上具有相似性。这一步骤的目的是为了便于后续生成具有代表性的推理链,提高推理链的通用性和适用性,从而更好地引导模型进行推理。常见的聚类算法有K-means、层次聚类等。
演示抽样: 在每个簇中,选择一个具有代表性的问题作为演示问题,并为其生成推理链。通过这些演示问题和推理链,引导模型在处理新问题时能够模仿类似的推理过程,从而提高模型的推理能力。
优势:
- 减少人工设计演示的时间和精力
- 灵活应用于各种任务和领域
- 通过生成中间推理步骤,提高模型在复杂推理任务中的表现
局限性:
- 生成的推理链可能存在错误,但可通过增加演示的多样性来减轻影响
# 1.5 Prompt要素
提示词可以包含以下任意要素:
- 指令: 告诉模型要做什么
- 输入数据: 模型需要处理的具体信息
- 上下文信息: 提供必要的背景信息,帮助模型理解具体场景
- 输出指示: 对输出内容的格式、风格、长度等提出要求

# 1.6 如何编写有效的提示词
# 1.6.1 编写流程

# 1.6.2 关键点
编写有效提示词的关键在于以下四点:
- 明确性
- 简洁性
- 一致性: 同一个项目中保持提示词的风格和结构一致
- 针对性: 提示词要根据具体的应用场景和目标受众来设计
# 1.6.3 一些简单的小技巧
- 提供示例
- 提供多个示例
- 分步指令
- 明确限制条件: 字数、风格、格式等
- 避免模糊词汇: 可能、大概、也许等不确定性词汇
- 利用对比: 避免......,就像......
- 结构化提示词
- 结合具体场景
- 提供背景信息
- 适当使用工具
- 调整提示词长度: 根据要实现的功能确定恰好精确描述的长度,不宜过长或者过短
- 使用重复结构: 强调核心诉求