一、提示词工程简介
1) 大语言模型设置
模型设置决定了回答的稳定性、长度和多样性。实践里建议先固定任务目标,再一次只调整一个关键参数,便于定位效果变化。
- Temperature:越低越稳定、越高越发散。事实问答、抽取、校对类任务建议偏低;创意生成可适当提高。调小temperature实质上是在增加其他可能的 token 的权重
- Top_p:控制候选 token 的概率覆盖范围,越低越保守、越高越多样。通常与
temperature二选一重点调参,不建议同时大幅改动。 - Max Length:限制最大输出长度,避免冗长回答并控制成本。
- Stop Sequences:设置停止字符串,便于约束输出结构(如限制列表项数量、在指定标记处停止)。
- Frequency Penalty:按“重复次数”抑制重复词,适合减少啰嗦和机械复读。
- Presence Penalty:只要 token 出现过就惩罚,鼓励引入新词新信息。与
frequency penalty也建议优先单独调一个。
与 temperature 和 top_p 一样,一般建议是改变 frequency penalty 和 presence penalty 其中一个参数就行,不要同时调整两个。
| 维度 | Temperature(温度) | Top_p(核采样) |
|---|---|---|
| 核心逻辑 | 重塑概率分布。 | 截断候选词列表。 |
| 操作对象 | 改变每个词被选中的相对概率。 | 决定哪些词有资格进入被选池。 |
| 感官影响 | 控制“热情”或“冷静”程度。 | 控制“可选方案”的多样性边界。 |
| 极端情况 | T=0 时等同于只选第一名。 | P=1.0 时等同于全选(不做过滤)。 |
2) 基本概念
提示工程的核心不是“随便问一句”,而是用更明确、更结构化的输入,让模型更稳定地完成目标任务。通常你给得越清楚(指令、上下文、示例越完整),输出越可控。
常见提示格式:
- 指令式:直接写“要模型做什么”。
- 问答式(QA):
Q: .../A: ...
两种基础提示策略:
- 零样本(Zero-shot):不给示例,直接让模型回答/完成任务(简单任务常够用)。
- 少样本(Few-shot):给 2-5 个“输入→输出”的示范,帮助模型对齐风格与格式
3) 提示词要素
一个有效 Prompt 的核心是:明确“做什么、基于什么做、按什么格式输出”。
- Role(角色扮演):指定模型身份与工作风格(例如“你是一位资深 AI Agent 开发工程师”)。
- Task/Instruction(任务/指令):明确要做什么,最好用动词开头(例如“分析以下代码并优化...”)。
- Context / Input(上下文/输入):提供背景数据、知识或限制,并把要处理的内容清晰标出。
- Format / Output(输出格式):指定结构(例如 JSON、Markdown、带时间戳的列表、表格等)。
- Constraints / Examples(约束与示例):列出禁用事项、给 few-shot 示例,甚至提供成功/失败的对照案例。
- Reasoning Instruction(推理指导):按需加入推理步骤要求(例如“先列出关键点,再给结论”,或要求“不要输出过程”)。
常见框架:
- R-T-F-C:Role + Task + Format + Constraints(先说明身份与任务,再明确输出形式与硬约束)。
Role:
你是一位 ...
Task:
分析/总结/抽取 ...(从动词开始)
Context / Input:
给出背景与要处理的内容 ...
Format / Output:
按 JSON 字段:{"field1": "...", "field2": "..."} 输出
Constraints / Examples:
1) 禁止输出额外解释
2) 给一个示例:...
并非每个要素都必须一次写全,可从最小可用版本开始,再逐步补充。
4) 设计提示词的通用技巧
1. 基础原则
- 清晰性(Clarity):使用直白、具体、无歧义的语言,避免模糊词(如“很好”“一些”)。
- 具体性(Specificity):明确任务目标、约束条件、成功标准(Success Criteria)。
- 上下文提供(Context):给出必要背景、角色、受众、风格。
- 迭代优化(Iteration):Prompt 不是一次性写成,而是通过测试-反馈-refinement 循环改进。
2. 通用落地做法
- 从简单开始,逐步迭代:先写最小可用提示,观察问题后再补充约束,不要一开始堆太多条件。
- 指令前置且动作明确:优先使用可执行动词(如“分类 / 总结 / 翻译 / 抽取 / 改写”),并把核心任务放在开头。
- 用分隔符划清边界:用
###、引号块或标签区分“指令 / 上下文 / 输入”,降低模型误读。 - 告诉模型“要做什么”:尽量用正向要求替代“不要做什么”,可减少歧义。
- 复杂任务先拆解:将大任务拆成多个子步骤(先理解,再推理,再生成),必要时分多轮完成。
- 需要固定格式时给示例:当你希望稳定输出 JSON/表格/标签时,提供 1-2 个 few-shot 示例通常更稳。
建议每次只改一个变量(如只改输出格式或只改上下文),更容易定位质量变化。
二、提示词技术
1) 零样本提示(Zero-shot)
零样本提示指:提示中不包含任何示例或演示。你只需要直接指示模型执行任务,结果主要依赖模型对指令的理解能力。
2) 少样本提示(Few-shot)
在提示里加入 2-3 个“输入→输出”的演示,让模型学习分类边界或输出格式,从而更稳定。
将文本分类为:正面/负面/中性,只输出标签(不要解释)。
示例 1
文本:太难吃了,味道很差。
标签:负面
示例 2
文本:这部电影很精彩,我很喜欢。
标签:正面
现在进行分类
文本:我觉得食物还可以。
标签:
3) 链式思考(CoT)提示
CoT(Chain-of-Thought)提示的核心是:引导模型先给出中间推理步骤,再给最终答案。它在算术、逻辑、多步推理任务中通常比“只要结论”更稳。
这一类方法可分为三种常见形态:
- 标准 CoT(少样本 CoT):先给 1-3 个“题目 + 推理过程 + 结论”的示例,再让模型解新题。
- 零样本 CoT(Zero-shot CoT):不提供示例,只在问题后加入“让我们逐步思考”等触发语,诱导模型展开步骤。
- 自动思维链(Auto-CoT):先聚类问题,再自动生成并筛选推理链作为演示,降低手工编写成本。
这组数中的奇数加起来是偶数:4、8、9、15、12、2、1。
A:将所有奇数相加(9、15、1)得到25。答案为False。
这组数中的奇数加起来是偶数:15、32、5、13、82、7、1。
A:
上面示例体现的是标准 CoT:显式示范“先找奇数→求和→判断奇偶”的步骤,模型更容易复用同一推理链。
如果没有示例,也可以使用零样本 CoT:
我去市场买了10个苹果。我给了邻居2个苹果和修理工2个苹果。
然后我又买了5个苹果并吃了1个。我还剩下多少苹果?
让我们逐步思考。
Auto-CoT 适合批量构建推理示例库:通常按“问题聚类 → 演示抽样 → 质量过滤”流程生成高质量链路。零样本 CoT 和 Auto-CoT 都属于 CoT 家族,不必拆成独立大节。
Auto-CoT 实例(奇数和是否为偶数):先把问题聚类到同一类任务里;再对代表题追加触发语,让模型生成推理链;最后把挑选后的演示拼成少样本提示用于新题。
代表题(同类任务:奇数求和→判断奇偶):
题1:这组数中的奇数加起来是偶数:4、8、9、15、12、2、1。
题2:这组数中的奇数加起来是偶数:17、10、19、4、8、12、24。
题3:这组数中的奇数加起来是偶数:16、11、14、4、8、13、24。
对每个代表题追加触发语,生成推理链(零样本 CoT):
题1:
这组数中的奇数加起来是偶数:4、8、9、15、12、2、1。
让我们逐步思考。
A:奇数为 9、15、1,奇数和=25,是奇数,因此答案为 False。
题2:
这组数中的奇数加起来是偶数:17、10、19、4、8、12、24。
让我们逐步思考。
A:奇数为 17、19,奇数和=36,是偶数,因此答案为 True。
题3:
这组数中的奇数加起来是偶数:16、11、14、4、8、13、24。
让我们逐步思考。
A:奇数为 11、13,奇数和=24,是偶数,因此答案为 True。
(质量过滤后)拼成少样本提示,解新题:
这组数中的奇数加起来是偶数:4、8、9、15、12、2、1。A:False
这组数中的奇数加起来是偶数:17、10、19、4、8、12、24。A:True
这组数中的奇数加起来是偶数:16、11、14、4、8、13、24。A:True
现在判断:
这组数中的奇数加起来是偶数:15、32、5、13、82、7、1。A:
4) 生成知识提示(Generated Knowledge Prompting)
先让模型“生成一份知识草案/要点”,再用这些要点去完成最终任务。适合信息量大、需要先组织再回答的场景。
请先根据已给内容生成“可能的关键知识点”(3-6 条),再用这些知识回答问题。
最后只输出答案,不要输出知识草案。
问题:如何更好地设计 Prompt?
已给内容:...
5) 自我一致性(Self-Consistency)
让模型生成多个候选答案,再按规则选择最符合目标的答案,从而减少偶然错误。
为下面问题给出 3 个不同的答案草稿(每个草稿只写结论,不要展开很长)。
然后从 3 个草稿里选择最合理的一个,并用一句话说明你选择它的原因。
问题:...
6) 检索增强生成(RAG)
把外部资料“检索出来”提供给模型,让回答尽量基于真实资料而不是纯生成。适合需要最新信息或领域知识的任务。
你将收到“检索资料片段”。请只根据资料片段回答问题;如果资料不足,直接回答“资料不足”。
资料片段:
1) ...
2) ...
问题:...
7) 思维树(ToT):
简单说,ToT是 CoT的进阶版。CoT 更像“一条路走到底”,而 ToT 会在关键节点同时探索多条路,再选最优路径继续。
从“线”到“树”:
- 标准 Prompt:直接问结果,几乎不展示中间思考。
- CoT:要求一步步思考,但通常是单线推进。
- ToT:先提出多个思路(发散)→给思路打分(评估)→保留最优分支继续(搜索)。
ToT 的 4 个关键环节:
- 思维分解:把问题拆成多个中间步骤。
- 思维生成:每一步生成多个候选方案,而不是只走一条路。
- 状态评估:判断每条路径是否靠谱(如 sure/maybe/impossible)。
- 搜索选择:用 BFS/DFS/beam 或简化规则,决定下一步沿哪条路径走。
为什么有用:复杂任务里,模型很容易在中间某一步走偏。ToT 能在路口做“多路径试探”,遇到死路可以回溯,通常比单路径更稳。
什么时候用:多步推理、全局规划、需要找最优解(如复杂代码设计、24 点、策略规划)。简单分类、翻译、日常问答通常不必上 ToT。
可直接复用的 ToT 模版:
针对【复杂问题】,请模拟 3 位不同领域的专家进行讨论。
第 1 步:每位专家先给出自己的初步思路(至少 3 条不同路径)。
第 2 步:专家互评各路径的优缺点,并淘汰明显错误或低价值方案。
第 3 步:保留最优路径,继续推导到可执行的最终方案。
输出要求:先给“保留路径”,再给“最终结论”,最后给“放弃路径及原因”。
8) ReAct
ReAct 的核心思想是把“推理(Reason)”和“行动(Act)”交错进行:模型一边思考下一步该做什么,一边调用外部工具拿信息,再根据新信息继续推理。
它比纯 CoT 更适合事实密集任务,因为不是只靠模型记忆,而是允许“边查边想”。
标准流程:
- Thought(思考):先拆解问题,决定要先查什么。
- Action(行动):执行操作(如搜索、调用知识库、运行计算器)。
- Observation(观察):读取工具返回结果,更新当前判断。
- 循环迭代:重复以上步骤,直到可以给出最终答案。
为什么有效:它把“内部推理能力”与“外部信息获取能力”结合起来,通常能减少事实幻觉,也让决策过程更可解释。
适用任务:知识问答、多跳检索、工具调用型任务、需要边查边算的复杂问题。
ReAct 提示示例:
问题:科罗拉多造山带东部区域延伸到的区域海拔范围是多少?
思考 1:我需要先确认“东部区域延伸到哪里”,再查该区域海拔范围。
操作 1:搜索 [科罗拉多造山带 东部区域]
观察 1:东部区域延伸至高平原(High Plains)。
思考 2:接下来要查询高平原海拔范围。
操作 2:搜索 [高平原 海拔范围]
观察 2:高平原海拔大约 1800 到 7000 英尺。
思考 3:信息已足够,可以作答。
最终答案:约 1800 到 7000 英尺。
实际落地时,你可以把“搜索”替换成内部文档检索、数据库查询、API 调用等。任务越依赖实时或外部信息,ReAct 的优势越明显。
9) Reflexion(反思机制)
模仿人类写文章/写代码的流程:初稿 → 检查 → 修改 → 定稿。
1. 核心流程:
Reflexion 通常由三个角色组成(也可以是同一个模型用不同指令扮演):
- 执行者:先给出初始答案/初稿。
- 评估者:检查初稿是否满足事实、逻辑、格式与用户要求,并指出问题点。
- 自我改进:根据批评反馈重写,输出更好的版本。
2. 为什么 Reflexion 很强?
- 克服“快思考”缺陷:LLM 易受概率采样影响产生幻觉;反思会强制进入“慢思考 + 自检”模式。
- 闭环改进:在复杂任务里,可以把报错信息(Traceback)作为“观察”,让模型定位原因并修复。
- 无需重新训练:改进发生在推理阶段,不需要改动模型参数。
4. 与 CoT / ToT 的区别
| 技术 | 形象比喻 | 核心点 |
|---|---|---|
| CoT(链式思考) | 想清楚再写 | 强调逻辑推导过程 |
| ToT(思维树) | 多想几个方案再选 | 强调路径搜索与评估 |
| Reflexion(反思) | 写完发现不对再改 | 强调自我纠错与迭代 |
5. 开发建议:一个最小可用的反思 Loop
第一步:让模型生成结果(草稿)。
第二步:把“草稿 + 规则”发回给模型,让它“挑错并给修改建议”(评审)。
第三步:把“评审”的建议合并进提示,生成修正版(定稿)。
提示(评审)示例:
“请检查以上答案是否存在逻辑错误、是否遗漏关键信息、是否出现事实性错误;并给出需要修改的点和一份修订后的更好版本。”
三、提示词实用
1) Meta Prompting
1. 常见玩法
- 玩法 A:生成式(生成新 Prompt):你只有一个模糊的想法,让 AI 把它扩充成专业的指令。
- 玩法 B:优化式(迭代 Prompt):你给出一个初稿,让 AI 诊断模糊之处,并输出增强版。
- 玩法 C:框架式(Meta Prompting,定义“如何处理未来任务”):在一个 Prompt 里告诉模型“以后遇到任何任务要怎么拆解、怎么选角色、怎么产出结果”。
2. 为什么 Meta Prompting 很强?
- 解决“描述贫瘠”:你知道想要什么,但不会表达;AI 会补全专业术语与结构。
- 结构化思维:生成的 Prompt 往往包含角色、背景、步骤、限制、输出格式等层级。
- 减少测试成本:你可以让 AI 一次给出多个版本对比,而不用反复手工试错。
3. Meta Prompt 模板
我希望你担任 Prompt Engineer。 我会告诉你我的初步目标,请你通过以下步骤帮我优化:
1) 分析意图:解释你理解的我想要达到的最终效果。
2) 增强指令:编写一个结构清晰(包含角色、背景、步骤、限制)的专业 Prompt。
3) 提问澄清:为了让这个 Prompt 更完美,你还需要我提供哪些具体信息?
4) Automatic Prompt Engineer(APE,自动提示词工程师)
APE是一套让 AI 自动“优选”出最强提示词的算法框架。
1. APE 的核心流程:
- 大规模生成:给 AI 一些“输入-输出”的少样本示例,让它生成几十个甚至上百个候选 Prompt。
- 打分/评估:用一小批测试数据去跑这些候选 Prompt,并根据预设指标给分(如准确率、相似度,或由另一个模型打分)。
- 自动选择:挑出得分最高的 Prompt,作为最终交付给用户的“最强提示词”。
2. APE vs Meta Prompting:
| 维度 | Meta Prompting(元提示词) | APE(自动提示词工程师) |
|---|---|---|
| 行为 | 创意写作:AI 依据经验“写得更好”。 | 工程优化:AI 通过实验/评分选“更优”。 |
| 输入 | 一个想法或初稿。 | 一堆“输入-输出”的样例数据。 |
| 准确性来源 | 更依赖模型当时的灵感。 | 更依赖测试数据覆盖面。 |
| 应用场景 | 个人调优、日常迭代。 | 开发部署、追求大规模稳定性。 |
APE 的价值:把“玄学调优”变成自动化实验。它通过评分机制帮你找到更稳的指令组合,减少反复手工试错。