Prompt(提示词)是用户与大语言模型(LLM)交互的核心方式,它决定了模型生成内容的方向和质量。本教程将详细讲解Prompt的概念、组成结构、设计原则和工程技巧。

1. 什么是 Prompt?

1.1 Prompt 的定义

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中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横行,你还能够看到这个系列及这篇文章的主要原因。