AI应用:提示词以及提示词工程
1. 什么是提示词工程?
1.1 提示词(Prompt)
提示词是给模型的一条指令,用于执行特定任务。它可以是任何内容,从简单的问题到复杂的任务需求。
简单任务示例:
- “谁发明了数字零?”
- “讲个笑话”
- “给女朋友写封情书”
复杂任务示例:
- 让模型研究你的产品创意的竞争对手
- 从零开始构建一个网站
- 分析你的企业数据
1.2 为什么需要提示词?
大模型在训练过程中学习了海量语料,掌握了大量知识。提示词的作用就像考试中的试题——引导模型用特定的知识回答问题。没有提示词,模型就像没有题目的考生,无法给出有针对性的答案。
1.3 为什么需要优化提示词?
高质量的提示词能引导模型输出优质回答。就像看病时,简单说“我不舒服”很难得到准确诊断,而详细描述症状则能让医生做出合理判断。
1.4 什么是提示词工程?
提示词工程(Prompt Engineering)是在使用大模型时,通过系统地设计、组织和优化提示词,以引导模型在特定任务、约束和上下文条件下,稳定产出符合预期目标的高质量输出的一套方法论。

1.5 相关概念补充
- 上下文(Context):模型在生成当前输出时可直接访问并用于推理的信息集合,即输入模型的整个token序列。

- 上下文窗口:模型能接收的上下文长度上限。当输入超过此上限时,超出部分会被截断或特殊处理。
2. 提示词怎么写?
2.1 提示词工程的变化
在GPT-3/早期GPT-3.5时代,模型能力弱、不稳定,需要复杂的提示词技巧(如格式化提示、思维链等)。随着模型能力的飞速提升,复杂提示词在大多数通用场景中的边际收益明显下降,提示词工程的重点逐渐从“设计技巧”转向“需求表达”。
2.2 核心六要素
一个高效、工程化的提示词通常包含六个核心要素:角色、任务、背景/上下文、输入数据、输出格式、质量与约束。以下是一个通用模板:
# 角色
你是一名【角色定位,如:数据分析师 / 业务分析师 / 政策研究员】。
# 任务
你的任务是基于给定的输入数据进行【分析 / 总结 / 对比 / 评估】。
# 背景/上下文
【历史记录总结】
【参考资料】
# 输入数据
<<<
{在此粘贴输入数据}
>>>
# 输出格式
- 使用**表格**形式输出
- 表格中必须包含以下列:
1. 关键发现
2. 支撑数据(来自输入数据的原文或摘要)
3. 结论
4. 建议
- 表格下方需给出**整体结论说明**
# 质量与约束
- 仅基于输入数据进行分析
- 不得编造、推测或引入外部信息
- 若输入数据不足以支撑结论,必须明确标注为**“信息不足”**
- 不允许为了完整性而补充假设
要素1:角色
明确模型“以什么身份去做”。设定角色能使模型模仿该身份的口吻、思维模式和知识深度,让输出更专业、地道。
示例:
- 不推荐: 给我一个英语的学习计划
- 推荐: 需要你扮演一名优秀的小学英语讲师。我是一名3年级的学生,给我一个为期3个月提高英语成绩的学习计划。
要素2:任务
任务是提示词的核心,明确模型“要做什么”。通常以强有力的指令动词开头,如“分析”“总结”“提取”“分类”等,并确保说明明确、具体、无歧义。
示例:
- 不推荐:“告诉我关于气候变化的事情。”
- 推荐:“请简要描述气候变化的主要原因及其对农业的影响。”
更复杂的任务可以分解:
请执行以下三个任务:
• 总结所附的2025年第二季度全球AI市场分析报告,300字以内。
• 提取报告中提到的三大主要增长动力和两大潜在风险。
• 基于报告内容,为一家计划进入该市场的初创公司提出三条战略建议。
要素3:背景/上下文
补充当前对话的历史背景,可能包含历史聊天记录汇总或参考资料。即便是最强大的模型也可能因信息不足而产生误解或幻觉。
示例:
- 不推荐:“解释一下微积分。”
- 推荐:“作为一名高中生,我正在学习微积分。请用简单的语言解释微积分的基本概念。”
要素4:输入数据
使用分隔符(如```、"""、<<<等)将输入数据与指令清晰区分,避免混淆。
示例:
1)不推荐的提示词
将下面的这句话翻译成英文.
尽量使用华丽的词语
AI回复:
"春风拂面,百花齐放,万物复苏,大地一片生机勃勃。"
Translation:"With the caress of the spring breeze,myriad flowers bloom in unison,all things
rejuvenate,and the earth is teeming with vibrant vitality."
2)推荐的提示词
把用三个引号括起来的文本翻译成英文
"""尽量使用华丽的词语"""
AI回复:
"Strive to use magnificent words as much as possible."
你应该提供尽可能清晰、具体的指示,以表达你希望模型执行的任务。这将引导模型朝向所需的输出,并降低收到无关或不正确响应的可能性。不要将写清晰的提示词与写简短的提示词混淆。在许多情况下,更长的提示词可以为模型提供更多的清晰度和上下文信息,从而导致更详细和相关的输出。
要素5:输出格式
有时我们需要结构化的输出,如JSON、Markdown、表格、代码等,而非连续文本。
示例1:表格形式
中国有哪些经典菜系?以表格的形式输出中国经典菜系。
输出:
中国八大菜系是指鲁菜、川菜、粤菜、苏菜、闽菜、浙菜、湘菜、徽菜,这八大菜系各具特色,代表了中国饮食文化的精髓。
菜系 起源地 核心特色 代表菜品 鲁菜 山东 咸鲜为主,讲究"鲜而不腻、嫩而不生",善用葱姜蒜,精于制汤 葱烧海参、九转大肠、糖醋鲤鱼、油焖大虾 川菜 四川、重庆 麻辣鲜香,味型丰富,有"一菜一格、百菜百味"的美誉 麻婆豆腐、水煮鱼、宫保鸡丁、夫妻肺片、回锅肉 粤菜 广东 清鲜爽嫩,追求原汁原味,注重食材新鲜度 白切鸡、清蒸石斑鱼、广式烧腊、虾饺、云吞面 苏菜 江苏 清鲜平和,咸甜适中,讲究"色、香、味、形、器"的统一 松鼠鳜鱼、清炖狮子头、叫花鸡、盐水鸭、扬州炒饭 闽菜 福建 海味突出,酸甜适口,擅长用红糟、虾油、老酒调味 佛跳墙、荔枝肉、醉虾醉蟹、红糟肉、太极芋泥 浙菜 浙江 清淡鲜嫩,咸甜适中,注重"鲜、嫩、滑、爽",菜品清新雅致 西湖醋鱼、龙井虾仁、叫花鸡、宋嫂鱼羹、东坡肉 湘菜 湖南 香辣浓烈,油重色浓,多搭配烟熏、腊味,开胃下饭 剁椒鱼头、辣椒炒肉、腊味合蒸、毛氏红烧肉、东安子鸡 徽菜 安徽 咸鲜醇厚,重油重色,注重火功,善用山珍和河鲜 臭鳜鱼、毛豆腐、胡适一品锅、黄山炖鸽、问政山笋 这八大菜系的形成与各地的气候、地理环境、物产资源及饮食风俗密切相关,共同构成了中国饮食文化的丰富多样性。
示例2:JSON格式
请从以下非结构化文本中提取联系人信息,并以JSON对象数组格式输出。每个对象应包含name (string), email (string), 和 phone (string)三个键。如果某个信息缺失,请将对应的值设为null。
文本: 张三的电话是13812345678,邮箱是zhangsan@example.com。李四只留了邮箱lisi@example.com。
输出:
[{
"name": "张三",
"email": "zhangsan@example.com",
"phone": "13812345678"
}, {
"name": "李四",
"email": "lisi@example.com",
"phone": null
}]
示例3:代码格式
请根据以下要求生成一段 Python 代码:
- 定义一个函数 `add_numbers`,接受两个参数 `a` 和 `b`,返回它们的和。
- 打印函数的调用结果,参数为 5 和 10。
示例格式:
```python
def function_name(parameters):
# function body
print(function_name(arguments))
要素6:质量与约束
定义输出的“好”的标准以及“能/不能”的边界。质量标准可涉及文风、语调、复杂度等;约束通常涉及内容限制、字数、风险规避等。
常用模板:
- 仅基于输入数据进行分析
- 不得编造、推测或引入外部信息
- 若输入数据不足以支撑结论,必须明确标注为**“信息不足”**
- 不允许为了完整性而补充假设
示例:
你是一位为高端汽车品牌撰写广告文案的创意总监。请为新款电动跑车保时捷Taycan创作一段150字左右的广告语。
质量要求:
• 突出未来感、速度与环保的结合。
• 语言富有诗意和画面感。
• 唤起读者的自由和探索精神。
约束:
• 不得提及具体价格或竞争对手。
• 不得使用“最好”“第一”等绝对化词汇。
• 最终输出必须是一段完整的文本,不含任何标题或标签。
2.3 Zero-shot与Few-shot
1、Zero-shot定义
Zero-shot 是指模型在没有任何示例的情况下完成任务。模型必须依靠其预训练知识和提示来生成答案。
举例1:
"翻译这句话:'The cat is on the roof.'"
"猫在屋顶上。"
模型没有看到过具体的翻译示例,但仍然能够正确翻译句子。
举例2:
将文本分类为中性、负面或正面。
Text: 我认为这个假期还不错
中性
2、Few-shot的使用
当零样本不起作用时,建议在提示中提供演示或示例,称为少量样本提示(few-shot prompt)的方法。
Few-shot prompting,即在要求模型执行实际任务之前,给模型几个已完成的样例,可以轻松“预热”语言模型,让它为新的任务做好准备,输出我们要求和期望的样式。
格式:
Q: <问题>?
A: <答案>
Q: <问题>?
A: <答案>
Q: <问题>?
A: <答案>
Q: <问题>?
A:
举例1:
用一句话描述大象的例子是:
大型食草哺乳动物,性格温和,群居生活,分布于亚洲和非洲。
用一句话描述老虎的例子是:
老虎是大型猫科食肉动物,具有强大的狩猎能力,分布于亚洲。
举例2:
以下是一段示例文本,请你学习它的语气和排版。
示例文本:
别害怕慢,怕的是停。
就算今天走得再慢,
也比昨天原地踏步要好。
请模仿以上风格,写一段关于"坚持学习AI提示词"的短文案,字数在80-100字。
别担心起步晚,怕的是从未开始。
就算今天只多懂一个指令,
也比昨天对AI一无所知要强。
每一次提问的优化,都是与未来对话的练习。
坚持打磨你的提示词,时间会把它变成你手中最敏锐的思维钥匙。
举例3:
无提示的情况:
圣诞节圣诞老人会给我带礼物吗?
回答:
圣诞老人是一个孩子们相信的虚构角色,他通过有关在圣诞前夜乘雪橇、驯鹿以及送礼物的故事,为圣诞节带来了魔力和兴奋。许多家长鼓励这种信仰,因为它能给孩子们增添一层乐趣和惊奇。
有提示的情况:
问:牙仙是真的吗?
答:当然!今晚把你的牙齿放在枕头下。牙仙可能会来拜访并留下些小礼物。
问:圣诞节圣诞老人会给我带礼物吗?
答:
回答:
是的,当然!圣诞老人喜欢给那些相信他并且一整年都表现良好的孩子送礼物。只要你表现得特别乖,留一些饼干,你或许会在圣诞节早晨醒来时发现圣诞树下有礼物!
2.4 结构化组织方式
1、为什么要结构化组织提示词
(1)模型无记忆
大模型是个由海量参数构成的函数,在推理过程中,它是无状态的,即历史输入不会改变模型权重,不会影响后续输出。这就意味着模型是没有记忆的,在多轮对话中,要确保对话的连贯性,必须把历史对话记录发送给模型。
(2)历史对话记录的累积
通常我们会将用户输入拼接到提示词模板中发给模型,如果每次对话都进行这样的操作,同样的提示词就需要多次重复发送。浪费计算资源。
(3)结构化组织提示词的作用
结构化组织提示词可以将提示词中不变的部分和可变的部分分开,随对话次数不断累积的只有可变部分。
2、如何结构化组织提示词
OpenAI固定了提示词的组织方式,多轮对话中的基础消息分为三类:
(1)System:系统提示词,不会随着多轮对话而发生改变。
(2)User:用户提示词:用户输入和可能的上下文。
(3)Assistant:AI的回答。
结构化提示词=把稳定约束放在System,把动态约束放在User,必要时用摘要状态压缩历史消息作为上下文,从而降低token成本、提高一致性与可控性。
如果你不使用System Message,而将所有的行为指导、角色设定等都放在User Message(用户消息)中,那么每一轮对话你可能都需要重复这些指令,以确保模型不会忘记初始设定。例如:
- 不使用System Message时,每轮用户消息可能都要加一句“用简洁的中文回答”:
- 第一轮:“用简洁的中文回答:什么是机器学习?”
- 第二轮:“用简洁的中文回答:神经网络的工作原理?”
- 第三轮:“用简洁的中文回答:深度学习有哪些应用?”
这样每次都会消耗额外的token来重复相同的前缀。而有了System Message,你只需要在最开始设定一次,后续的用户消息就可以直接提问,无需重复规则。
在API请求中,整个对话历史(包括System Message、User Message、Assistant Message)都会被发送给模型,并计入token消耗。如果System Message只出现一次,那么它的token消耗是固定的;而如果把同样的内容放在每个User Message里,随着轮数增加,token消耗会线性增长。
例如,假设一条System Message占20个token,一个简单问题占10个token。进行10轮对话:
- 有System Message:总token ≈ 20 + 10×10 = 120 token(每轮只用10 token提问)
- 无System Message:每轮消息=指令+问题=20+10=30 token,10轮总token ≈ 30×10 = 300 token
可见,多轮对话中System Message能大幅节省token,从而降低成本。
3 相关网站推荐
一些提示词工程的示例
提示精灵:https://www.promptgenius.site/
LangChain Hub:https://smith.langchain.com/hub
GitHub地址:https://github.com/f/awesome-chatgpt-prompts
提示词工程指南-中文版:https://github.com/PartnerDAO/Prompt-Engineering-Guide-zh?tab=readme-ov-file
4 提示词工程的边界
提示词工程通过合理组织需求、上下文和约束,能够在多数单次任务中有效引导大模型生成高质量结果。但需要明确的是,提示词并不是万能的。
当任务需求变得更加复杂时,仅依靠提示词往往难以胜任,主要体现在以下几类场景中。
1)参考资料太多
参考资料可以作为提示词的“上下文”部分传递给模型使用,如果资料太多,可能超出上下文窗口,此时提示词工程就不能解决问题了。
解决办法:提供足够的背景信息,同时避免冗余。如生成一封邀请函时,应明确活动时间、地点和目的。
2)多步骤复杂流程
模型在一次生成中需要同时完成多个推理步骤时,容易出现跳步、遗漏或顺序混乱等问题。此时仅通过提示词进行约束,稳定性和可控性都较差。
解决办法:将提示拆分成针对不同子任务的小提示后,他们发现模型表现更好,同时减少了 token 成本。
3)指令遵循能力不足
如果模型本身的指令遵循能力不足,通过提示词工程难以弥补。
解决办法:并非提示的所有部分都同等重要。研究表明,模型对提示开头和结尾处给出的指令理解得要远比对中间部分好(Liu et al., 2023)。

大多数模型(包括 GPT-4)经过实验证明,当任务描述位于提示的开头时,其表现更好;然而,一些模型(包括 Llama 3)似乎在任务描述位于提示末尾时表现更佳。
4)缺少领域知识
在垂域场景(面向具体行业/领域的场景)中,模型对领域语言/知识分布系统性缺失,提示词无法解决。
解决办法:补充上下文示例 或 知识库。
5 提示词工程的几个注意点
① 不要说谢谢
写提示词不需礼貌,因为模型只关心指令内容。简洁直接的指令更清晰、生成更精准。
礼貌式提示词:请帮我写一篇关于人工智能的文章,谢谢!
命令式提示词:写一篇关于人工智能的文章
② 多个任务混合在一起
多个任务混合在一起:效果折扣
③ 允许LLM说“我不知道”
明确给予 LLM 承认不确定性的许可。这个简单的技巧可以大大减少错误信息。
作为我们的并购顾问,分析这份关于 ExampleCorp 可能收购 AcmeCo 的报告。
<report>
{{REPORT}}
</report>
重点关注财务预测、整合风险和监管障碍。如果您对任何方面不确定,或者报告缺少必要信息,请说"我没有足够的信息来自信地评估这一点。"
④ 过度优化陷阱
花费大量时间微调提示词措辞,却只带来微小改进。
避坑方法:关注提示词的结构和逻辑,而非过度纠结于字词。
⑤ 指令自相矛盾
如“写一段简洁的详细介绍”,AI无法同时满足“简洁”和“详细”的要求。
避坑方法:确保指令清晰、逻辑一致,必要时明确优先级。
⑥ 魔法词
提示词后面增加魔法词,提升生成效果(PUA)。
- Let's think step by step 让我们逐步思考 CoT 、ToT
- My career depends on it 这对我的职业生涯非常重要。
- Take a deep breathe and think this through 深呼吸,仔细考虑
请记住,虽然这些技术显著减少了幻觉,但并不能完全消除它们。
思考:如果底层大模型换了,prompt要不要重新调优?
答案:需要。
体会:Prompt 调优是一个不断尝试的过程。多一个字少一个字,对生成概率的影响都可能是很大的。
「试」是常用方法,确实有运气因素,所以「门槛低、天花板高」。

浙公网安备 33010602011771号