4、Prompt Engineering基础:什么是Prompt、硬提示与软提示、Few-shot与Zero-shot学习、Prompt模板设计原则、常见Prompt技巧(Chain-of-Thought)
聊到大模型微调,很多人第一反应就是改模型参数。但说实话,我做了这么多年AI工程,发现一个残酷的事实——很多时候,你根本不需要微调。把Prompt写好,效果就能提升一大截。
这一章,我们就来聊聊Prompt Engineering。这是大模型应用的入门功夫,也是性价比最高的技能。
4.1 什么是Prompt?
Prompt,说白了就是你给模型的一段输入文本。它就像你跟模型说的「开场白」。你问什么、怎么问,直接决定了模型答什么、答得怎么样。
举个例子:
# 不好的Prompt
"写一段话。"
# 好的Prompt
"你是一位资深金融分析师。请用200字以内,分析2024年新能源车市场的三大趋势,要求数据支撑、逻辑清晰。"
看出区别了吗?好的Prompt就像给了一个明确的任务说明书。模型不需要猜你要什么,直接干活就行。
核心观点:Prompt是人与模型之间的「翻译器」。你翻译得越准确,模型输出就越靠谱。
4.2 硬提示 vs 软提示
这里有个概念,很多人容易搞混——硬提示和软提示。
硬提示(Hard Prompt),就是人类可读的文本。比如上面那个例子,就是硬提示。它的优点是直观、可解释、容易调整。缺点嘛,就是需要你手动去试,挺费人的。
软提示(Soft Prompt),则是模型内部的可学习向量。你看不到它,它也不像人话。但它能更精准地引导模型行为。
我个人的习惯是:
- 日常使用:先用硬提示快速验证想法
- 生产环境:如果硬提示效果不稳定,再考虑软提示微调
小技巧:软提示通常需要配合微调使用。如果你只是调用API,那基本只用硬提示就够了。
4.3 Few-shot vs Zero-shot 学习
这两个概念,其实就是在说「你给了模型多少例子」。
Zero-shot:不给例子,直接问。
Prompt: "将以下句子翻译成英文:今天天气真好。"
输出: "The weather is nice today."
Few-shot:给几个例子,让模型照着学。
Prompt:
"将以下句子翻译成英文:
例子1:我喜欢猫 -> I like cats.
例子2:他在跑步 -> He is running.
现在翻译:今天天气真好。"
输出: "The weather is nice today."
我在项目中遇到过这样的情况:Zero-shot效果差得离谱,但加了3个例子后,准确率直接从40%飙到85%。你想想看,这差距有多大。
注意:Few-shot不是越多越好。我试过给20个例子,结果模型反而被带偏了。一般来说,3-5个高质量例子就够了。
4.4 Prompt模板设计原则
写Prompt模板,其实跟写代码一样,有套路可循。我总结了几个原则:
- 明确角色:告诉模型「你是谁」。比如「你是一位资深律师」、「你是一名小学老师」。
- 限定范围:别让模型自由发挥。比如「只回答是或否」、「控制在50字以内」。
- 给出格式:想要JSON输出?想要Markdown表格?直接告诉模型。
- 提供上下文:模型没有记忆,每次对话都是独立的。把关键信息写进Prompt里。
举个例子,这是我常用的一个模板:
你是一位[角色]。
请根据以下内容,完成[任务]。
内容:[输入文本]
要求:
1. 输出格式为JSON
2. 只包含关键信息
3. 字数不超过100字
输出:
避坑指南:我曾经犯过一个错误——把模板写得太复杂。结果模型要么忽略部分指令,要么输出混乱。后来我学乖了:模板越简单,效果越稳定。
4.5 常见Prompt技巧:Chain-of-Thought
Chain-of-Thought(CoT),中文叫「思维链」。这招是我最常用的技巧之一。
它的核心思想很简单:让模型把思考过程写出来。而不是直接给答案。
看个对比:
# 普通Prompt
"小明有5个苹果,小红给了小明3个,小明又给了小华2个。小明现在有几个苹果?"
# CoT Prompt
"小明有5个苹果,小红给了小明3个,小明又给了小华2个。小明现在有几个苹果?
让我们一步一步思考:
1. 小明最初有5个苹果。
2. 小红给了小明3个,所以小明现在有5+3=8个。
3. 小明给了小华2个,所以小明现在有8-2=6个。
所以答案是:6个。"
为什么会这样?因为模型在生成「思考过程」时,会激活更多的推理能力。直接给答案,模型容易「偷懒」——它可能只匹配了表面模式,而不是真正理解问题。
我个人的经验是:
- 数学题、逻辑题:CoT效果提升明显,有时能翻倍
- 简单问答:CoT反而可能画蛇添足
- 长文本分析:CoT可以帮助模型保持思路清晰
进阶技巧:CoT还可以配合Few-shot使用。给模型一个带思考过程的例子,它就能学会「边想边答」的模式。
4.6 总结一下
Prompt Engineering,说白了就是「怎么跟模型说话」。这门功夫不需要改代码、不需要训练模型,但效果立竿见影。
我建议你:
- 先从Zero-shot开始,快速验证想法
- 效果不好,加Few-shot例子
- 复杂任务,用CoT让模型「想清楚再说」
- 生产环境,设计好模板,保持一致性
嗯,这一章就到这里。下一章我们聊聊更进阶的内容——如何用Prompt做数据增强。到时候见。