提示工程 Prompt Engineering

提示工程(Prompt Engineering)是一门较新的学科,关注提示词开发和优化,帮助用户将大语言模型(Large Language Model, LLM)用于各场景和研究领域。 掌握了提示工程相关技能将有助于用户更好地了解大型语言模型的能力和局限性。

本笔记主要以API调用的LLM为例,当然也适用于对话LLM

1. 模型设置

  1. Temperature (温度)

这是最常用的参数,决定了模型的“创造力”。

  • 低温度(如 0.1 - 0.3): 模型会变得非常保守、严谨。它每次都选那个概率最高的词,说话像个老学究,给出的答案准确但枯燥。

  • 高温度(如 0.8 - 1.0): 模型会变得更有想象力、更随机。它会尝试一些不那么常用的词,说话像个艺术家,适合写诗或写故事,但也容易胡言乱语(幻觉)。

  1. Top_p (核采样)

这和温度类似,也是控制“多样性”的,但原理像是个“筛选门槛”。

  • 想象模型脑子里有一堆备选词。如果 Top_p 设为 0.1,它只会在概率加起来达到前 10% 的那几个“精英词”里选。

  • 如果 Top_p 是 0.9,它会考虑几乎所有的可能性。

  • 建议: 模型设置页面 提到,通常在 TemperatureTop_p二选一进行调整即可,不要两个都动。

  1. Max Length (最大长度)

这很好理解,就是“限字数”。

  • 防止模型说得太多停不下来,或者为了节省你的 API 额度(毕竟按字符扣钱)。
  1. Stop Sequences (停止序列)

这是给模型发的“闭嘴信号”。

  • 你可以设置一个特定的符号(比如 .Done),一旦模型写到这个符号,它就立刻打住,后面不写了。这在控制模型生成特定格式(如列表)时非常有用。
  1. Penalty (惩罚项):让模型别“碎碎念”

有时候模型会陷入死循环,不停重复同一句话。这时候就需要这两个“紧箍咒”:

  • Frequency Penalty (频率惩罚):

    • 作用: 某个词出现的次数越多,模型就越会被“惩罚”而不去用它。

    • 效果: 强制模型多换点词,别老是重复同样的词汇。

  • Presence Penalty (存在惩罚):

    • 作用: 只要这个词出现过,不管几次,都会被惩罚。

    • 效果: 引导模型去聊一些之前没聊过的新话题,增加对话的广度。

2. 提示词要素

  • 指令:想要模型执行的特定任务或指令。

  • 上下文:包含外部信息或额外的上下文信息,引导语言模型更好地响应。

  • 输入数据:用户输入的内容或问题。

  • 输出指示:指定输出的类型或格式。

3. 设计提示的通用技巧

  1. 从简单开始
    • 在开始设计提示时,你应该记住,这实际上是一个迭代过程,需要大量的实验才能获得最佳结果
  2. 具体性
    • 要非常具体地说明你希望模型执行的指令和任务。提示越具描述性和详细,结果越好。特别是当你对生成的结果或风格有要求时,这一点尤为重要。
  3. 避免不明确
    • 清楚要使用多少句子以及什么风格。更好的提示应当是非常具体、简洁并且切中要点的。
  4. 做什么还是不做什么?
    • 设计提示时的另一个常见技巧是避免说不要做什么,而应该说要做什么。这样(说要做什么)更加的具体,并且聚焦于(有利于模型生成良好回复的)细节上。

提示技术

1. 零样本提示

2. 少量样本提示

3. Chain-of-Thought Prompting(CoT)

  • 链式思考(CoT)提示
    ![[cot.png]]

  • 零样本 COT 提示
    ![[zero-cot.png]]

  • 自动思维链(Auto-CoT)
    ![[auto-cot.png]]

4. 自我一致性

  • 通过少样本 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:

当我6岁时,我的妹妹是我的一半年龄,也就是3岁。现在我70岁了,所以她是70-3 = 67岁。答案是67。
当叙述者6岁时,他的妹妹是他年龄的一半,也就是3岁。现在叙述者70岁了,他的妹妹应该是70-3 = 67岁。答案是67。
当我6岁时,我的妹妹是我的一半年龄,也就是3岁。现在我70岁了,所以她是70/2 = 35岁。答案是35。

5. 生成知识提示

  • 模型是否也可以在做出预测之前用于生成知识呢?这就是 Liu 等人 2022 的论文所尝试的——生成知识以作为提示的一部分。特别是,这对于常识推理等任务有多大帮助?
    问题:高尔夫球的一部分是试图获得比其他人更高的得分。是或否?

知识:高尔夫球是一项精密的球杆运动,竞争选手(或高尔夫球手)使用许多类型的球杆,用最少的杆数将球打入球场上一系列洞中。目标是以最低的分数完成比赛,该分数是通过将每个洞上所用的杆数相加计算出来的。得分最低的选手赢得比赛。

解释和答案:

6. Prompt Chaining链式提示

  • 为了提高大语言模型的性能使其更可靠,一个重要的提示工程技术是将任务分解为许多子任务。 确定子任务后,将子任务的提示词提供给语言模型,得到的结果作为新的提示词的一部分。 这就是所谓的链式提示(prompt chaining),一个任务被分解为多个子任务,根据子任务创建一系列提示操作。
    • Example 1: Summarize an article → Critique the summary → Refine based on feedback.
      例 1 :总结一篇文章 → 评价总结 → 根据反馈进行改进。
    • Example 2: Generate a code → Identify bugs or inefficiencies → Refactor the code.
      示例 2 :生成代码 → 识别错误或低效之处 → 重构代码。

7. 思维树ToT

  • 提示词类似如下:
    假设三位不同的专家来回答这个问题。
    所有专家都写下他们思考这个问题的第一个步骤,然后与大家分享。
    然后,所有专家都写下他们思考的下一个步骤并分享。
    以此类推,直到所有专家写完他们思考的所有步骤。
    只要大家发现有专家的步骤出错了,就让这位专家离开。
    请问...

8. RAG

  • RAG 会接受输入并检索出一组相关/支撑的文档,并给出文档的来源(例如维基百科)。这些文档作为上下文和输入的原始提示词组合,送给文本生成器得到最终的输出。这样 RAG 更加适应事实会随时间变化的情况。这非常有用,因为 LLM 的参数化知识是静态的。RAG 让语言模型不用重新训练就能够获取最新的信息,基于检索生成产生可靠的输出。

9. 自动推理并使用工具 (ART)

  • ART(Automatic Reasoning and Tool-use)的工作原理如下:
    • 接到一个新任务的时候,从任务库中选择多步推理和使用工具的示范。
    • 在测试中,调用外部工具时,先暂停生成,将工具输出整合后继续接着生成。
  • ART 改变了以往需要为每个任务手动编写推理步骤或工具调用脚本的模式。它的运作流程通常包含以下步骤:
    • 示范检索(Select Examples): 当面对一个新任务时,系统会从一个预先准备好的“任务库”中,检索出逻辑最相关的多步推理和工具使用案例。
    • 生成暂停与整合(Generation & Tool Call): 在推理过程中,如果模型需要调用外部工具(如计算器、搜索引擎等),它会暂停文本生成。
    • 工具反馈循环: 系统运行该工具,将获取的结果整合回 Prompt 中,然后让模型继续基于新信息进行后续的推理生成。
  • ART 实际上是为 LLM 配备了一个“图书馆”和一个“工具箱”,让模型能够像人类一样,先查阅类似案例,再动手操作工具,最后得出逻辑严密的结论。

10. 自动提示工程师(APE)

  • 用一个 LLM 来为另一个任务生成、搜索和优化提示词。
  • APE运行通常有三步:
      • 生成候选指令(Proposal): 你给 AI 几个“输入-输出”的例子(比如:输入“猫”,输出“Cat”)。然后让一个推理模型去猜:“如果要实现这个效果,我应该下达什么样的指令?”它会生成一堆备选指令,如“请翻译成英文”、“转为英文单词”等
    • 评分与筛选(Scoring): 使用这些生成的指令去运行目标模型,并根据结果的准确性计算评估分数(通常基于对数概率 Log Probability)。
    • 重采样与进化(Resampling): 挑选出高分的指令,让模型基于这些好指令再生成类似的变体,直到找到最优解。

11. Active-Prompt

  • 让模型自己挑出它“拿不准”的难题,再由人类针对性地进行辅导。
  • 步骤:
    • 系统首先向模型输入一系列待解决的问题(不带案例,或者带少量通用案例)。针对同一个问题,让模型生成 $k$ 个不同的答案(基于不同的推理路径)。
    • 系统根据“不确定性”对所有问题进行排序,挑选出那些模型表现最挣扎、最拿不准的问题(即最不确定的问题)。
    • 将这些筛选出来的“难题”交给人类专家。人类为这些特定的难题编写高质量的、逻辑严密的思维链(CoT)推理过程
    • 将这些新鲜出炉的人工标注案例作为新的示范(Exemplars),重新加入到 Prompt 中。模型有了这些针对性极强的“错题解析”后,再去处理类似的任务,准确率会显著提升。
  • Active-Prompt就像是给 AI 准备了一个“错题本”,它会自动找出自己不会的题,请教人类老师给出标准解析,然后举一反三。

12. 方向性刺激提示(DSP)

  • 不仅给模型一个任务,还会给它一个刺激信号(Stimulus),告诉它在生成过程中应该重点关注哪些信息。
    • 策略模型 (Policy LM): 一个体量较小的模型(如 T5),专门负责生成“关键词”或“提示线索”。
    • 目标模型 (Target LLM): 一个强大的黑盒模型(如 GPT-3.5/4),它接收原始输入和策略模型生成的“刺激信号”,然后输出最终结果。

13. PAL(程序辅助语言模型)

  • 让大语言模型(LLM)负责“逻辑拆解”,而让编程语言(如 Python)负责“具体计算”。

  • PAL 的工作流程

    1. 输入问题: 用户提出一个涉及计算或逻辑的问题(例如:“我出生于 25 年前,今天是 2023 年 2 月 27 日,我的出生日期是?”)。
    2. 生成程序: LLM 不直接回答日期,而是生成一段 Python 代码,利用 datetime 等库来定义变量并进行运算。
    3. 外部执行: 系统自动运行这段代码。
    4. 输出结果: 将代码运行后的准确数值作为最终答案返回。

14. ReAct 框架

  • 它的核心灵感来源于人类在解决新任务时“边想边做”的能力:我们不仅会进行逻辑推理,还会通过实际行动获取新信息,并根据新信息修正后续的推理。
  • ReAct 引导模型交替执行以下两个步骤:
    • 推理 (Reasoning): 模型生成“思考轨迹”(Thoughts),解释它当前正在做什么,或者下一步需要获取什么信息。这有助于模型保持逻辑的一致性并处理异常情况。
    • 行动 (Acting): 模型执行具体的“操作”(Actions),比如在 Wikipedia 中搜索信息、调用计算器或与外部环境交互。

15. 自我反思(Reflexion)

  • Reflexion 的三大核心组件

    该框架通过三个模型的协同工作来模拟人类“反思-改进”的过程:

    • 参与者(Actor): 负责执行任务。它基于当前状态生成动作(Action),通常使用 ReAct 框架 这种“思考-行动”模式。
    • 评估者(Evaluator): 负责打分。它观察参与者的输出,并给出一个评价信号(如二元正误或奖励分数)。
    • 自我反思(Self-Reflection): 负责总结。这是最关键的一步,LLM 会分析“轨迹(过去的操作)”和“奖励信号”,写下一段口头反馈(例如:“我不应该在步骤3使用这个函数,因为它会导致溢出”),并将此存入长期记忆中。
    1. 工作流程
    2. 定义任务: 智能体接收指令。
    3. 生成轨迹: 参与者尝试完成任务。
    4. 评估: 评估者发现任务失败或效果不佳。
    5. 执行反思: 自我反思模型分析失败原因,生成改进建议。
    6. 迭代: 参与者带着这些“反思记忆”重新开始,避开之前的坑。

16. 多模态思维链 (Multimodal Chain-of-Thought, Multimodal CoT)

  • 两阶段框架(Two-Stage Framework)
    • 第一阶段:理由生成 (Rationale Generation) 模型不急于给出答案,而是将文本信息和图像信息融合,先生成一段“理由(Rationale)”。这段理由解释了图像中观察到了什么,以及这些信息与问题有什么逻辑关系。
    • 第二阶段:答案推断 (Answer Inference) 模型将原始问题、图像信息以及第一阶段生成的“理由”结合在一起,最终推导出准确的答案。

提示工程 Prompt Engineering
https://github.com/George-102/George-102.github.io/2026/05/10/提示工程-Prompt-Engineering/
作者
Chris
发布于
2026年5月10日
更新于
2026年5月10日
许可协议