跳到主要内容
LLM 大模型技术实战:Prompt 提示工程策略与技巧总结 | 极客日志
编程语言 AI 算法
LLM 大模型技术实战:Prompt 提示工程策略与技巧总结 综述由AI生成 总结了大语言模型(LLM)提示工程的六大核心策略,包括清晰表达指令、提供参考文本、任务分解、给予思考时间、使用外部工具及系统测试。深入探讨了进阶技巧如零/少样本提示、思维链(CoT)、自一致性、从易至难(LtM)及思维树(ToT)。此外,详细介绍了结构化 Prompt 的写作方法、优势及实施建议,并结合常见误区提供了优化方案,旨在帮助开发者构建更可靠的 AI 应用系统。
路由之心 发布于 2025/2/6 更新于 2026/6/11 29 浏览提示工程概述
提示工程(Prompt Engineering)是一门新兴学科,类似于为大语言模型(LLM)设计的'语言游戏'。通过掌握这个游戏的规则,我们可以更有效地引导 LLM 处理问题,理解其能力与局限。有效的提示工程不仅能提升模型处理复杂问题的能力(如数学推理),还能增强其扩展性(如结合专业领域知识和外部工具)。
一、六大提高 Prompt 有效性的策略
这些技巧旨在提供思路,您应随意尝试创造性方案。
策略一:清晰地表达指令
技巧:在查询中包含更多细节以获取更相关的回答
为了获得高度相关的回复,查询需要提供重要的细节或上下文信息,否则模型需要猜测意图。
劣质示例 优质示例 Excel 中如何相加数字? 在 Excel 中如何对一行金额自动相加?我想对整个工作表的行进行求和,总和显示在右边一列'总计'中。 谁是总统? 2021 年墨西哥总统是谁,选举频率是多久一次? 编写代码计算斐波那契数列。 用 TypeScript 编写一个函数来有效地计算斐波那契数列。对代码添加详细注释以解释每个部分的作用及编写方式。 摘要会议记录。 用一段话摘要会议记录。然后用 markdown 列表罗列发言人及每个人的要点。最后,列出会议记录中发言者提出的后续步骤或行动事项 (若有)。
技巧:要求模型采用特定的角色
系统消息可用于指定模型在回复时采用的角色。
技巧:使用分隔符清楚地指示输入的不同部分
三引号、XML 标签、标题等分隔符可以帮助标记需不同对待的文本片段。任务越复杂,明确任务细节就越重要。
技巧:指定完成任务所需的步骤
有些任务最好用一系列步骤来表达。明确写出步骤可以让模型更容易遵循。
技巧:提供示例
在所有示例上演示任务的各种变化通常比仅给出说明更高效。这被称为'few-shot'提示。
技巧:指定期望的输出长度
您可以要求模型生成特定目标长度的输出。目标输出长度可以以单词数、句子数、段落数、项目符号数等来指定。但是,指示模型生成特定数量的单词不能高精度实现。模型可以更可靠地生成特定段落数或项目符号数的输出。
策略二:提供参考文本
技巧:指示模型使用提供的参考文本进行回答
如果我们能为模型提供与当前查询相关的可信信息,那么我们可以指示模型使用提供的信息来组成其回答。鉴于 GPT 模型具有有限的上下文窗口,我们需要某种方法根据问题动态查找相关信息并添加到模型输入中。嵌入可用于实现高效的知识检索。
技巧:指示模型使用参考文本中的引文进行回答
如果输入补充了相关知识,则可以轻松要求模型在答案中添加引文,引用提供文档的相关段落。输出中的引文然后可以通过与提供文档的字符串匹配来程序化验证。
策略三:将复杂任务分解为更简单的子任务
技巧:使用意图分类识别与用户查询最相关的指令
对于需要大量独立指令集来处理不同情况的任务,首先对查询进行分类以确定所需指令会很有益。该过程也可以递归应用以将任务分解成一系列阶段。这种方法的优点是每个查询只包含执行任务下一阶段所需的指令,这可以与使用单个查询执行整个任务相比降低错误率。
例如,对于客户服务应用,查询可以划分为以下类别:
根据客户查询的分类,可以为 GPT 模型提供更具体的指令来处理后续步骤。注意,模型被指示在对话状态发生变化时输出特殊字符串。这使我们可以将系统转化为状态机。
技巧:对需要非常长对话的对话应用,汇总或过滤之前的对话
由于 GPT 模型具有固定的上下文长度,因此将整个对话包含在上下文窗口内的用户与助手之间的对话无法无限期地继续。
一种解决方法是在输入大小达到预定阈值长度时,使用一个查询来总结对话的一部分,并将之前对话的摘要包含在系统消息中。或者,可以在整个对话的过程中异步地在后台总结之前的对话。
另一种解决方案是动态选择与当前查询最相关的之前对话部分。
技巧:分段摘要长文档,递归构建完整摘要 要摘要像书籍这样的非常长文档,我们可以使用一系列查询逐部分摘要文档。部分摘要可以连接在一起生成摘要的摘要。该过程可以递归进行,直到整个文档被摘要。
策略四:给予 GPT'思考'的时间
技巧:指示模型在匆忙得出结论之前自己推导出解决方案 有时候明确地让模型先自行推理出答案再回复用户,可以获得更好的效果。
SYSTEM: 首先自己解出这道题并生成答案。然后再比较你的答案和学生的答案,判断学生的答案是否正确。在比较之前,不要依赖学生的答案来决定其是否正确。
USER: <插入题目>
<插入学生答案>
ASSISTANT: <模型先生成自己的答案>
<模型比较两个答案并作出评价>
技巧:使用内心独白或一系列查询来隐藏模型的推理过程 有时我们不想让用户看到模型的全部推理过程,只需要展示最后的回复。这时可以使用'内心独白'把需要隐藏的部分放入特定格式中,在展示给用户前把这些部分删除。
#隐藏查询 1: 仅提供问题描述,让模型解出答案
#隐藏查询 2: 提供问题描述、模型解答和学生解答,让模型判断学生解答的正确性
#可见查询:假设模型是一个有帮助的导师,如果学生错误,给出提示;如果正确,给予鼓励
技巧:在前几轮后询问模型是否遗漏了相关信息 当我们要求模型列举某文本中的所有相关摘录时,模型常会过早停止而未罗列全部。这时可以在前几轮查询后,再询问模型是否还遗漏了相关内容,以获取更完整的结果。
策略五:使用外部工具
技巧:使用基于嵌入的搜索实现高效的知识检索 我们可以在模型的输入中加入相关的外部信息,帮助其生成更准确的回复。通过使用文本嵌入可以实现高效的知识检索,从而动态地在运行时将相关信息加入模型输入中。
技巧:使用代码执行进行更精确的计算或调用外部 API GPT 模型自己进行算术运算或长时间计算时误差很大。这时可以让其编写代码进行运算并运行。代码执行也可以用来调用外部 API。需要注意,运行模型生成的代码有安全风险,需要采取防护措施。
技巧:系统地测试各种改变 适当的评估流程对优化系统设计非常有用。好的评估应该具有代表性、包含足够多的测试用例。评估可以由计算机、人工或两者混合来进行。OpenAI Evals 提供了用于构建自动评估的开源工具。
技巧:参照标准答案来评估模型输出 如果问题的正确答案需要包含某些已知的事实,我们可以用模型查询来统计答案中包含了多少需要的事实。
如果答案满足所有要点,count 将为要点的总数。这样可以构建不同的模型评估变体来统计答案与标准答案的重合情况。
策略六:系统化测试与评估 评估程序(或'测评')对优化系统设计很有用。好的测评应该具有以下特点:
代表真实使用情况(或至少包含多样性)
包含大量测试用例以增强统计功效
易于自动化或重复
需检测的差异 需样本量 (95% 置信度) 30% ~10 10% ~100 3% ~1000 1% ~10000
模型输出的评估可以由计算机、人类或两者的组合来完成。对于输出范围广泛且同等高质量的问题,基于模型的测评可发挥作用。
二、提示工程进阶技巧
1. 零/少样本提示 Zero-Shot Prompting :模型接收到的提示没有包含任何特定任务的示例。这意味着模型需要基于给定的提示,而没有任何相关任务的先前示例,来推断出应该执行的任务。
Few-Shot Prompting :模型接收到的提示包含了一些(通常是几个)特定任务的示例。这些示例作为上下文,提供了关于期望输出的线索。
English: 'Cat'
French: 'Chat'
French: 'Oiseau'
English: 'Elephant'
在这个例子中,模型通过前三个英法翻译对的示例,理解了我们希望它将'Elephant'从英文翻译成法文。
2. 思维链提示 (Chain-of-Thought) CoT 的核心思想是,在 Prompt 中加入一些示例,来引导 LLM 展现出更好的推理能力。关键是在 Prompt 中加入的示例中,用自然语言描述一系列的推理过程,并最终引导出示例问题的正确结果。
少样本思维链 :用户提供一些'解题步骤',通过在 prompt 中告诉模型解答步骤,最终给出的答案就是准确的。
零样本思维链 :通过一句 magic prompt 实现了这一目标——'Let's think step by step'。
自动化思维链 :通过采用不同的问题得到一些推理过程让 LLM 参考。核心思想分两步:首先进行问题聚类,把给定数据集的问题分为几个类型;采样参考案例,每个类型问题选择一个代表性问题,然后用零样本思维链来生成推理的中间过程。
3. 自一致性技术 (Self-Consistency) Self-Consistency 技术是在 CoT 技术的基础之上进行的进一步优化,目的是为了让 LLM 的推理能力能够更进一步提升。
利用 CoT Prompting 技巧,写好 Prompt;
不要让 LLM 只生成最合适的唯一一个结果,而是利用 LLM 结果的多样性,生成多种不同推理路径所得的结果的集合;
从结果集合中投票选择,选出投票最多的结果,做为最终的答案。
4. 从易至难技术 (Least-to-Most) 这是《Least-to-Most Prompting Enables Complex Reasoning in Large Language Models》这篇论文中介绍的方法。LtM 是为了解决 CoT 这种从易到难的迁移能力不足而诞生的。
LtM 的核心思想是:教 LLM 把复杂问题,拆解成一系列的简单问题,通过解决这一系列的简单问题,来最终得到复杂问题的结果。
分解阶段 :把复杂问题分解成一系列的简单子问题。这个阶段的 Prompt 中要包含分解问题的示例。
解决子问题阶段 :这个阶段的 Prompt 中包含三部分内容:一是完整的 LtM 的例子;二是已解决的子问题及其答案列表;三是接下来要解答的子问题。
5. 思维树 (Tree of Thoughts) ToT 是思维链的进一步拓展,主要想解决 LM 推理过程存在如下两个问题:不会探索不同的可能选择分支;无法在节点进行前后向的探索。
ToT 将问题建模为树状搜索过程,包括四个步骤:问题分解、想法生成,状态评价以及搜索算法的选择。
6. 头脑风暴提示 主要考虑的是代码生成方向,不过思想还是可以用在各种领域的提问的。核心思想分为三步:
头脑风暴 :通过多个 prompt 喂给 LLM 得到多样化的'思路';
选择最佳思路 :这里用了一个神经网络模型来打分,并用最高分的思路来作为最终 prompt;
代码生成 :基于问题和选择出来的最佳思路进行代码生成。
三、结构化 Prompt 的写作方法
1. 结构化 Prompt 简介 结构化的思想很普遍,结构化内容也很普遍。结构化 Prompt 的思想通俗点来说就是像写文章一样写 Prompt。为了阅读、表达的方便,我们日常有各种写作的模板。所以结构化编写 Prompt 自然也有各种各样优质的模板帮助你把 Prompt 写的更轻松、性能更好。
CR : Capacity and Role(能力与角色)
I : Insight(洞察力),背景信息和上下文
S : Statement(指令)
P : Personality(个性)
E : Experiment(尝试)
而我们所提倡的结构化、模板化 Prompt,通常采用 Markdown 语法或 YAML/JSON 数据结构。
#Role: 诗人
##Profile
- Author: YZFly
- Version: 0.1
- Language: 中文
- Description: 诗人是创作诗歌的艺术家...
###擅长写现代诗
1. 现代诗形式自由...
##Rules
1. 内容健康,积极向上
##Workflow
1. 让用户以'形式:[], 主题:[]'的方式指定诗歌形式,主题。
2. 针对用户给定的主题,创作诗歌...
##Initialization
作为角色<Role > , 严格遵守<Rules > ...
基于上述 诗人 prompt 例子,说明结构化 prompt 的几个概念:
标识符 :#, <> 等符号,依次标识标题、变量,控制内容层级。
属性词 :Role, Profile, Initialization 等等,属性词包含语义,是对模块下内容的总结和提示。
2. 结构化 Prompt 的优势
优势一:层级结构:内容与形式统一 结构清晰,可读性好。Role 作为 Prompt 标题统摄全局内容。Profile、Rules 作为二级标题统摄相应的局部内容。
优势二:提升语义认知 结构化表达同时降低了人和 GPT 模型的认知负担。对人来说,Prompt 内容一目了然。对 GPT 模型来说,标识符标识的层级结构实现了聚拢相同语义,梳理语义的作用。
优势三:定向唤醒大模型深度能力 使用特定的属性词能够确保定向唤醒模型的深层能力。例如一级标题设置的就是 Role(角色)属性词,直接将 Prompt 固定为角色。再比如 Rules,规定了模型必须尽力去遵守的规则。
优势四:像代码开发一样构建生产级 Prompt Prompt 越来越像新时代的编程语言。在生产级 AIGC 应用的开发中,结构化 prompt 使得 prompt 的开发也像代码开发一样有规范。结构化 Prompt 的这些规范,这些模块化设计,能够大大便利于 prompt 后续的维护升级,便利于多人协同开发设计。
3. 如何写好结构化 Prompt
构建全局思维链 一个好的结构化 Prompt 模板,某种意义上是构建了一个好的全局思维链。如 LangGPT 中展示的模板设计时就考虑了如下思维链:
Role (角色) -> Profile(角色简介)—> Profile 下的 skill (角色技能) -> Rules (角色要遵守的规则) -> Workflow (满足上述条件的角色的工作流程) -> Initialization (进行正式开始工作的初始化准备) -> 开始实际使用
保持上下文语义一致性 包含两个方面,一个是格式语义一致性,一个是内容语义一致性。格式语义一致性是指标识符的标识功能前后一致。内容语义一致性是指思维链路上的属性词语义合适。
有机结合其他 Prompt 技巧 结构化 Prompt 编写思想是一种方法,与其他例如 CoT, ToT, Think step by step 等技巧和方法并不冲突。从 prompting 的角度有哪些方法可以提高大模型在复杂任务上的性能表现呢?
细节法 :给出更清晰的指令,包含更多具体的细节
分解法 :将复杂的任务分解为更简单的子任务
记忆法 :构建指令使模型时刻记住任务,确保不偏离任务解决路径
解释法 :让模型在回答之前进行解释,说明理由
投票法 :让模型给出多个结果,然后使用模型选择最佳结果
示例法 :提供一个或多个具体例子,提供输入输出示例
上面这些方法最好结合使用,以实现在复杂任务中实现使用不可靠工具(LLMs)构建可靠系统的目标。
四、常见误区与优化建议 在实际应用中,除了掌握上述策略,还需要注意以下几点以避免常见误区:
避免过度约束 :虽然规则很重要,但过多的限制可能会抑制模型的创造力。应根据任务需求平衡灵活性与规范性。
上下文窗口管理 :注意模型的上下文限制。对于长文档或长对话,务必采用摘要、切片或检索增强生成(RAG)策略,防止关键信息丢失。
幻觉问题 :模型可能会产生幻觉。通过提供权威参考资料、要求引用来源以及使用自我一致性检查来减少此类风险。
迭代优化 :Prompt 工程往往是一个迭代过程。不要指望一次性写出完美的 Prompt,应通过 A/B 测试不断调整指令和参数。
五、总结 提示工程是连接人类意图与大模型能力的桥梁。通过清晰指令、参考文本、任务分解、思维链、外部工具以及结构化设计,我们可以显著提升 LLM 的表现。随着技术的演进,Prompt 工程正逐渐向工程化、标准化方向发展,成为 AI 应用开发中的核心技能之一。开发者应持续学习新的策略与工具,以适应快速变化的技术环境。
相关免费在线工具 加密/解密文本 使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
RSA密钥对生成器 生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
Mermaid 预览与可视化编辑 基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
随机西班牙地址生成器 随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online
Gemini 图片去水印 基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online
Base64 字符串编码/解码 将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online