Prompt(提示词)是用户与大语言模型(LLM)交互的核心方式,它决定了模型生成内容的方向和质量。本教程将详细讲解Prompt的概念、组成结构、设计原则和工程技巧。
1. 什么是 Prompt?
1.1 Prompt 的定义
Prompt 是用户输入给大语言模型的文本指令,用于引导模型生成特定的输出。它是人机交互的桥梁,决定了模型理解用户意图和生成响应的方向。事实上,我们中的大部分人在首次接触大模型时,就使用到了 Prompt,比如“你好,你是谁?”,如以下示例:

1.2 Prompt 的重要性
| 方面 | 说明 |
|---|---|
| 引导输出 | 决定模型生成内容的方向和风格 |
| 控制质量 | 好的Prompt能显著提升输出质量 |
| 降低成本 | 精准的Prompt减少反复交互,节省大模型消耗 |
| 扩展能力 | 通过精心设计的Prompt,可以让模型完成复杂任务 |
2. Prompt 的组成与结构
2.1 Prompt 的基本组成
一个完整的、优秀的Prompt通常包含以下几个要素:
| 组成要素 | 说明 | 是否必须 | 示例 |
|---|---|---|---|
| 任务描述 | 明确告诉模型要做什么 | 是 | "请解释什么是装饰器。" |
| 背景信息 | 提供必要的上下文 | 否 | "我正在学习Python编程。" |
| 输出要求 | 指定输出的格式、风格 | 否 | "请用简洁的语言,不超过100字。" |
| 示例参考 | 提供期望输出的示例 | 否 | "例如:装饰器就像给函数穿衣服..." |
2.2 Prompt 的分层结构
在实际应用中,Prompt通常分为以下几个层次:
| 层次 | 名称 | 说明 | 示例 |
|---|---|---|---|
| 第一层 | 系统提示词(System Prompt) | 定义模型的角色和基本行为 | "你是一个专业的编程助手,请用简洁的语言回答问题。" |
| 第二层 | 用户提示词(User Prompt) | 用户的具体问题或任务 | "请解释Python中的装饰器。" |
| 第三层 | 助手回复(Assistant Response) | 模型的输出,作为下一轮的Context | "装饰器是一种用于修改函数行为的语法结构..." |
我们这里以 Dify 的 Prompt 设计为例,展示Prompt的分层结构:

Dify是一款开源的低代码AI应用开发平台,支持快速构建基于大语言模型的应用,我们会在后面的教程中详细介绍。
2.3 系统提示词 vs 用户提示词
| 类型 | 作用 | 设置方式 | 持久性 |
|---|---|---|---|
| 系统提示词 | 定义模型角色、行为规范、输出格式 | 在对话开始前设置,对整个对话有效 | 整个对话期间有效 |
| 用户提示词 | 具体的任务或问题 | 每轮对话由用户输入 | 仅当前轮次有效 |
3. Prompt 设计原则
3.1 清晰明确
原则:Prompt应该清晰、明确,避免歧义和模糊表达。
| 问题Prompt | 改进后的Prompt | 改进点 |
|---|---|---|
| "说点什么" | "请用一句话介绍Python编程语言" | 明确任务和输出要求 |
| "帮我写代码" | "请帮我写一个Python函数,用于计算两个数的最大公约数" | 明确具体任务 |
| "这个好吗?" | "这段代码的性能如何?有哪些可以优化的地方?" | 明确评估维度 |
3.2 提供上下文
原则:提供必要的背景信息,帮助模型更好地理解任务。
| 场景 | 无上下文Prompt | 有上下文Prompt |
|---|---|---|
| 编程问题 | "这段代码有什么问题?" | "我正在开发一个电商网站的购物车功能,这段代码用于计算订单总价。请帮我找出潜在的问题。" |
| 写作任务 | "帮我写一篇文章" | "我需要写一篇面向初学者的Python入门教程,目标读者是没有编程经验的大学生。请帮我写一篇500字左右的介绍。" |
| 翻译任务 | "翻译这段文字" | "这是一段技术文档的摘要,请翻译成英文,保持专业术语的准确性。" |
3.3 指定输出格式
原则:明确指定输出的格式、长度和风格。
| 指定内容 | 示例 |
|---|---|
| 格式 | "请以表格形式列出..."、"请用JSON格式输出..." |
| 长度 | "请用不超过100字..."、"请详细解释,不少于500字..." |
| 风格 | "请用专业、学术的语言..."、"请用通俗易懂的方式..." |
| 结构 | "请分三点说明..."、"请按照'定义-示例-应用'的结构回答..." |
3.4 分步引导
原则:对于复杂任务,将Prompt分解为多个步骤。
示例:
单步Prompt(效果不佳):
"请帮我设计一个电商网站的用户登录功能,包括前端界面、后端API和数据库设计。"
分步Prompt(效果更好):
第一步:"请列出电商网站用户登录功能需要考虑的主要需求点。"
第二步:"基于上述需求,请设计用户登录的数据库表结构。"
第三步:"请设计用户登录的后端API接口,包括请求参数和响应格式。"
第四步:"请设计用户登录的前端界面,包括布局和交互逻辑。"
3.5 提供示例
原则:通过示例展示期望的输出格式和风格。
示例:
"请按照以下格式总结文章:
示例:
文章:人工智能正在改变各行各业。医疗领域,AI辅助诊断提高了准确率;金融领域,AI算法优化了风险评估...
总结:
- 主题:AI在各行业的应用
- 关键点:医疗诊断、金融风控
- 影响:提高效率、降低成本
请按照上述格式,总结以下文章:
[文章内容]"
4. Prompt 工程技巧
4.1 角色扮演(Role Prompting)
技巧:让模型扮演特定角色,以获得更专业、更符合预期的回答。
| 角色类型 | Prompt示例 | 适用场景 |
|---|---|---|
| 专业专家 | "你是一个有10年经验的Python开发者,请..." | 技术问题、专业建议 |
| 教师 | "你是一位面向初学者的编程教师,请用简单易懂的语言解释..." | 教学场景、知识普及 |
| 审查员 | "你是一位代码审查专家,请从性能、安全、可维护性三个角度审查以下代码..." | 代码审查、质量评估 |
| 翻译官 | "你是一位精通中英双语的技术翻译,请..." | 技术文档翻译 |
示例:
"你是一位资深的软件架构师,正在为一个初创公司设计系统架构。
公司的产品是一个社交电商平台,预计用户量在100万左右。
请从以下角度给出架构建议:
1. 技术选型
2. 数据库设计
3. 缓存策略
4. 扩展性考虑"
4.2 思维链(Chain of Thought)
技巧:引导模型逐步思考,展示推理过程。
| 普通Prompt | 思维链Prompt |
|---|---|
| "请计算:如果一本书有300页,每天读30页,几天读完?" | "请计算:如果一本书有300页,每天读30页,几天读完?请一步步思考并展示计算过程。" |
示例:
"请解决以下数学问题,并展示完整的思考过程:
问题:小明有50元,买了3支铅笔,每支2元,还剩多少钱?
请按照以下格式回答:
1. 理解问题:明确已知条件和求解目标
2. 制定计划:说明解决步骤
3. 执行计算:展示计算过程
4. 验证答案:检查结果是否正确"
4.3 结构化输出
技巧:要求模型以特定结构输出,便于后续处理。
| 输出格式 | Prompt示例 |
|---|---|
| JSON | "请以JSON格式输出,包含以下字段:name, age, skills(数组)" |
| 表格 | "请以表格形式列出,包含'功能'、'优先级'、'预估工时'三列" |
| 列表 | "请以要点列表形式列出,每点不超过20字" |
| Markdown | "请使用Markdown格式,包含标题、代码块和引用" |
示例:
"请分析以下Python代码的问题,以JSON格式输出:
{
'issues': [
{
'type': '性能问题',
'line': 10,
'description': '...',
'suggestion': '...'
}
],
'overall_score': 85,
'summary': '...'
}"
4.4 约束与限制
技巧:设置明确的约束条件,控制输出范围。
| 约束类型 | Prompt示例 |
|---|---|
| 长度限制 | "请用不超过50字回答"、"请写一篇500-800字的文章" |
| 内容限制 | "不要使用专业术语"、"只讨论技术方面,不要涉及商业内容" |
| 格式限制 | "不要使用代码块"、"只使用纯文本格式" |
| 范围限制 | "只考虑Python 3.10及以上版本的特性"、"只分析前100行代码" |
示例:
"请总结这篇技术文档,要求:
1. 不超过200字
2. 只总结核心观点,不包含细节
3. 使用简洁的学术语言
4. 不使用代码示例
5. 分为'背景'、'方法'、'结论'三段"
4.5 多轮对话引导
技巧:通过多轮对话逐步引导模型完成复杂任务。
示例:
第一轮:
用户:"我想开发一个简单的待办事项应用,请帮我列出需要实现的核心功能。"
模型:"核心功能包括:1. 添加任务;2. 删除任务;3. 标记完成;4. 任务列表展示..."
第二轮:
用户:"请为'添加任务'功能设计数据结构。"
模型:"任务数据结构建议:{ id, title, description, priority, status, created_at }..."
第三轮:
用户:"请为'添加任务'功能设计API接口。"
模型:"API设计:POST /api/tasks,请求参数:{ title, description, priority }..."
5. 总结
5.1 核心内容回顾
经过本节内容的学习,你已经掌握了以下知识:
| 知识点 | 核心要点 | 掌握程度 |
|---|---|---|
| Prompt定义 | 用户输入给LLM的文本指令,引导模型生成特定输出 | 掌握 |
| Prompt组成 | 任务描述、背景信息、输出要求、示例参考 | 掌握 |
| 设计原则 | 清晰明确、提供上下文、指定格式、分步引导、提供示例 | 掌握 |
| 工程技巧 | 角色扮演、思维链、结构化输出、约束限制、多轮引导 | 掌握 |
5.2 常见问题与解答(FAQ)
问: Prompt和Prompt Engineering有什么区别?
Prompt是用户输入给模型的具体文本指令,而Prompt Engineering(提示工程)是设计和优化Prompt的技术和过程。
问: 系统提示词和用户提示词哪个更重要?
两者都重要,但作用不同。系统提示词定义模型的整体行为和风格,对整个对话有效;用户提示词是具体任务,决定当前输出的内容。对于需要特定角色或风格的场景,系统提示词很关键;对于一次性任务,用户提示词更重要。
问: 如何判断Prompt是否足够好?
可以从以下几个维度评估:
- 准确性:输出是否准确回答了问题
- 相关性:输出是否与问题紧密相关,没有跑题
- 完整性:输出是否涵盖了所有要求的方面
- 格式性:输出格式是否符合要求
- 效率性:是否一次性获得满意答案,无需多次调整
问: Prompt越长越好吗?
不一定。Prompt应该"足够精确"而非"足够长"。关键要素包括:
- 明确的任务描述(必须)
- 必要的背景信息(按需)
- 清晰的输出要求(按需)
- 示例参考(复杂任务需要)
过长的Prompt可能增加大语言模型的资源消耗,反而降低效果。
6. 题外话
人类在AI应用“开发”的初始阶段是神话“提示词”的,很多所谓的AI应用加个Prompt就包装成为领域内的“专家”了,而今,人们认为“提示词”是狗都会的基本功。
也许,当你真正理解了Agent且深度参与了AI应用的构建,那么你会认为:Prompt仍然需要人类给予足够的重视。
这也是各类Code Agent应用遍布,各种Claw横行,你还能够看到这个系列及这篇文章的主要原因。
举手提问