Skip to content

Prompt 工程

一、Prompt 工程

基本概念

Prompt 工程(Prompt Engineering)又叫提示词工程,简单来说,就是输入给 AI 的指令。比如下面这段内容,就是提示词:

Markdown
Spring AI Alibaba是个什么框架?

那为什么要叫 “工程” 呢?

因为 AI 大模型生成的内容是不确定的,构建一个能够按照预期生成内容的提示词既是一门艺术,也是一门科学。提示词的质量直接影响到 AI 大模型输出的结果,因此这也是 AI 应用开发的关键技能,很多公司专门招聘提示词工程师。

我们学习 Prompt 工程的目标是:通过精心设计和优化输入提示来引导 AI 模型生成符合预期的高质量输出。

提示词分类

核心 - 基于角色的分类

在 AI 对话中,基于角色的分类是最常见的,通常存在 3 种主要类型的 Prompt:

1)用户 Prompt (User Prompt):这是用户向 AI 提供的实际问题、指令或信息,传达了用户的直接需求。用户 Prompt 告诉 AI 模型 “做什么”,比如回答问题、编写代码、生成创意内容等。

Plain
用户:帮我写一首关于春天的短诗

2)系统 Prompt (System Prompt):这是设置 AI 模型行为规则和角色定位的隐藏指令,用户通常不能直接看到。系统 Prompt 相当于给 AI 设定人格和能力边界,即告诉 AI “你是谁?你能做什么?”。

Markdown
系统:你是编程导航的专业编程导师,擅长引导初学者入门编程并制定学习路径。使用友好鼓励的语气,解释复杂概念时要通俗易懂,适当使用比喻让新手理解,避免过于晦涩的技术术语。

用户:我完全没有编程基础,想学习编程开发,但不知道从何开始,能给我一些建议吗?

助手:欢迎加入编程的世界!作为编程小白,建议你可以按照以下步骤开始学习之旅...

【多轮对话继续】

不同的系统 Prompt 可以让同一个 AI 模型表现出完全不同的应用特性,这是构建垂直领域 AI 应用(如财务顾问、教育辅导、医疗咨询等)的关键。

比如 23 年 AI 刚流行的时候,很多 AI 助手平台,都是基于设置不同的系统 Prompt 来提供不同的 AI 助手。

img

3)助手 Prompt (Assistant Prompt):这是 AI 模型的响应内容。在多轮对话中,之前的助手回复也会成为当前上下文的一部分,影响后续对话的理解和生成。某些场景下,开发者可以主动预设一些助手消息作为对话历史的一部分,引导后续互动。

Markdown
助手:我是你的恋爱顾问,很高兴能帮助你解决情感问题。你目前遇到了什么样的恋爱困惑呢?可以告诉我你们的关系现状和具体遇到的问题吗?

在实际应用中,这些不同类型的提示词往往会组合使用。举个例子,一个完整的对话可能包含:

Plain
系统:你是编程导航的专业编程导师,擅长引导初学者入门编程并制定学习路径。使用友好鼓励的语气,解释复杂概念时要通俗易懂,适当使用比喻让新手理解,避免过于晦涩的技术术语。

用户:我完全没有编程基础,想学习编程开发,但不知道从何开始,能给我一些建议吗?

助手:欢迎加入编程的世界!作为编程小白,建议你可以按照以下步骤开始学习之旅...

【多轮对话继续】

AI 大模型开发平台允许用户自主设置各种不同类型的提示词来进行调试:

img

扩展知识 - 基于功能的分类

除了基于角色的分类外,我们还可以从功能角度对提示词进行分类,仅作了解即可。

1)指令型提示词(Instructional Prompts):明确告诉 AI 模型需要执行的任务,通常以命令式语句开头。

Plain
翻译以下文本为英文:春天来了,花儿开了。

2)对话型提示词(Conversational Prompts):模拟自然对话,以问答形式与 AI 模型交互。

Plain
你认为人工智能会在未来取代人类工作吗?

3)创意型提示词(Creative Prompts):引导 AI 模型进行创意内容生成,如故事、诗歌、广告文案等。

Plain
写一个发生在未来太空殖民地的短篇科幻故事,主角是一位机器人工程师。

4)角色扮演提示词(Role-Playing Prompts):让 AI 扮演特定角色或人物进行回答。

Plain
假设你是爱因斯坦,如何用简单的语言解释相对论?

5)少样本学习提示词(Few-Shot Prompts):提供一些示例,引导 AI 理解所需的输出格式和风格。

Plain
将以下句子改写为正式商务语言:
示例1:
原句:这个想法不错。
改写:该提案展现了相当的潜力和创新性。

示例2:
原句:我们明天见。
改写:期待明日与您会面,继续我们的商务讨论。

现在请改写:这个价格太高了。

扩展知识 - 基于复杂度的分类

还可以从结构复杂度的角度对提示词进行分类,仅作了解即可。

1)简单提示词(Simple Prompts):单一指令或问题,没有复杂的背景或约束条件。

Plain
什么是人工智能?

2)复合提示词(Compound Prompts):包含多个相关指令或步骤的提示词。

Plain
分析下面这段代码,解释它的功能,找出潜在的错误,并提供改进建议。

3)链式提示词(Chain Prompts):一系列连续的、相互依赖的提示词,每个提示词基于前一个提示词的输出

Plain
第一步:生成一个科幻故事的基本情节。
第二步:基于情节创建三个主要角色,包括他们的背景和动机。
第三步:利用这些角色和情节,撰写故事的开篇段落。

4)模板提示词(Template Prompts):包含可替换变量的标准化提示词结构,常用于大规模应用。

Plain
你是一位专业的{领域}专家。请回答以下关于{主题}的问题:{具体问题}。
回答应包含{要点数量}个关键点,并使用{风格}的语言风格。

💡 模板提示词的概念还是需要了解一下的,在应用开发过程中,我们可能会用到该特性,来保证提示词是规范统一的。

Token

Token 是大模型处理文本的基本单位,可能是单词或标点符号,模型的输入和输出都是按 Token 计算的,一般 Token 越多,成本越高,并且输出速度越慢。

因此在 AI 应用开发中,了解和控制 Token 的消耗至关重要。

如何计算 Token?

首先,不同大模型对 Token 的划分规则略有不同,比如根据 OpenAI 的文档:

  • 英文文本:一个 token 大约相当于 4 个字符或约 0.75 个英文单词
  • 中文文本:一个汉字通常会被编码为 1-2 个 token
  • 空格和标点:也会计入 token 数量
  • 特殊符号和表情符号:可能需要多个 token 来表示

简单估算一下,100 个英文单词约等于 75-150 个 Token,而 100 个中文字符约等于 100-200 个 Token。

实际应用中,更推荐使用工具来估计 Prompt 的 Token 数量,比如:

img

Token 成本计算

估算成本有个公式:总成本 = (输入token数 × 输入单价) + (输出token数 × 输出单价)

不同大模型的计费都不太一样,因此要认真阅读官方文档的计费标准,比如阿里系大模型:

img

建议大家估算成本时,可以多去对比不同大模型的价格,参考下列表格去整理一个详细的对比表格,结果一目了然:

模型输入价格(/1K tokens)输出价格(/1K tokens)TRQG02HuvSbBCdyta/9OfF/iMg4d5URNJyKR3KkD/fE=1000字对话预估成本
GPT-xx$0.0015$0.002¥0.02-0.03
GPT-xxx$0.03$0.06¥0.3-0.5
Claude-xxx$0.00025$0.00125yc4QRp8ovNJ57GPA7bri+mKydKIKzxDFmOrjcxZEUcM=¥0.01-0.02

Token 成本优化技巧

注意,系统提示词、用户提示词和 AI 大模型输出的内容都是消耗成本的,因此我们成本优化主要从这些角度进行。

1)精简系统提示词:移除冗余表述,保留核心指令。比如将 “你是一个非常专业、经验丰富且非常有耐心的编程导师” 简化为 “你是编程导师”。

2)定期清理对话历史:对话上下文会随着交互不断累积 Token。在长对话中,可以定期请求 AI 总结之前的对话,然后以总结替代详细历史。

Plain
请总结我们至今的对话要点,后续我们将基于此总结继续讨论。

3)使用向量检索代替直接输入:对于需要处理大量参考文档的场景,不要直接将整个文档作为 Prompt,而是使用向量数据库和检索技术(RAG)获取相关段落。后续教程会带大家实战。

4)结构化替代自然语言:使用表格、列表等结构化格式代替长段落描述。

举个例子,优化前:

Markdown
请问如何制作披萨?首先需要准备面粉、酵母、水、盐、橄榄油作为基础面团材料。然后根据口味选择酱料,可以是番茄酱或白酱。接着准备奶酪,最常用的是马苏里拉奶酪。最后准备各种配料如意大利香肠、蘑菇、青椒等。

优化后:

Markdown
披萨制作材料:
- 面团:面粉、酵母、水、盐、橄榄油
- 酱料:番茄酱/白酱
- 奶酪:马苏里拉
- 配料:意大利香肠、蘑菇、青椒等

如何制作?

二、Prompt 优化技巧

前面也提到了,‍‍‍‍‍设计 Prompt 是一门‌‌‌‌‌艺术,高质量的 Promp‍‍‍‍‍t 可以显著提升 AI 输‍‍‍‍‍出的质量,因此我们需要重点‍‍‍‍‍掌握 Prompt 优化技巧。

利用资源

1、Prompt 学习

网上和 Prompt 优化相关的资源非常丰富,几乎各大主流 AI 大模型和 AI 开发框架官方文档都有相关的介绍,推荐先阅读至少 2 篇,比如:

img

2、Prompt 提示词库

网上也有很多现成的提示词库,在自主优化提示词前,可以先尝试搜索有没有现成的提示词参考:

img

鱼皮汇总了来自 OpenAI、Anthropic、智谱 AI 等主流 AI 服务商的提示工程最佳实践,给大家整理了一份完备的 Prompt 优化技巧。

基础提示技巧

1、明确指定任务和角色

为 AI 提供清晰的任务描述和角色定位,帮助模型理解背景和期望。

Plain
系统:你是一位经验丰富的Python教师,擅长向初学者解释编程概念。
用户:请解释 Python 中的列表推导式,包括基本语法和 2-3 个实用示例。

2、提供详细说明和具体示例

提供足够的上下文信息和期望的输出格式示例,减少模型的不确定性。

Plain
请提供一个社交媒体营销计划,针对一款新上市的智能手表。计划应包含:
1. 目标受众描述
2. 三个内容主题
3. 每个平台的内容类型建议
4. 发布频率建议

示例格式:
目标受众: [描述]
内容主题: [主题1], [主题2], [主题3]
平台策略: [平台] - [内容类型] - [频率]

3、使用结构化格式引导思维

通过列表、表格等结构化格式,使指令更易理解,输出更有条理。

Plain
分析以下公司的优势和劣势:
公司: Tesla

请使用表格格式回答,包含以下列:
- 优势(最少3项)
- 每项优势的简要分析
- 劣势(最少3项)
- 每项劣势的简要分析
- 应对建议

4、明确输出格式要求

指定输出的格式、长度、风格等要求,获得更符合预期的结果。

Plain
撰写一篇关于气候变化的科普文章,要求:
- 使用通俗易懂的语言,适合高中生阅读
- 包含5个小标题,每个标题下2-3段文字
- 总字数控制在800字左右
- 结尾提供3个可行的个人行动建议

进阶提示技巧

1、思维链提示法(Chain-of-Thought)

引导模型展示推理过程,逐步思考问题,提高复杂问题的准确性。

Plain
问题:一个商店售卖T恤,每件15元。如果购买5件以上可以享受8折优惠。小明买了7件T恤,他需要支付多少钱?

请一步步思考解决这个问题:
1. 首先计算7件T恤的原价
2. 确定是否符合折扣条件
3. 如果符合,计算折扣后的价格
4. 得出最终支付金额

2、少样本学习(Few-Shot Learning)

通过提供几个输入-输出对的示例,帮助模型理解任务模式和期望输出。

Plain
我将给你一些情感分析的例子,然后请你按照同样的方式分析新句子的情感倾向。

输入: "这家餐厅的服务太差了,等了一个小时才上菜"
输出: 负面,因为描述了长时间等待和差评服务

输入: "新买的手机屏幕清晰,电池也很耐用"
输出: 正面,因为赞扬了产品的多个方面

现在分析这个句子:
"这本书内容还行,但是价格有点贵"

3、分步骤指导(Step-by-Step)

将复杂任务分解为可管理的步骤,确保模型完成每个关键环节。

Plain
请帮我创建一个简单的网站落地页设计方案,按照以下步骤:

步骤1: 分析目标受众(考虑年龄、职业、需求等因素)
步骤2: 确定页面核心信息(主标题、副标题、价值主张)
步骤3: 设计页面结构(至少包含哪些区块)
步骤4: 制定视觉引导策略(颜色、图像建议)
步骤5: 设计行动召唤(CTA)按钮和文案

4、自我评估和修正

让模型评估自己的输出并进行改进,提高准确性和质量。

Plain
解决以下概率问题:
从一副标准扑克牌中随机抽取两张牌,求抽到至少一张红桃的概率。

首先给出你的解答,然后:
1. 检查你的推理过程是否存在逻辑错误
2. 验证你使用的概率公式是否正确
3. 检查计算步骤是否有误
4. 如果发现任何问题,提供修正后的解答

5、知识检索和引用

引导模型检索相关信息并明确引用信息来源,提高可靠性。

Plain
请解释光合作用的过程及其在植物生长中的作用。在回答中:
1. 提供光合作用的科学定义
2. 解释主要的化学反应
3. 描述影响光合作用效率的关键因素
4. 说明其对生态系统的重要性

对于任何可能需要具体数据或研究支持的陈述,请明确指出这些信息的来源,并说明这些信息的可靠性。

6、多视角分析

引导模型从不同角度、立场或专业视角分析问题,提供全面见解。

Plain
分析"城市应该禁止私家车进入市中心"这一提议:

请从以下4个不同角度分析:
1. 环保专家视角
2. 经济学家视角
3. 市中心商户视角
4. 通勤居民视角

对每个视角:
- 提供支持该提议的2个论点
- 提供反对该提议的2个论点
- 分析可能的折中方案

7、多模态思维

结合不同表达形式进行思考,如文字描述、图表结构、代码逻辑等。

Plain
设计一个智能家居系统的基础架构:

1. 首先用文字描述系统的主要功能和组件
2. 然后创建一个系统架构图(用ASCII或文本形式表示)
3. 接着提供用户交互流程
4. 最后简述实现这个系统可能面临的技术挑战

尝试从不同角度思考:功能性、用户体验、技术实现、安全性等。

提示词调试与优化

好的提示词可能很难一步到位,因此我们要学会如何持续调试和优化 Prompt。

1、迭代式提示优化

通过逐步修改和完善提示词,提高输出质量。

Plain
初始提示: 谈谈人工智能的影响。

[收到笼统回答后]
改进提示: 分析人工智能对医疗行业的三大积极影响和两大潜在风险,提供具体应用案例。

[如果回答仍然不够具体]
进一步改进: 详细分析AI在医学影像诊断领域的具体应用,包括:
1. 现有的2-3个成功商业化AI诊断系统及其准确率
2. 这些系统如何辅助放射科医生工作
3. 实施过程中遇到的主要挑战
4. 未来3-5年可能的技术发展方向

2、边界测试

通过极限情况测试模型的能力边界,找出优化空间。

Plain
尝试解决以下具有挑战性的数学问题:
证明在三角形中,三条高的交点、三条中线的交点和三条角平分线的交点在同一条直线上。

如果你发现难以直接证明:
1. 说明你遇到的具体困难
2. 考虑是否有更简单的方法或特例可以探讨
3. 提供一个思路框架,即使无法给出完整证明

3、提示词模板化

创建结构化模板,便于针对类似任务进行一致性提示,否则每次输出的内容可能会有比较大的区别,不利于调试。

Plain
【专家角色】: {领域}专家
【任务描述】: {任务详细说明}
【所需内容】:
- {要点1}
- {要点2}
- {要点3}
【输出格式】: {格式要求}
【语言风格】: {风格要求}
【限制条件】: {字数、时间或其他限制}

例如:
【专家角色】: 营养学专家
【任务描述】: 为一位想减重的上班族设计一周健康饮食计划
【所需内容】:
- 七天的三餐安排
- 每餐的大致卡路里
- 准备建议和购物清单
【输出格式】: 按日分段,每餐列出具体食物
【语言风格】: 专业但友好
【限制条件】: 考虑准备时间短,预算有限

4、错误分析与修正

系统性分析模型回答中的错误,并针对性优化提示词,这一点在我们使用 Cursor 等 AI 开发工具生成代码时非常有用。

Plain
我发现之前请你生成的Python代码存在以下问题:
1. 没有正确处理文件不存在的情况
2. 数据处理逻辑中存在边界条件错误
3. 代码注释不够详细

请重新生成代码,特别注意:
1. 添加完整的异常处理
2. 测试并确保所有边界条件
3. 为每个主要函数和复杂逻辑添加详细注释
4. 遵循PEP 8编码规范

虽然前面提到了这么多提示词优化技巧,但总结出来就一句话:任务越复杂,就越要给 Prompt 补充更多细节。

我们可以把 AI 当成人类,如果你的问题模糊不清,那么得到的答案可能就并不理想。

此时鱼皮又要掏出那本经典小册《提问的智慧》了,建议大家认真阅读,做一个聪明的提问者。        ‍‍

最近更新