3、Prompt Engineering 实战:结构化Prompt设计、角色扮演、思维链(CoT)、Few-shot与Zero-shot、常见陷阱与优化
说实话,Prompt Engineering 这个词听起来挺唬人的。
我刚入行那会儿,觉得写 Prompt 不就是跟 AI 聊天吗?后来被现实狠狠教育了一顿。同样的模型,别人能调出高质量代码,我这边出来的全是废话。差别在哪?就在 Prompt 的设计上。
这一章,我把实战中摸爬滚打的经验拆开来讲。你跟着走一遍,基本就能避开我当年踩过的坑。
3.1 结构化Prompt设计:别让AI猜你的心思
很多人写 Prompt 就一句话:「帮我写个 Python 脚本。」
AI 确实能写,但写出来的东西大概率不是你想要的。为什么?因为你没给它框架。
我个人习惯用「结构化 Prompt」。说白了,就是给 AI 一个清晰的模板,告诉它:你是谁、你要干嘛、输出格式是什么。
- 角色定义:你希望 AI 扮演什么身份?
- 任务描述:具体要做什么?
- 输出格式:Markdown?JSON?表格?
- 约束条件:字数、风格、禁忌词等
举个例子。我之前做一个数据分析项目,需要 AI 帮我生成 SQL 查询。一开始我写的是:
帮我写个SQL,查一下上个月的销售额。
结果 AI 给我返回了一堆乱七八糟的 JOIN。后来我改成结构化 Prompt:
你是一个资深数据分析师。
任务:查询2024年3月的总销售额。
表结构:orders(id, user_id, amount, created_at)
输出格式:只输出SQL代码,不要解释。
约束:使用MySQL语法,金额保留两位小数。
效果立竿见影。你想想看,AI 其实是个特别听话的员工,但你得把需求说清楚。
3.2 角色扮演:让AI进入状态
角色扮演不是让你跟 AI 玩过家家。它是一种有效的「上下文锚定」技术。
我在项目中遇到过一个问题:让 AI 帮我写产品需求文档。直接问,它写出来的东西像小学生作文。但当我加上一句「你是一个有5年经验的AI产品经理」,输出质量直接上了一个台阶。
为什么会这样?
因为大模型在训练时见过大量「专家口吻」的文本。你给它一个角色,它就会自动调用对应领域的表达方式和知识结构。
- 专家模式:你是一个资深律师/医生/工程师…
- 人格模式:你是一个耐心的小学老师/毒舌的评论家…
- 反向模式:你是一个杠精,专门挑我方案的漏洞
嗯,这里要注意。角色扮演不是万能的。如果你给的角色太离谱(比如「你是一个外星人」),模型可能会胡言乱语。最好选它训练数据里常见的人物设定。
3.3 思维链(Chain of Thought):让AI学会「一步一步想」
这是目前提升推理能力最有效的手段之一。
简单说,就是让 AI 把思考过程写出来,而不是直接给答案。
我最早接触 CoT 是在做数学题测试的时候。直接问「24乘以37等于多少?」模型经常算错。但加上一句「请一步一步推理」,准确率能提升 30% 以上。
普通 Prompt:
Q:小明有12个苹果,给了小红一半,又买了8个,现在有多少个?
A:
CoT Prompt:
Q:小明有12个苹果,给了小红一半,又买了8个,现在有多少个?
A:小明一开始有12个苹果。给了小红一半,也就是给了6个,剩下6个。然后又买了8个,6+8=14。所以现在有14个苹果。
你看,差别就在「把中间步骤写出来」。模型在生成每一步时,都会重新校准自己的逻辑。
3.4 Few-shot 与 Zero-shot:给不给例子?
这两个概念其实很好理解。
- Zero-shot:不给任何例子,直接让 AI 干活。
- Few-shot:给 2-3 个例子,让 AI 照着做。
什么时候用 Few-shot?
我个人的经验是:当任务格式比较特殊,或者输出风格需要高度一致时,Few-shot 几乎是必须的。
举个例子。我之前做一个客服对话分类系统,需要把用户问题分成「售后」「售前」「投诉」三类。Zero-shot 的效果很差,模型经常把「退货」分到「售前」去。后来我给了三个例子:
例子1:
用户:这个手机屏幕碎了怎么办?
分类:售后
例子2:
用户:你们有红色的款吗?
分类:售前
例子3:
用户:我要投诉你们客服态度差!
分类:投诉
效果立刻好了很多。模型学会了「屏幕碎了→售后」「问颜色→售前」这种隐含规则。
那 Zero-shot 什么时候用?
简单任务、通用知识、或者你懒得写例子的时候。比如「用 Python 写一个冒泡排序」,Zero-shot 完全够用。
3.5 常见陷阱与优化:我踩过的坑,你别再踩了
这部分全是血泪教训。我一个个说。
陷阱一:指令模糊
「帮我优化这段文字」——优化什么?语法?风格?字数?AI 根本不知道。
优化方法: 把指令拆成具体动作。比如「把这段文字改成小红书风格,每句话不超过20字,加emoji」。
陷阱二:上下文太长
我曾经在一个对话里连续问了 50 个问题,结果模型开始胡言乱语。后来才发现,模型对长上下文的注意力会衰减。
优化方法: 关键信息放在 Prompt 的开头和结尾。中间部分模型容易「遗忘」。
陷阱三:过度约束
「你必须用以下10个词写一段话:苹果、香蕉、电脑、桌子…」——这种 Prompt 经常让模型写出狗屁不通的东西。
优化方法: 约束条件控制在 3-5 条以内。给 AI 留点发挥空间。
陷阱四:忽略否定词
「不要提到价格」——模型反而更容易提到价格。因为「价格」这个词被激活了。
优化方法: 用正面指令代替否定指令。比如「只讨论产品功能,不涉及费用相关话题」。
3.6 实战组合拳:一个完整的例子
说了这么多,咱们来一个完整的实战案例。假设我要让 AI 帮我写一个产品功能说明:
角色:你是一个资深AI产品经理
任务:写一个「智能客服」产品的功能介绍
输出格式:Markdown,分三个部分:核心功能、技术优势、适用场景
约束:每部分不超过100字,用口语化表达,不要用「赋能」「抓手」等黑话
示例:
- 核心功能:自动回答80%的常见问题,人工客服只需处理复杂case
- 技术优势:基于GPT-4,支持多轮对话,准确率95%+
- 适用场景:电商售后、金融咨询、教育答疑
请开始:
这个 Prompt 用了角色扮演、结构化输出、Few-shot 示例,还加了约束条件。你试试看,输出质量绝对比「帮我写个功能介绍」高出一大截。
嗯,这一章的内容就到这里。下一章我们会聊更高级的 Prompt 技巧,比如如何用 Prompt 控制模型的「温度」和「创造力」。到时候见。