
现在每天用大模型的时间越来越多,但是对于给大模型输入,大部分场景还是以之前问百度等搜索引擎的方式去和大模型沟通,也基本能得到想要的答案,基本没有给更多的提示词。如果稍微专业些的问题,大模型给的答案就没那么精准了。基于上述背景,加上工作中有用到大模型来做一些故障诊断,所以想系统地了解学习下提示词工程。
本文大部分内容引用自提示词工程指南(https://www.promptingguide.ai/zh)和花园老师的文档。
01
—
提示词工程简介
提示工程(Prompt Engineering)是一门较新的学科,关注提示词开发和优化,帮助用户将大语言模型(Large Language Model, LLM)用于各场景和研究领域。 掌握了提示工程相关技能将有助于用户更好地了解大型语言模型的能力和局限性。
提示词工程的核心在于如何精心设计输入(即“提示”),以便从大型语言模型(LLM)中获得最精确、最相关、最符合预期的输出。
1、提示词工程四大核心要素:

2、大语言模型设置
使用提示词时,通常会通过 API 或直接与大语言模型进行交互。可以通过配置一些参数以获得不同的提示结果。调整这些设置对于提高响应的可靠性非常重要,可能需要进行一些实验才能找出适合用例的正确设置。以下是使用不同LLM提供程序时会遇到的常见设置:
Temperature:简单来说,temperature的参数值越小,模型就会返回越确定的一个结果。如果调高该参数值,大语言模型可能会返回更随机的结果,也就是说这可能会带来更多样化或更具创造性的产出。
在实际应用方面,对于质量保障(QA)等任务,我们可以设置更低的temperature值,以促使模型基于事实返回更真实和简洁的结果。 对于诗歌生成或其他创造性任务,适度地调高temperature参数值可能会更好。
Top_p:同样,使用top_p(与temperature一起称为核采样(nucleus sampling)的技术),可以用来控制模型返回结果的确定性。
如果你需要准确和事实的答案,就把参数值调低。如果你在寻找更多样化的响应,可以将其值调高点。
一般建议是改变 Temperature 和 Top P 其中一个参数就行,不用两个都调整。
Max Length:您可以通过调整max length来控制大模型生成的 token 数。指定 Max Length 有助于防止大模型生成冗长或不相关的响应并控制成本。
Stop Sequences:stop sequence是一个字符串,可以阻止模型生成 token,指定stop sequences是控制大模型响应长度和结构的另一种方法。例如,您可以通过添加 “11” 作为stop sequence来告诉模型生成不超过 10 个项的列表。
Frequency Penalty:frequency penalty是对下一个生成的 token 进行惩罚,这个惩罚和 token 在响应和提示中已出现的次数成比例,frequency penalty越高,某个词再次出现的可能性就越小,这个设置通过给 重复数量多的 Token 设置更高的惩罚来减少响应中单词的重复。
Presence Penalty:presence penalty也是对重复的 token 施加惩罚,但与frequency penalty不同的是,惩罚对于所有重复 token 都是相同的。出现两次的 token 和出现 10 次的 token 会受到相同的惩罚。 此设置可防止模型在响应中过于频繁地生成重复的词。 如果您希望模型生成多样化或创造性的文本,您可以设置更高的presence penalty,如果您希望模型生成更专注的内容,您可以设置更低的presence penalty。
与temperature和top_p一样,一般建议是改变frequency penalty和presence penalty其中一个参数就行,不要同时调整两个。
3、设计提示词的通用技巧
a、从简单开始
在开始设计提示词时,实际上是一个迭代过程,需要大量的实验才能获得最佳结果。
我们可以从简单的提示词开始,并逐渐添加更多元素和上下文(因为你想要更好的结果)。
当你有一个涉及许多不同子任务的大任务时,可以尝试将任务分解为更简单的子任务,并随着结果的改善逐步构建。
这避免了在提示设计过程中一开始就添加过多的复杂性。
b、指令
我们可以使用命令来指示模型执行各种简单任务,例如“写入”、“分类”、“总结”、“翻译”、“排序”等,从而为各种简单任务设计有效的提示词。
我们还需要进行大量实验以找出最有效的方法。以不同的关键词(keywords),上下文(contexts)和数据(data)试验不同的指令(instruction),看看什么样是最适合你特定用例和任务的。通常,上下文越具体和跟任务越相关则效果越好。
c、具体性
要非常具体地说明我们希望模型执行的指令和任务。提示越具描述性和详细,结果越好。特别是当你对生成的结果或风格有要求时,这一点尤为重要。
不存在什么特定的词元(tokens)或关键词(tokens)能确定带来更好的结果。
更重要的是要有一个具有良好格式和描述性的提示词。
事实上,在提示中提供示例对于获得特定格式的期望输出非常有效。
d、避免不明确
在详细描述和改进格式的时候,很容易陷入陷阱:想要在提示上过于聪明,从而可能创造出不明确的描述。
通常来说,具体和直接会更好。
这里的类比非常类似于有效沟通——越直接,信息传达得越有效。
例如,你可能有兴趣了解提示工程的概念。你可以尝试这样做:
解释提示工程的概念。保持解释简短,只有几句话,不要过于描述。从上面的提示中不清楚要使用多少句子以及什么风格。尽管你可能仍会从上述提示中得到较好的响应,但更好的提示应当是非常具体、简洁并且切中要点的。例如:
使用 2-3 句话向高中学生解释提示工程的概念。e、做什么还是不做什么?
设计提示时的另一个常见技巧是避免说不要做什么,而应该说要做什么。这样(说要做什么)更加的具体,并且聚焦于(有利于模型生成良好回复的)细节上。
02
—
常见提示技术及模板
1、零样本提示 (Zero-shot Prompting)
零样本提示是最基础的提示技术,不提供任何示例,直接描述任务要求。
技术原理:依靠模型的预训练知识和理解能力,通过清晰的指令描述来完成任务。
适用场景:
`` # 基础零样本提示
`` 将以下中文翻译成英文:
`` "人工智能正在改变我们的生活方式。"
``
`` # 优化后的零样本提示
`` 你是一位专业的中英翻译专家。请将下面的中文句子翻译成地道的英文,注意保持原意的准确性和表达的自然性:
``
`` 中文原文:"人工智能正在改变我们的生活方式。
`` "英文翻译:2、少样本提示 (Few-shot Prompting)
通过提供少量示例来指导模型理解任务模式和期望输出。
技术原理:利用模型的上下文学习能力,通过示例演示任务的输入输出模式。
`` 任务:情感分析
``
`` 示例1:
`` 输入:这部电影真的很棒!
`` 输出:正面
``
`` 示例2:
`` 输入:服务态度太差了,很失望。
`` 输出:负面
``
`` 示例3:
`` 输入:价格还可以接受。
`` 输出:中性
``
`` 现在请分析:
`` 输入:这家餐厅的环境很舒适,菜品也不错。
`` 输出:
3、角色扮演提示 (Role-based Prompting)
通过为AI分配特定角色来引导其行为和回答风格。
核心优势:
`` # 角色提示模板
`` 你是一位{专业领域}的{具体角色},拥有{年限}年的{相关经验}。
``
`` 你的特点:
`` - {特点1}
`` - {特点2}
`` - {特点3}
``
`` 你的任务是{具体任务描述}。
``
`` 请以{角色身份}的口吻和专业水准来回答用户的问题。4、思维链 (Chain of Thought)
思维链是提示词工程中的革命性技术,通过引导模型展示推理过程来提高复杂任务的准确性。
技术原理:模拟人类解决问题的思维过程,将复杂问题分解为多个推理步骤,逐步得出结论。
实现方式:
a、显式思维链
`` 问题:一个班级有30名学生,其中60%是女生,女生中有25%戴眼镜。请问戴眼镜的女生有多少人?
``
`` 让我们一步步来解决这个问题:
``
`` 第一步:计算女生总数
`` 女生数量 = 30 × 60% = 30 × 0.6 = 18人
``
`` 第二步:计算戴眼镜的女生数量
`` 戴眼镜的女生 = 18 × 25% = 18 × 0.25 = 4.5人
``
`` 由于人数必须是整数,所以戴眼镜的女生有4或5人。
`` 根据题意,应该是4.5人,实际情况可能是4人或5人。
``
`` 答案:4.5人(理论值)或4-5人(实际值)b、隐式思维链引导
`` 请解决以下数学问题,并详细说明你的推理过程:
``
`` 问题:{具体问题}
``
`` 解答思路:
`` 1. 首先分析题目条件...
`` 2. 然后确定解题方法...
`` 3. 接着进行计算...
`` 4. 最后验证答案...
5、思维树 (Tree of Thought)
思维树是思维链的进阶版本,允许模型探索多个推理路径并选择最优解。
技术特点:

ToT框架和其他框架对比图

6、自洽性推理(Self-Consistency)
自洽性推理通过多次采样和投票机制来提高答案的可靠性。
技术流程:
`` # 自洽性推理模板
`` 请用三种不同的方法解决以下问题,然后比较结果的一致性:
``
`` 问题:{具体问题}
``
`` 方法一:{推理路径1}
`` 方法二:{推理路径2}
`` 方法三:{推理路径3}
``
`` 一致性检查:
`` - 结果是否一致?
`` - 如果不一致,哪个更合理?
`` - 最终答案:
7、ReAct推理(Reasoning and Acting)
ReAct结合了推理和行动,使模型能够在推理过程中调用外部工具。
核心思想:
`` Thought: 我需要查找最新的股票价格信息
`` Action: search_stock_price("AAPL")
`` Observation: 苹果公司股票当前价格为$150.25
``
`` Thought: 现在我需要计算投资回报率
`` Action: calculate_return(initial_price=140, current_price=150.25)
`` Observation: 投资回报率为7.32%
``
`` Thought: 基于以上信息,我可以给出投资建议
`` Action: generate_recommendation(return_rate=7.32, risk_level="medium")
8、智能体提示词
`` # 智能体系统提示词
`` 你是一个{agent_role},具有以下能力和特征:
``
`` ## 身份定义
`` - 角色:{specific_role}
`` - 专业领域:{domain}
`` - 核心能力:{capabilities}
``
`` ## 工作流程
`` 1. **任务理解**:仔细分析用户需求
`` 2. **计划制定**:制定详细的执行计划
`` 3. **工具调用**:使用适当的工具和资源
`` 4. **结果整合**:综合信息并形成答案
`` 5. **质量检查**:验证答案的准确性和完整性
``
`` ## 可用工具
`` {available_tools}
``
`` ## 记忆管理
`` - 短期记忆:当前对话上下文
`` - 长期记忆:历史交互和学习经验
`` - 工作记忆:当前任务的中间结果
``
`` ## 行为准则
`` {behavioral_guidelines}
``
`` 现在请处理用户的请求:{user_request}03
—
总结
提示词工程是解锁大语言模型全部潜力的关键技能。
它不是一个死记硬背的公式,而是一种需要不断实践和感悟的思维方式。
通过掌握其核心原则、结构和技巧,我们将能更高效、更精准地与AI协作,将其转化为一个强大的生产力和创造力工具。
本文比较偏向理论的学习总结,后续会继续是实践具体的提示词场景,针对工作和生活中的实际需求,分析一些比较通用的提示词模板。