标题提到的Prompt工程在本文写作时(2022年7月)还不是一个广泛流行的概念(随着ChatGPT在2022年底发布才广为人知)。本文基于当时能接触到的大语言模型(如GPT-3),总结Prompt工程的最佳实践。

最近我在用大语言模型做一些项目,发现Prompt的质量直接决定了输出的质量。同样的模型,好的Prompt能得到专业级的输出,差的Prompt只能得到乱七八糟的结果。

经过几个月的实践,我总结了一些Prompt工程的最佳实践。本文分享这些经验,包括Prompt的基本结构、写作技巧、常见模式、调试方法,以及实际应用案例。

一、什么是Prompt工程

先说说什么是Prompt工程。

1. Prompt是什么

Prompt就是你给AI的输入指令。

比如,你对AI说:"帮我写一篇关于春天的文章",这就是一个Prompt。AI根据这个Prompt,生成对应的输出。

Prompt可以是一个问题、一段指令、一些示例,或者它们的组合。

2. 为什么Prompt工程重要

大语言模型(如GPT-3)的能力很强,但它不会读心术。你给它什么输入,它就给你什么输出。

  • 模糊的Prompt → 模糊的输出
  • 清晰的Prompt → 清晰的输出
  • 结构化的Prompt → 结构化的输出
  • 有示例的Prompt → 符合示例风格的输出

Prompt工程,就是研究如何写好Prompt,让AI输出你想要的结果。

3. Prompt工程的核心思想

Prompt工程的核心思想是:把AI当成一个聪明但需要明确指令的助手。

你不能只说"帮我写点东西",你要告诉它:

  • 写什么主题
  • 用什么风格
  • 多长篇幅
  • 什么结构
  • 给谁看

指令越明确,输出越符合预期。

二、Prompt的基本结构

一个好的Prompt,通常包含以下几个部分。

1. 角色设定

给AI设定一个角色,让它以特定的身份回答。

你是一个资深的前端工程师,有10年的React开发经验。

角色设定能让AI的输出更专业、更有针对性。如果你设定它是医生,它会用医学术语回答;如果你设定它是老师,它会用教学的方式回答。

2. 任务描述

明确告诉AI要做什么。

请帮我写一篇关于React 18并发特性的技术文章。

任务描述要具体,不要模糊。不要说"帮我写点东西",要说"帮我写一篇关于XX的文章"。

3. 上下文和背景

提供必要的背景信息,让AI了解情况。

这篇文章是给有一定React基础的前端开发者看的,他们已经了解React的基本用法,但对并发特性不太熟悉。

上下文能帮助AI更好地理解任务,输出更符合需求的内容。

4. 输出格式

指定输出的格式,比如长度、结构、风格等。

要求:
- 字数在2000字左右
- 分为引言、原理、用法、总结四个部分
- 语言通俗易懂,适合初学者
- 包含代码示例

输出格式越明确,AI的输出越可控。

5. 示例(可选)

给AI一些示例,让它模仿示例的风格和格式。

示例输入:如何学习编程?
示例输出:学习编程需要以下步骤:1. 选择一门语言...

示例是最强大的Prompt技术之一。通过示例,AI能准确理解你想要的输出格式和风格。

三、Prompt写作技巧

说说写Prompt的一些技巧。

1. 明确具体,不要模糊

这是最基本的技巧。

# 模糊的Prompt
写一篇关于健康的文章。

# 明确的Prompt
写一篇关于上班族如何保持健康的文章,字数800字,分为饮食、运动、睡眠三个部分,语言通俗易懂。

明确的Prompt,输出的质量会高很多。

2. 用肯定句,不要用否定句

AI对否定句的理解有时候不太好。

# 不太好
不要写得太技术化。

# 更好
用通俗易懂的语言,适合非技术背景的读者。

告诉AI要做什么,而不是不要做什么。

3. 分步指令

对于复杂的任务,把它拆分成多个步骤。

请按以下步骤写一篇产品评测:
1. 先介绍产品的基本信息(名称、价格、定位)
2. 然后描述外观和手感
3. 接着分析性能表现
4. 再说说优缺点
5. 最后给出购买建议

分步指令能让AI的输出更有条理,不容易遗漏要点。

4. 指定受众

告诉AI这篇内容是给谁看的。

这篇文章是给完全不懂编程的人看的,请用最通俗的语言解释。

不同的受众,需要不同的语言风格和深度。指定受众,AI就能调整输出。

5. 限制长度

指定输出的长度,避免AI写得太长或太短。

- 字数在500-800字之间
- 不超过3个段落
- 用3个要点概括

长度限制能让输出更可控。

6. 提供上下文

如果任务需要背景信息,一定要提供。

我正在做一个电商网站,用户反馈购物车体验不好。请帮我分析可能的原因,并给出改进建议。

背景信息:
- 网站用React开发
- 购物车用Redux管理
- 主要问题是添加商品后更新慢

上下文越充分,AI的回答越有针对性。

四、常见的Prompt模式

总结几种常见的Prompt模式。

1. 零样本(Zero-shot)

不给示例,直接给指令。

请把以下英文翻译成中文:
Hello, how are you?

适合简单的任务,比如翻译、摘要、简单问答。

2. 单样本(One-shot)

给一个示例。

请模仿以下风格写一句话:
示例:今天天气真好,阳光明媚,适合出去走走。
主题:下雨天

适合需要特定风格或格式的任务。

3. 少样本(Few-shot)

给多个示例。

请根据以下示例,对用户的情感进行分类(正面/负面/中性):

示例1:这个产品太棒了,我很喜欢!→ 正面
示例2:质量太差了,用了一天就坏了。→ 负面
示例3:收到了,还没用。→ 中性

用户评论:物流很快,但产品一般。→

少样本是最常用的模式,适合分类、提取、格式转换等任务。示例越多,输出越准确。

4. 思维链(Chain-of-Thought)

让AI一步一步思考,而不是直接给答案。

请一步一步地思考,然后回答问题:
一个商店有10个苹果,卖出了3个,又进货了5个,现在有多少个苹果?

思维链能提高AI在推理、数学、逻辑问题上的准确率。

5. 角色扮演

让AI扮演一个特定的角色。

你是一个有10年经验的产品经理。请帮我分析这个产品需求是否合理,并给出改进建议。

需求:做一个能自动写代码的AI工具。

角色扮演能让AI的输出更专业、更有深度。

五、Prompt调试方法

写Prompt不是一次就能写好的,需要不断调试。

1. 从简单开始

先写一个简单的Prompt,看看输出效果。然后根据输出,逐步调整和完善。

不要一开始就写很复杂的Prompt,那样出了问题不知道是哪里的问题。

2. 一次只改一个变量

调试Prompt时,一次只改一个地方。

比如,先改角色设定,看看输出有没有变化。如果一次改多个地方,就不知道是哪个改动起了作用。

3. 对比测试

准备几个不同的Prompt,用同样的输入测试,对比输出效果。

Prompt A:写一篇关于XX的文章
Prompt B:你是一个资深记者,请写一篇关于XX的深度报道,字数1500字...

对比之后,选择效果最好的那个。

4. 分析失败案例

当AI的输出不符合预期时,分析原因:

  • 是指令不够明确?
  • 是缺少上下文?
  • 是示例不够好?
  • 是任务太复杂?

找到原因,然后针对性地改进Prompt。

5. 迭代优化

Prompt工程是一个迭代的过程。

写Prompt → 测试 → 分析 → 改进 → 再测试,直到输出符合预期。

不要期望一次就能写出完美的Prompt。

六、实际应用案例

分享几个实际应用的案例。

案例一:文本摘要

你是一个专业的编辑。请把以下文章摘要成100字以内的内容,保留核心信息,语言简洁。

文章:
[长文章内容]

效果:AI能生成简洁准确的摘要。

案例二:代码解释

你是一个资深的前端工程师。请解释以下React代码的作用和原理,用通俗易懂的语言,适合初学者理解。

代码:
useEffect(() => {
  const subscription = props.source.subscribe();
  return () => {
    subscription.unsubscribe();
  };
}, [props.source]);

效果:AI能详细解释代码的作用,包括useEffect的用法、订阅和清理的机制。

案例三:邮件写作

你是一个专业的商务人士。请帮我写一封邮件,内容是:
- 感谢对方的合作
- 告知项目已经完成
- 询问是否需要后续支持

要求:语气礼貌专业,字数200字以内。

效果:AI能生成一封格式规范、语气恰当的商务邮件。

案例四:数据提取

请从以下文本中提取人名、公司名和职位,用JSON格式输出。

文本:张三是阿里巴巴的高级工程师,李四是腾讯的产品经理。

效果:

{
  "people": [
    {"name": "张三", "company": "阿里巴巴", "position": "高级工程师"},
    {"name": "李四", "company": "腾讯", "position": "产品经理"}
  ]
}

七、常见的错误

说说写Prompt时常见的错误。

错误一:指令太模糊

帮我写点东西。

AI不知道写什么、写给谁、写多长,输出肯定不符合预期。

错误二:信息太多太杂

你是一个医生,也是一个老师,还是一个程序员。请帮我写一篇关于健康的文章,还要包含编程技巧,用诗歌的形式...

信息太多,AI会混乱。一个Prompt只做一件事。

错误三:期望AI知道一切

不要假设AI知道你的具体情况。如果需要背景信息,一定要在Prompt中提供。

错误四:不测试就用

写好Prompt后,一定要测试。用不同的输入测试,看看输出是否稳定。不要写好就直接用在生产环境。

错误五:忽略安全问题

如果Prompt中包含敏感信息(用户数据、商业机密等),要注意安全。不要把敏感信息发给不可信的AI服务。

八、高级技巧

分享一些高级技巧。

1. 温度(Temperature)调整

大多数AI服务都有Temperature参数,控制输出的随机性。

  • Temperature低(0-0.3):输出稳定、确定,适合分类、提取等任务
  • Temperature中(0.3-0.7):平衡,适合一般的写作和问答
  • Temperature高(0.7-1.0):输出多样、有创意,适合创意写作、头脑风暴

根据任务类型,选择合适的Temperature。

2. 系统提示(System Prompt)

用系统提示设定AI的整体行为。

系统:你是一个专业的技术作家,擅长用通俗易懂的语言解释复杂的技术概念。
用户:请解释什么是React的虚拟DOM。

系统提示能让AI在整个对话中保持一致的角色和风格。

3. 自我检查

让AI检查自己的输出。

请先写一篇文章,然后检查文章中是否有以下问题:
1. 逻辑是否清晰
2. 是否有语法错误
3. 是否有遗漏的要点
如果有问题,请修改后再输出。

自我检查能提高输出的质量。

4. 多轮对话

对于复杂的任务,用多轮对话逐步完善。

第一轮:让AI写初稿 第二轮:指出问题,让AI修改 第三轮:继续优化,直到满意

多轮对话比一次性写一个复杂的Prompt效果更好。

九、Prompt工程的未来

Prompt工程是一个快速发展的领域。

1. 会越来越重要

随着AI能力的增强,Prompt工程会越来越重要。好的Prompt能充分发挥AI的能力,差的Prompt会浪费AI的潜力。

2. 会出现专门的工具

已经出现了一些Prompt管理和优化的工具,未来会更多。这些工具能帮助你管理Prompt、测试效果、优化性能。

3. AI会越来越好理解自然语言

随着AI的发展,它会越来越理解自然语言,Prompt的门槛会降低。但即使AI更聪明了,清晰明确的指令依然重要。

4. 会成为一项基本技能

未来,Prompt工程可能会成为一项基本技能,就像今天的搜索技巧一样。每个人都需要知道如何和AI有效沟通。

十、写在最后

Prompt工程,是和AI沟通的艺术。

它不是什么高深的技术,而是一种清晰表达的能力。你能把需求说清楚,AI就能给你好的输出。

2022年7月,大语言模型还在快速发展中。Prompt工程也在不断演进,新的技巧和方法层出不穷。但核心原则是不变的:明确、具体、有结构、有示例。

最后,用一句话总结:"好的Prompt = 明确的角色 + 具体的任务 + 充分的上下文 + 清晰的格式 + 合适的示例。把这些做好,AI的输出就不会差。"

愿你在和AI沟通的过程中,越来越得心应手。