3、Prompt Engineering 实战:结构化Prompt设计、角色扮演、思维链(CoT)、Few-shot与Zero-shot、常见陷阱与优化

说实话,Prompt Engineering 这个词听起来挺唬人的。

我刚入行那会儿,觉得写 Prompt 不就是跟 AI 聊天吗?后来被现实狠狠教育了一顿。同样的模型,别人能调出高质量代码,我这边出来的全是废话。差别在哪?就在 Prompt 的设计上。

这一章,我把实战中摸爬滚打的经验拆开来讲。你跟着走一遍,基本就能避开我当年踩过的坑。

3.1 结构化Prompt设计:别让AI猜你的心思

很多人写 Prompt 就一句话:「帮我写个 Python 脚本。」

AI 确实能写,但写出来的东西大概率不是你想要的。为什么?因为你没给它框架。

我个人习惯用「结构化 Prompt」。说白了,就是给 AI 一个清晰的模板,告诉它:你是谁、你要干嘛、输出格式是什么。

结构化 Prompt 的核心四要素:
  • 角色定义:你希望 AI 扮演什么身份?
  • 任务描述:具体要做什么?
  • 输出格式:Markdown?JSON?表格?
  • 约束条件:字数、风格、禁忌词等

举个例子。我之前做一个数据分析项目,需要 AI 帮我生成 SQL 查询。一开始我写的是:

帮我写个SQL,查一下上个月的销售额。

结果 AI 给我返回了一堆乱七八糟的 JOIN。后来我改成结构化 Prompt:

你是一个资深数据分析师。
任务:查询2024年3月的总销售额。
表结构:orders(id, user_id, amount, created_at)
输出格式:只输出SQL代码,不要解释。
约束:使用MySQL语法,金额保留两位小数。

效果立竿见影。你想想看,AI 其实是个特别听话的员工,但你得把需求说清楚。

小技巧: 我习惯在 Prompt 开头加一句「你是一个资深XX专家」。这能激活模型在对应领域的知识分布,输出质量明显更高。

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个苹果。

你看,差别就在「把中间步骤写出来」。模型在生成每一步时,都会重新校准自己的逻辑。

实战建议: 对于逻辑推理、代码生成、数学计算类任务,我建议默认加上「请一步一步思考」或「Let's think step by step」。这几乎零成本,但收益巨大。

3.4 Few-shot 与 Zero-shot:给不给例子?

这两个概念其实很好理解。

  • Zero-shot:不给任何例子,直接让 AI 干活。
  • Few-shot:给 2-3 个例子,让 AI 照着做。

什么时候用 Few-shot?

我个人的经验是:当任务格式比较特殊,或者输出风格需要高度一致时,Few-shot 几乎是必须的。

举个例子。我之前做一个客服对话分类系统,需要把用户问题分成「售后」「售前」「投诉」三类。Zero-shot 的效果很差,模型经常把「退货」分到「售前」去。后来我给了三个例子:

例子1:
用户:这个手机屏幕碎了怎么办?
分类:售后

例子2:
用户:你们有红色的款吗?
分类:售前

例子3:
用户:我要投诉你们客服态度差!
分类:投诉

效果立刻好了很多。模型学会了「屏幕碎了→售后」「问颜色→售前」这种隐含规则。

注意: Few-shot 不是越多越好。我试过给 10 个例子,结果模型反而被带偏了。一般来说,2-5 个高质量例子就够了。例子要覆盖典型场景,不要给边缘情况。

那 Zero-shot 什么时候用?

简单任务、通用知识、或者你懒得写例子的时候。比如「用 Python 写一个冒泡排序」,Zero-shot 完全够用。

3.5 常见陷阱与优化:我踩过的坑,你别再踩了

这部分全是血泪教训。我一个个说。

陷阱一:指令模糊

「帮我优化这段文字」——优化什么?语法?风格?字数?AI 根本不知道。

优化方法: 把指令拆成具体动作。比如「把这段文字改成小红书风格,每句话不超过20字,加emoji」。

陷阱二:上下文太长

我曾经在一个对话里连续问了 50 个问题,结果模型开始胡言乱语。后来才发现,模型对长上下文的注意力会衰减。

优化方法: 关键信息放在 Prompt 的开头和结尾。中间部分模型容易「遗忘」。

陷阱三:过度约束

「你必须用以下10个词写一段话:苹果、香蕉、电脑、桌子…」——这种 Prompt 经常让模型写出狗屁不通的东西。

优化方法: 约束条件控制在 3-5 条以内。给 AI 留点发挥空间。

陷阱四:忽略否定词

「不要提到价格」——模型反而更容易提到价格。因为「价格」这个词被激活了。

优化方法: 用正面指令代替否定指令。比如「只讨论产品功能,不涉及费用相关话题」。

我曾经犯过一个经典错误: 让 AI 写一篇产品介绍,要求「不要用形容词」。结果模型写出来的东西干巴巴的,像说明书。后来我改成「用具体数据代替形容词」,效果就好多了。比如不说「性能很好」,而说「加载时间缩短了40%」。

3.6 实战组合拳:一个完整的例子

说了这么多,咱们来一个完整的实战案例。假设我要让 AI 帮我写一个产品功能说明:

角色:你是一个资深AI产品经理
任务:写一个「智能客服」产品的功能介绍
输出格式:Markdown,分三个部分:核心功能、技术优势、适用场景
约束:每部分不超过100字,用口语化表达,不要用「赋能」「抓手」等黑话
示例:
- 核心功能:自动回答80%的常见问题,人工客服只需处理复杂case
- 技术优势:基于GPT-4,支持多轮对话,准确率95%+
- 适用场景:电商售后、金融咨询、教育答疑

请开始:

这个 Prompt 用了角色扮演、结构化输出、Few-shot 示例,还加了约束条件。你试试看,输出质量绝对比「帮我写个功能介绍」高出一大截。

最后一个小建议: 每次写完 Prompt,自己先读一遍。如果你自己都觉得模糊,AI 肯定也搞不懂。好的 Prompt 就像好的代码——清晰、简洁、可复用。

嗯,这一章的内容就到这里。下一章我们会聊更高级的 Prompt 技巧,比如如何用 Prompt 控制模型的「温度」和「创造力」。到时候见。