Skip to content

提示工程

1. 大语言模型参数设置

1.1 Temperature(温度)

temperature 是一个控制模型输出随机性的参数。较高的温度值会使生成的文本更加随机和多样化,而较低的温度值则会使输出更具确定性和一致性。

  • 低值 (0.1-0.5):输出确定性高,适合事实问答、技术文档等严谨场景
  • 中值 (0.5-0.7):平衡创造性与逻辑性,适用于通用对话
  • 高值 (0.7-1.0+):激发创造力,适合诗歌生成、脑洞创意

1.2 Top_p(核采样)

top_p 是一种采样方法,控制在生成下一个词时考虑的候选词的范围。它通过累积概率来选择词汇,只有当累积概率达到设定的阈值 p 时,才会将这些词作为候选词。

  • 典型值 (0.7-0.95):保留概率质量前70%-95%的词汇

1.3 Max Length(最大长度)

调整 Max length 来控制大模型生成的 token 数。指定 Max Length 有助于防止大模型生成冗长或不相关的响应并控制成本。

1.4 Stop Sequences(停止序列)

Stop Sequences 是一个用于指定模型停止生成文本的序列。当模型生成的文本包含 Stop Sequences 中的任意一个序列时,模型会立即停止生成并返回已生成的文本。

常用场景

  • "\n":限制单段落输出
  • "###":多轮对话分隔符
  • ["。", "!", "?"]:中文自然断句

1.5 Frequency Penalty(频率惩罚)

Frequency Penalty 是一个用于控制模型生成文本中重复词汇的参数。较高的频率惩罚值会使模型更倾向于生成不常见的词汇,从而增加多样性。

  • 正值(0.1-1.0):降低已出现词汇的概率,解决重复用词问题
  • 负值:增强重复可能性(特殊场景使用)

1.6 Presence Penalty(存在惩罚)

对已出现的语义主题进行惩罚,强制模型探索新概念领域。其核心是通过隐式识别文本中的话题嵌入向量,降低相关语义簇的生成概率。

  • 典型设置 (0.2-0.8):强制模型引入新话题,避免围绕单一主题循环
  • 与Frequency区别:惩罚对象是语义概念而非具体词汇

2. 提示词要素

系统提示词的定义通常涉及到三大要素:角色、上下文和任务,如果可以构造好提示词的结构,一般都可以获得比较不错的结果。

3. 提示技巧

3.1 零样本提示(Zero-Shot Prompting)

原理:模型仅依靠预训练知识直接生成答案,无需示例。
方法:直接提问,不提供任何上下文或示例。
效果:快速响应,适用于简单任务;复杂任务可能不准确。
示例

提示:"法国的首都是哪里?"
输出:"巴黎"

3.2 少样本提示(Few-Shot Prompting)

原理:提供少量示例引导模型理解任务模式。
方法:在问题前添加2-5个输入-输出示例。
效果:提升复杂任务准确性,降低模型幻觉风险。
示例

提示:
"苹果 -> 水果 | 汽车 -> 交通工具 | 钢琴 -> ?"
输出:"乐器"

3.3 零样本思维链(Zero-Shot CoT)

原理:强制模型分步推理,通过指令(如"逐步思考")激活逻辑能力。
方法:在问题末尾添加"请逐步推理:""Let's think step by step."
效果:显著提升数学/逻辑问题准确率。
示例

提示:"若一个篮子里有5个苹果,吃掉2个,又加入3个梨,现在有多少水果?请逐步思考。"
输出:"1. 初始苹果:5个 → 2. 吃掉2个:5-2=3苹果 → 3. 加入3个梨 → 4. 总计水果:3苹果+3梨=6个"

3.4 手动思维链(Manual CoT)

原理:人工设计推理步骤示例,教会模型解决同类问题。
方法:提供完整的逐步推理示例,再提问新问题。
效果:精准控制推理路径,适合专业领域(如法律/医学)。
示例

提示:
"示例:问题:10kg物体以2m/s²加速,需多少力?解答:F=ma → m=10kg, a=2m/s² → F=10×2=20N"
"新问题:5kg物体以4m/s²加速,需多少力?"
输出:"F=ma=5×4=20N"

3.5 自动思维链(Auto-CoT)

原理:用大模型自动生成推理示例,替代人工编写。
方法:输入问题后,追加指令如"生成解决此问题的推理步骤示例"
效果:节省时间,适用于动态问题;需模型强推理能力。
示例

提示:"如何计算圆的面积?首先生成一个推理示例:"
输出:"示例:问题:半径3cm的圆面积?解答:1. 公式S=πr² → 2. r=3 → 3. S=3.14×9≈28.26cm²"

3.6 自我一致性(Self-Consistency)

原理:多次生成不同答案路径,投票选择最高频结果。
方法:设置temperature>0生成多个回复,或直接要求"生成3种解法并选最优"
效果:减少随机错误,提升可靠性(尤其数学问题)。
示例

提示:"18÷3×(2+1)=?生成三种计算方案并投票:"
输出:
"方案1:18÷3=6, 6×3=18 → 方案2:2+1=3, 3×3=9, 18÷9=2 → 方案3:括号优先,(2+1)=3, 18÷3=6, 6×3=18"
"投票结果:方案1和3正确(18),占比66%"

3.7 生成知识提示(Generated Knowledge Prompting)

原理:让模型先生成相关知识,再基于知识回答问题。
方法:拆分指令为两步:"首先生成关于X的知识""基于以上知识回答Y问题"
效果:深度整合信息,适合开放域问答。
示例

提示:
"步骤1:生成量子纠缠的三条关键知识"
"步骤2:解释量子纠缠如何实现超距通信"
输出:
"知识:1. 粒子状态瞬时关联 2. 测量一方决定另一方 3. 不传递信息"
"解释:因无法控制粒子状态,不能传递信息,故不违反相对论"

3.8 链式提示(Prompt Chaining)

原理:将复杂任务分解为子任务链,分步解决。
方法:用"首先...其次...最后..."明确步骤,或多次交互。
效果:降低任务复杂度,避免模型迷失方向。
示例

提示:
"任务:写一篇气候变化短文。步骤:1. 列出3个主要原因 → 2. 给出2个解决方案 → 3. 合成200字短文"
输出:
"原因:化石燃料、 deforestation、工业排放"
"方案:可再生能源、碳捕获"
"短文:气候变化主要由...解决需全球合作..."

3.9 思维树(Tree of Thoughts, ToT)

原理:模拟多路径决策树,评估不同推理分支。
方法:要求模型"列出所有可能解法→评估优劣→选择最优"
效果:解决高不确定性问题(如策略制定),需强模型支持。
示例

提示:
"问题:减少城市交通拥堵的方案"
"步骤:1. 列出5种方案 2. 分析各方案成本/效果 3. 推荐最佳方案"
输出:
"方案:限行(成本低但效果有限)、地铁扩建(效果久但成本高)..."
"推荐:智能交通系统+公交优先(平衡成本与效果)"

3.10 检索增强生成(Retrieval-Augmented Generation, RAG)

原理:从外部知识库检索信息,结合生成回答。
方法:系统自动检索知识库,或手动提供引用"基于以下资料回答:[文档]"
效果:解决知识截止问题,提升事实准确性。
示例

提示:
"资料:2023年诺贝尔医学奖授予mRNA疫苗研究者"
"问题:2023年诺贝尔医学奖得主的贡献是什么?"
输出:"开发mRNA疫苗技术,革新传染病防控"

3.11 ReAct框架

原理:交替执行推理(Reason)和行动(Act,如搜索/计算)。
方法:结构化指令如"思考:... 行动:搜索[X]... 最终答案:"
效果:动态整合工具(如计算器/搜索引擎),适合实时数据任务。
示例

提示:
"思考:需比较iPhone15和三星S23价格 → 行动:搜索最新报价 → 发现iPhone15 $799, S23 $699 → 答案:三星便宜$100"

3.12 Reflexion

原理:生成结果后自我批判并修正错误。
方法:追加指令"检查上述答案的潜在错误并改进"
效果:迭代提升质量,减少事实/逻辑错误。

持续更新中~