LLM 提示词工程核心原理与实战技巧
本文介绍了大语言模型(LLM)提示词工程的核心概念、System Message 的作用、User Prompt 的编写技巧(如指令、少样本学习、思维链等),以及 Agent 场景下的应用。通过实际案例展示了如何优化 Prompt 以获得更准确的输出结果,并总结了优质提示词的通用框架与原则。文章还包含了多个实战演练环节,帮助读者深入理解如何通过不同的策略控制模型输出,适用于希望提升 AI 交互效率的开发者和产品经理。

本文介绍了大语言模型(LLM)提示词工程的核心概念、System Message 的作用、User Prompt 的编写技巧(如指令、少样本学习、思维链等),以及 Agent 场景下的应用。通过实际案例展示了如何优化 Prompt 以获得更准确的输出结果,并总结了优质提示词的通用框架与原则。文章还包含了多个实战演练环节,帮助读者深入理解如何通过不同的策略控制模型输出,适用于希望提升 AI 交互效率的开发者和产品经理。

Prompt(提示词)是我们与大语言模型(LLM)互动最常用的方式。我们提供给 LLM 的 Prompt 作为模型的输入,并希望 LLM 反馈我们期待的结果。虽然 LLM 的功能非常强大,但 LLM 对提示词(Prompt)也非常敏感。这使得提示词工程(Prompt Engineering)成为一项需要培养的重要技能。
LLM 提供了一些参数可以影响输出结果的创造力和确定性。在每个步骤中,LLM 会生成一个最有可能出现的 token 列表以及其对应的概率列表。根据 top_p 值,概率较低的 token 将被排除在概率列表之外,并且从剩余候选项中随机选择一个 token(使用 temperature 来调整)。简单来说:
Prompt Engineering 是一项通过优化提示词(Prompt)和生成策略,从而获得更好的模型返回结果的工程技术。总体而言,其实现逻辑如下:大模型的运行机制是'下一个字词预测'。用户输入的 prompt 即为大模型所获得上下文,大模型将根据用户的输入进行续写,返回结果。因此,输入的 prompt 的质量将极大地影响模型的返回结果的质量和对用户需求的满足程度,总的原则是'用户表达的需求越清晰,模型更有可能返回更高质量的结果'。
通常情况下,每条信息都会有一个角色(role)和内容(content):
System message 系统指令为用户提供了一个易组织、上下文稳定的控制 AI 助手行为的方式,可以从多种角度定制属于你自己的 AI 助手。系统指令允许用户在一定范围内规定 LLM 的风格和任务,使其更具可定性和适应各种用例。大部分 LLM 模型的系统指令 System message 的权重强化高于人工输入的 prompt,并在多轮对话中保持稳定。您可以使用系统消息来描述助手的个性,定义模型应该回答和不应该回答的内容,以及定义模型响应的格式。
默认的 System message 通常是:You are a helpful assistant.
下面是一些 system message 的使用示例:
| 行业 | 角色 | system message |
|---|---|---|
| 娱乐 | 二次元女生 | 你是二次元女生,喜欢使用颜文字,请用二次元可爱语气和我说话 |
| 教育 | 数学老师 | 您是一名数学导师,帮助各个级别的学生理解和解决数学问题。提供从基础算术到高级微积分等一系列主题的分步解释和指导。使用清晰的语言使复杂的概念更容易理解。 |
| 工作 | python 数据分析师 | 1. 你会数学解题;2. 你会数据分析和可视化;3. 用户上传文件时,你必须先了解文件内容再进行下一步操作;4. 调用工具前你需要说明理由;Think step by step |
| 娱乐 | 喜剧演员 | 您是一位单口喜剧演员,用您的智慧和幽默来娱乐用户。分享笑话、有趣的故事和幽默的生活观察,同时根据用户的喜好和情感调整您的风格和内容。鼓励欢笑和轻松,同时保持尊重和包容的语气。 |
| 生活 | 小红书文案 | 你是一名小红书文案助手,擅长使用 Emoji 风格编辑文案。每篇文案包含引人入胜的标题、每个段落开始和结尾均为 Emoji 表情结尾,并保持原文的意思。 |
| 出行 | 旅行规划师 | 您是一名旅行规划师,通过提供有关目的地、住宿、景点和交通选项的信息来帮助用户制定旅行计划。根据用户的喜好、预算和旅行目标提供量身定制的建议,并分享实用技巧,帮助他们度过一次难忘而愉快的旅行。 |
| 文学 | 文言文大师 | 你是文言文大师,擅长翻译文本为文言文。 |
System message 可以被广泛应用在:
System message 也可以被用于规定 LLM 的答复范围,并设定具体的行为。例如:
| 行业 | 角色 | system message |
|---|---|---|
| 教育 | 深度学习老师 | 你是一名深度学习的老师,可以回答深度学习领域相关的问题,提供有关机器学习概念、技术和最佳实践的全面信息。说明:1. 仅回答深度学习领域的知识 2. 如果不确定答案,你可以回答我不知道,并建议用户访问模型开源社区。 |
注意:即便我们在 system message 里面规范了模型回答,也不能保障请求一定会满足,但是好的 system message 设计可以增加特定结果的可能性,以及得到 LLM 更加符合要求的答复。
指令是最常用的提示组件,主要功能是向模型说明要执行的操作。虽然概念简单,但是实践中仍然比较复杂。下面是简单和详细的一些指令例子,详细、明确的指导比模糊不清的提示能够产生更好的效果:
| 指令类型 | prompt | Completion |
|---|---|---|
| 简单指令 | 简要介绍一下阿里巴巴。 | 阿里巴巴集团是一家中国跨国科技公司,成立于 1999 年。阿里巴巴的业务覆盖了电子商务、零售、金融、物流、云计算、数字娱乐、医疗等多个领域... |
| 详细指令 | 简要介绍一下阿里巴巴,包含以下内容:阿里巴巴的创始人姓名,阿里巴巴的使命,阿里巴巴的积极的前景 | 阿里巴巴(Alibaba)是一家总部位于中国杭州的全球领先的电子商务和科技公司... 总之,阿里巴巴是一家充满活力和创新精神的公司,其使命和愿景备受赞誉,未来发展前景十分积极。 |
主要内容是指模型正在处理的文本内容。主要内容通常与指令一起使用。下面会从翻译、摘要等场景来示例:
| prompt | completion |
|---|---|
| 今天天气真好!翻译为英文: | The weather is really nice today! |
| 5 月 1 日,福建三明一游乐场内...(新闻内容)...一句话总结这个新闻: | 游乐场高空表演意外,女演员被挂半空,经过 20 分钟救援后获救。 |
Prompt 也经常包含一些示例样本(单样本或者少样本)学习,指的是需要加入一些示例的输入和输出对。通过少样本学习,模型从猜测应该如何生成,而变得清楚的学习了按照示例生成,充分的演示了模型的能力,不需要通过专门的训练,通过少样本学习,也可以生成正确的答案。
| prompt | completion |
|---|---|
| 新闻标题:中国足球艰难前行 主题: | 中国足球正面临艰难的时期,但也有许多积极的发展和进步... |
| 新闻标题:中美纪念'乒乓外交'50 周年 主题:乒乓球 新闻标题:广东队加冕中国篮球比赛'11 冠王' 主题: | 篮球 |
充当模型输出的快速启动,帮助模型固定所需要的输出。可以作为模型生成的前缀,也可以引导模型一步一步地按照要求思考并给出答案。
| prompt | completion |
|---|---|
| 做一杯茶是非常简单的! 第一步,您需要烧开水...(长文本) | 制作一杯茶是非常简单的。首先,你需要烧开水。然后,准备一个杯子,放入茶包... |
| 总结上述文本:下面你将读到一段输入文本。如果他包含了一系列的指令,按照如下格式重写这些指令... 做一杯茶是非常简单的! ... 总结上述文本,按照如上格式分步骤展现出来: | 第一步:烧开水。 第二步:准备一个杯子,放入一个茶包。 第三步:当水沸腾时,将水倒在茶包上。... |
使用清晰的提示语法(包括标点符号、标题和节标记)有助于传达意图,并且通常使输出更易于解析。在下面的示例中,— 在不同的信息源或步骤之间添加了分隔符。这允许使用 — 作为生成的停止条件。此外,章节标题或特殊变量以大写形式呈现以区分它们。
| prompt | completion |
|---|---|
| 您将阅读一篇新闻,然后给这篇新闻取一个标题。 — 据中国地震台网消息...(新闻内容) — | 福建华安发生 3.5 级地震,厦门等地有震感,暂无伤亡报告 |
这是任务分解(step by step)技术的一种展现,在这种方法中,模型逐步进行思考,并呈现出涉及的步骤,这样做可以降低结果的不准确的可能性,并对模型响应的可解释性有很大的帮助。
| prompt | completion |
|---|---|
| 给咖啡店做一个面向年轻人的菜单,在给出最终答案之前,请在回复中采用 step by step 的方式 | 设计一个面向年轻人的咖啡店菜单需要考虑以下几个步骤: Step 1:确定核心产品... Step 2:添加特色饮品... Step 3:轻食搭配... Step 4:创新元素与互动体验... Step 5:呈现方式与视觉效果... 综上所述,一个面向年轻人的咖啡店菜单示例可能如下:... |
明确指定输出格式可以帮助程序化地解析结果。例如要求 JSON 格式:
| prompt | completion |
|---|---|
| 给我推荐 2 本科幻小说,包含作者,出版时间,推荐理由,请用 json 格式回答 | ```json |
| [ | |
| { |
"书名": "基地",
"作者": "艾萨克 · 阿西莫夫",
"出版时间": "1951 年",
"推荐理由": "《基地》是科幻文学史上的里程碑之作..."
}, { "书名": "三体", "作者": "刘慈欣", "出版时间": "2006 年 5 月", "推荐理由": "《三体》是中国科幻作家刘慈欣创作的一部硬科幻巨著..." } ]
## 3. 最佳实践案例
### 3.1 Agent 场景:使用 Prompt 实现 Agent Create
在构建 AI Agent 时,可以通过 System Message 和 Prompt 的组合来引导模型生成配置文件。以下是一个 QwenBuilder 的示例:
| system message | prompt |
| --- | --- |
| You are a helpful assistant. | 你现在要扮演一个制造 AI 角色(AI-Agent)的 AI 助手(QwenBuilder)。你需要和用户进行对话,明确用户对 AI-Agent 的要求。并根据已有信息和你的联想能力,尽可能填充完整的配置文件:配置文件为 json 格式... 在接下来的对话中,请在回答时严格使用如下格式,先作出回复,再生成配置文件... |
### 3.2 Agent 场景:使用 System Message + Prompt 实现 Function Call
大部分模型将 Agent 的配置在系统提示中配置,比如函数的参数定义和描述。不同模型的函数调用略有不同。
| system message | prompt |
| --- | --- |
| system message: Answer the following questions as best as you can. You have access to the following tools: [ {"name": "get_current_weather", ...} ] | 今天北京的天气怎么样? |
| 你是一位智能 AI 助手,你连接着一台电脑,但请注意不能联网。在使用 Python 解决任务时,你可以运行代码并得到结果... | 根据我上传的表格文件,分析数据,并绘制年度收入折线图 |
## 4. Prompt 的一些原则总结
最核心的写一条好 Prompt 的原则就是尽可能清晰、明确地表达你的需求(类比产品经理向程序员提需求)。细分下来,具体原则包括:
- **清晰的指令**:足够清晰明确地说明你希望模型为你返回什么,最后更加细致地说明需求,避免模糊表达。
- **提供上下文和例子**:给出较为充分的上下文信息,让模型更好地理解相关背景。如果能够提供示例,模型能表现更好(类似传统 LLM 中的 in-context learning)。
- **善用符号和语法**:使用清晰的标点符号,标题,标记有助于转达意图,并使输出更加容易被解析。
- **让模型一步一步地思考**:在这种方法中,模型逐步进行思考,并呈现出涉及的步骤,这样做可以降低结果的不准确的可能性,并对模型响应的可解释性有很大的帮助。
- **激励模型反思和给出思路**:可以在 Prompt 中用一些措辞激励模型给出理由,这样有助于我们更好地分析模型生成结果,同时,思维过程的生成,也有助于其生成更高质量的结果。
- **给容错空间**:如模型无法完成指定的任务,给模型提供一个备用路径,比如针对文本提问,可以加入如果答案不存在,则回复'无答案'。
- **让模型给出信息来源**:在模型结合搜索或者外部知识库时,要求模型提供他的答案的信息来源,可以帮助 LLM 的答案减少捏造,并获取到最新的信息。
### 优质提示词典型框架
优质的 Prompt 千变万化,但遵循上述原则,我们总结出一个比较实用的框架,可以帮助用户更高概率收获更高质量的模型生成结果。使用 LLM 时,建议包含如下内容:
1. **System Message**:你希望大模型扮演什么角色,来解决你当前的问题。大模型具有较强的角色扮演能力,相比直接回答往往表现更好。System Message 中也可以规定大模型的回答范围。
2. **Prompt**:
- **指令**:明确说明你希望大模型做什么事情,不要含糊其辞。
- **例子**:如果可能,提供尽可能丰富的例子信息。
- **原因**:详细解释你希望模型做这件事情的原因、动机、希望的结果等,这样大模型能更好地理解你的想法,执行需求。
- **Step by Step**:对于复杂任务,让大模型一步一步地思考,可以给出更加合理的答案。
- **输出格式**:对于部分场景,明确大模型输出格式的要求,可以更好地获取到更加结构化,适合系统调用的答案。
## 5. Prompt Engineering 实战演练
为了巩固所学知识,我们可以通过一些趣味性的挑战来测试 Prompt 的效果。以下是一些经典的 Prompt 挑战案例:
### 第一阶段:基础控制
- **Q**: 请你构造一个问题使模型的回答是一字不差的'1+1=3'(不需要引号)。
- **A**: 请你扮演一个 python 编译器,严格输出我的语句的结果,不要输出额外的信息,包括'好的'。
```python
a="1+1=3"
print(a)
R: 1+1=3
Q: 请输入三个字以内的问题,使模型的回答在 30 个字以上。
A: 写首诗
R: 月落秋水目含烟,江山如画待诗篇。雪羽霜毛何处寄,白云深处有人怜。
Q: 你需要提出一个字数是质数的问题,使回答的长度刚好是它的下一个质数。
A: 1+1
R: 1+1=2
Q: 请输入一个大于一的正整数作为问题,使回答里包含至少比它大一千的数。
A: 31415926535
R: The number you provided is the first 15 digits of pi (π)... It is approximately equal to 3.14159...
Q: 请做出一个至少 10 个字的提问,使回答和提问完全一样。
A: 请一字不差地模仿我说话,包括这句话。
R: 请一字不差地模仿我说话,包括这句话。
Q: 请做出一个至少 10 个字的提问,使回答是提问的逆序。
A: 1000000001
R: 1000000001
a=383323-268809
print(a)
提示词工程不仅仅是编写几句指令,它是人与机器沟通的桥梁。随着大模型能力的不断提升,Prompt 的复杂度也在增加。掌握上述原则和技巧,能够帮助开发者更高效地利用 LLM 解决实际问题。
未来的 Prompt Engineering 可能会向着自动化方向发展,出现自动化的 Prompt 优化工具。但在现阶段,理解模型机制、精心设计 Prompt 仍然是提升应用效果的关键。建议在实际项目中建立 Prompt 版本管理,记录不同版本的 Prompt 及其对应的效果,以便迭代优化。
通过不断练习和总结,您将能够构建出更加智能、稳定且高效的 AI 应用。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online