2022年,AI大模型爆发,Prompt工程成了热门话题。

本文从基础到高级,详细讲解Prompt工程的配置方法,包括什么是Prompt、基础技巧、高级技巧、常见模式、最佳实践,以及实际案例。

一、什么是Prompt工程

1. 基本概念

Prompt(提示词),是给AI模型的输入指令。

Prompt工程,就是设计和优化Prompt,让AI模型输出更好的结果。

为什么需要Prompt工程?

  • 大模型能力很强,但需要正确的引导
  • 不同的Prompt,输出质量差异很大
  • 好的Prompt,能让模型发挥出最佳水平
  • 差的Prompt,可能得到无用甚至错误的结果

2. 为什么重要

2022年,以GPT-3为代表的大模型,能力越来越强。

  • 可以写文章、写代码、翻译、总结
  • 但输出质量,很大程度上取决于Prompt
  • 同样的模型,不同的人用,效果天差地别
  • Prompt工程,成了使用AI的核心技能

学会Prompt工程,就能更好地利用AI。

二、基础技巧

1. 明确指令

最基础的技巧:明确告诉模型你要什么。

不好的Prompt:

写一篇关于AI的文章

好的Prompt:

写一篇关于AI在医疗领域应用的文章,要求:
1. 字数800字左右
2. 包含三个具体案例
3. 语言通俗易懂
4. 结构清晰,有小标题

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

2. 给出角色

给模型设定一个角色,能提升输出质量。

你是一位资深的前端工程师,有10年经验。
请帮我 review 这段代码,指出问题并给出改进建议。

角色设定,让模型从特定视角回答,更专业。

3. 提供上下文

给模型足够的上下文信息。

背景:我们是一家电商公司,正在做用户留存分析。
数据:本月用户留存率比上月下降了5%。
任务:请分析可能的原因,并给出改进建议。

上下文越充分,输出越精准。

4. 指定格式

指定输出格式,方便后续处理。

请用JSON格式输出,包含以下字段:
- title: 文章标题
- summary: 200字摘要
- keywords: 5个关键词
- category: 分类

指定格式,能让输出结构化,方便程序处理。

5. 分步指令

复杂任务,分成步骤来写。

请按以下步骤分析这段文本:
1. 总结主要观点(不超过100字)
2. 提取关键信息(人物、时间、地点、事件)
3. 分析情感倾向(正面/负面/中性)
4. 给出你的评价

分步指令,能让模型有条理地处理复杂任务。

三、高级技巧

1. Few-shot 学习

给模型几个示例,让它学习模式。

请根据以下示例,对新的文本进行分类。

示例1:
文本:这个手机拍照很好,续航也不错。
分类:好评

示例2:
文本:手机用了两天就坏了,客服态度也差。
分类:差评

新文本:
屏幕显示效果不错,但发热有点严重。
分类:

Few-shot,能让模型快速学习特定任务的模式。

2. 思维链(Chain of Thought)

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

问题:一个商店有15个苹果,卖了8个,又进货了20个,现在有多少个苹果?

请一步步思考,然后给出答案。

思维链,能提升模型在推理任务上的表现。特别是数学题、逻辑题,效果明显。

3. 自我一致性

让模型多次生成,取多数结果。

请独立思考3次,每次都给出完整的推理过程和答案。
最后,统计3次答案,给出最一致的结果。

自我一致性,能提高答案的稳定性和准确性。

4. 指令层次

用层次化的指令,组织复杂的Prompt。

# 角色
你是一位资深的技术写作者。

# 任务
写一篇关于React Hooks的技术文章。

# 要求
## 内容
- 介绍useState和useEffect
- 每个Hook至少一个代码示例
- 说明使用场景和注意事项

## 格式
- 有标题和小标题
- 代码用代码块
- 字数1500字左右

## 风格
- 通俗易懂
- 适合初学者
- 有实际案例

层次化指令,结构清晰,模型更容易理解。

5. 约束和限制

给模型加上约束,避免输出不符合要求。

请写一篇关于健康饮食的文章。
约束:
- 不要提到任何具体的品牌或产品
- 不要给出医疗建议
- 不要使用夸张的表述
- 所有建议都要有科学依据

约束,能控制输出的范围和风格。

四、常见模式

1. 总结模式

请总结以下文本的主要内容:
- 不超过200字
- 保留关键信息
- 用自己的话复述
- 不要添加原文没有的信息

文本:
{text}

2. 翻译模式

请将以下文本翻译成英文。
要求:
- 准确传达原意
- 符合英文表达习惯
- 专业术语保持一致
- 不要添加解释

文本:
{text}

3. 代码生成模式

请用Python写一个函数,实现以下功能:
- 输入:一个整数列表
- 输出:列表中的最大值和最小值
- 要求:时间复杂度O(n),有异常处理

请给出完整代码,并加上注释。

4. 问答模式

请根据以下材料回答问题。
如果材料中没有答案,请回答"材料中未提及"。
不要编造信息。

材料:
{context}

问题:
{question}

5. 分类模式

请将以下文本分类到以下类别之一:
- 技术
- 生活
- 读书
- 好物

只输出类别名称,不要解释。

文本:
{text}

五、参数配置

使用API时,还有一些参数可以配置。

1. temperature

控制输出的随机性。

  • 0:确定性输出,每次结果一样
  • 0.7:默认值,有一定随机性
  • 1.0:更随机,更有创造性
  • 越高,输出越多样,但可能偏离主题

建议:

  • 事实性任务(翻译、总结):0.3以下
  • 创意任务(写故事、写诗):0.7以上
  • 代码生成:0.2以下

2. max_tokens

控制输出的最大长度。

  • 根据任务需要设置
  • 太短会截断,太长会浪费
  • 总结:200-500
  • 文章:1000-3000
  • 代码:500-2000

3. top_p

控制词汇选择的范围。

  • 1.0:考虑所有词汇
  • 0.9:只考虑累积概率前90%的词汇
  • 和temperature类似,但机制不同
  • 一般不需要同时调整

4. frequency_penalty

控制重复词的惩罚。

  • 0:不惩罚
  • 正值:减少重复
  • 适合生成多样化的文本
  • 一般设置0.1-0.5

5. presence_penalty

控制新话题的引入。

  • 0:不惩罚
  • 正值:鼓励引入新话题
  • 适合写长文,避免跑题
  • 一般设置0.1-0.5

六、最佳实践

1. 迭代优化

Prompt不是一次写好的,需要迭代。

  • 先写一个基础版本
  • 测试,看输出结果
  • 分析问题,调整Prompt
  • 再测试,再调整
  • 直到满意为止

2. 测试边界情况

好的Prompt,要能处理边界情况。

  • 输入为空怎么办?
  • 输入很长怎么办?
  • 输入有歧义怎么办?
  • 输入有错误怎么办?

测试边界情况,让Prompt更健壮。

3. 保存和版本管理

好的Prompt,要保存下来。

  • 记录每个版本的变化
  • 记录测试结果
  • 方便回滚
  • 方便团队共享

可以用文件或工具管理Prompt版本。

4. 组合使用技巧

各种技巧可以组合使用。

  • 角色 + 指令 + 格式
  • Few-shot + 思维链
  • 分步指令 + 约束
  • 根据任务需要,灵活组合

5. 了解模型的局限

Prompt工程不是万能的。

  • 模型可能会编造信息(幻觉)
  • 模型可能有偏见
  • 模型的知识有截止日期
  • 复杂的推理可能出错

了解局限,合理使用,不要完全依赖。

七、实际案例

案例1:写技术文章

# 角色
你是一位资深前端工程师,擅长React和TypeScript。

# 任务
写一篇关于React useMemo和useCallback区别的文章。

# 要求
- 字数1200字左右
- 包含代码示例
- 说明各自的使用场景
- 说明常见的误用
- 语言通俗易懂,适合中级开发者

# 结构
1. 引言:为什么需要这两个Hook
2. useMemo详解
3. useCallback详解
4. 两者的区别
5. 使用建议
6. 总结

案例2:代码Review

# 角色
你是一位有10年经验的高级工程师,擅长代码审查。

# 任务
审查以下代码,指出问题并给出改进建议。

# 审查维度
1. 代码风格和规范
2. 潜在的bug
3. 性能问题
4. 安全问题
5. 可维护性

# 输出格式
- 问题列表(按严重程度排序)
- 每个问题:位置、问题描述、改进建议
- 总体评价

代码:
{code}

案例3:数据分析

# 角色
你是一位数据分析师,擅长用户行为分析。

# 背景
我们是一家电商平台,本月用户留存率下降了5%。

# 数据
- 新用户注册量:+10%
- 首日留存:-3%
- 7日留存:-8%
- 30日留存:-12%
- 客单价:+5%

# 任务
1. 分析留存率下降的可能原因
2. 给出3个最可能的假设
3. 针对每个假设,给出验证方法
4. 给出改进建议

八、常见错误

1. Prompt太模糊

错误:

写点东西

正确:

写一篇500字的文章,主题是"秋天的北京",要求有景物描写和个人感受。

2. 一次要求太多

错误:一个Prompt里要求写文章、翻译、总结、分析。

正确:拆分任务,一个Prompt做一件事。

3. 没有示例

对于复杂或特殊的任务,没有示例,模型可能理解偏差。

正确:加几个Few-shot示例。

4. 忽略输出格式

没有指定格式,输出可能混乱,不好处理。

正确:明确指定输出格式。

5. 不迭代

写了一个Prompt,效果不好就放弃了。

正确:迭代优化,逐步改进。

九、写在最后

Prompt工程,是2022年AI时代的核心技能。

从基础的明确指令、角色设定,到高级的Few-shot、思维链,再到参数配置和最佳实践,掌握了这些,就能更好地使用AI大模型。

但Prompt工程不是一成不变的。模型在更新,技巧在演进,需要持续学习和实践。最好的学习方式,就是多写、多测、多迭代。

2022年,AI正在改变我们的工作方式。学会Prompt工程,就是学会和AI协作,让AI成为我们的得力助手。

最后,用一句话总结:"Prompt工程,是和AI沟通的艺术。明确指令、提供上下文、迭代优化,就能让AI输出你想要的结果。"

愿你掌握Prompt工程,用好AI这个强大的工具。