第4章:Prompt工程入门——风电场景下的Prompt设计原则、零样本与少样本提示、结构化Prompt模板
4.1 为什么风电运维需要Prompt工程?
说实话,我刚接触大模型那会儿,也觉得Prompt就是“问问题”而已。直到我在一个风电场的故障诊断项目里,连续三次让模型给出了完全错误的叶片结冰判断——不是模型不行,是我问的方式太糙了。
你想想看,一个通用大模型,它懂“变桨角度异常”是什么意思吗?它知道“主轴温度梯度”和“齿轮箱磨损”之间的关联吗?如果你不把风电领域的专业语境喂给它,它就只能瞎猜。
Prompt工程,说白了就是教大模型说人话,而且是说风电人的话。我个人的习惯是:每次写Prompt之前,先问自己三个问题——
- 这个任务,一个刚入行的风电运维工程师能听懂吗?
- 我需要模型输出什么格式?是故障代码、维修建议,还是数据报表?
- 有没有什么常见的坑,我得提前告诉它别踩?
嗯,这三个问题想清楚了,Prompt基本就成功了一半。
4.2 风电场景下的Prompt设计原则
我在项目中总结了一套“风电Prompt五原则”,你可以直接拿去用:
| 原则 | 说明 | 反面案例 | 正面案例 |
|---|---|---|---|
| 1. 角色锚定 | 明确告诉模型你是谁 | “分析这个数据” | “你是一名资深风电运维工程师,请分析以下SCADA数据” |
| 2. 上下文注入 | 提供风机型号、工况、环境 | “齿轮箱温度偏高怎么办?” | “一台2.5MW双馈风机,环境温度-15℃,齿轮箱油温85℃持续30分钟,请给出诊断” |
| 3. 输出约束 | 规定格式、长度、语言 | “告诉我原因” | “请用三点列表输出:1.可能原因 2.置信度 3.建议操作” |
| 4. 边界限定 | 告诉模型不要做什么 | “给出维修建议” | “只基于振动数据给出建议,不要猜测未提供的信息” |
| 5. 示例引导 | 给一个标准答案样例 | “判断是否异常” | “参考以下示例格式输出:[示例] 异常类型:轴承磨损,置信度:85%” |
核心要点:风电场景下,上下文注入是最容易被忽略但最重要的原则。我见过太多人直接问“这个波形正常吗?”——模型根本不知道你测的是振动、电流还是扭矩,更不知道风机型号和工况。你想想看,这能准吗?
4.3 零样本提示:让模型“无师自通”
零样本提示,就是不给任何例子,直接让模型干活。这在风电运维里其实挺常见的——比如你突然遇到一个新型号的变流器故障,手头没有历史案例,只能靠模型的基础知识去推理。
我举个例子:
# 零样本提示示例
Prompt:
你是一名风电运维专家。请判断以下现象是否属于“叶片结冰”的典型特征:
- 风速8m/s,发电功率仅为额定功率的30%
- 叶片振动幅值增大,1P频率分量突出
- 机舱加速度传感器显示低频摆动
请给出判断结论和依据。
这种写法,模型会基于它训练时学到的“叶片结冰”知识去推理。但要注意——零样本的准确率通常只有60%-70%。我在一个偏航系统故障诊断项目里试过,零样本提示给出的结论,和现场工程师的判断有将近40%的偏差。
避坑指南:我曾经在零样本提示里忘了指定“输出语言”,结果模型用英文给我回了三页技术文档。嗯,后来我学乖了,每次都在Prompt末尾加一句“请用中文回答”。
4.4 少样本提示:给模型“打个样”
少样本提示,就是给模型看几个例子,让它照着学。我个人觉得,这是风电运维场景下性价比最高的方式——不需要微调模型,只需要准备3-5个高质量的例子,效果就能提升一大截。
来看一个实际案例:
# 少样本提示示例
Prompt:
你是一名风电齿轮箱故障诊断专家。请参考以下示例,对新的数据进行分析。
示例1:
数据:高速轴振动值从2.3mm/s突增到8.7mm/s,齿轮箱油温从65℃升至78℃
诊断:高速轴轴承磨损,置信度90%
建议:停机检查,更换轴承
示例2:
数据:齿轮箱异响,频谱中出现啮合频率的边频带,油液分析发现铁磁性颗粒浓度超标
诊断:齿轮齿面疲劳点蚀,置信度85%
建议:计划性维修,更换齿轮副
新数据:
数据:中速轴振动值4.5mm/s,温度正常,频谱显示2倍啮合频率分量突出
诊断:?
建议:?
你看,给两个例子,模型就知道要输出“诊断+置信度+建议”这个结构了。我在一个风场做过对比测试:零样本的准确率是62%,给了3个样本后,准确率直接跳到81%。
我的经验:少样本提示的样本数量不是越多越好。3-5个是最佳区间。超过7个,模型反而容易“学歪”——它可能开始关注样本里的噪声,而不是真正的规律。另外,样本要覆盖不同的故障类型,别全给同一个故障的例子。
4.5 结构化Prompt模板:把“问问题”变成“填表格”
结构化Prompt,是我在风电运维大模型项目里最常用的方式。说白了,就是把Prompt拆成几个固定的模块,像填表格一样清晰。
我设计了一个通用模板,你可以直接套用:
# 结构化Prompt模板(风电运维版)
## 角色定义
你是一名[具体角色],专精于[具体领域]。
## 上下文信息
- 风机型号:[型号]
- 运行工况:[工况描述]
- 环境条件:[温度/湿度/风速等]
- 数据来源:[SCADA/振动/油液/温度等]
## 任务描述
请完成以下任务:[具体任务]
## 输出要求
- 格式:[列表/表格/段落]
- 长度:[字数或条目数]
- 语言:中文
- 附加要求:[如“只基于提供的数据分析”]
## 示例(可选)
[示例1]
[示例2]
## 边界条件
- 不要[做什么]
- 如果信息不足,请[怎么做]
这个模板的好处是——你每次只需要改“上下文信息”和“任务描述”两部分,其他模块可以复用。我在团队里推广这个模板后,新人写Prompt的质量提升很明显,至少不会漏掉关键信息了。
4.6 知识体系总览
下面这张图,是我对本章知识体系的总结。你可以把它当成一张“Prompt工程地图”——每次写Prompt之前,扫一眼这张图,就知道自己该从哪下手。
4.7 实战建议与避坑
最后,分享几个我在实际项目中踩过的坑,希望能帮你少走弯路:
- 别让模型“自由发挥”——我曾经让模型“分析一下这个振动数据”,结果它给我写了一篇论文。后来我改成“请用三句话总结”,效果就好多了。
- 风电术语要统一——同一个东西,有人叫“主轴”,有人叫“低速轴”,模型可能搞混。我建议在Prompt里先定义好术语表。
- 少样本的样本要“干净”——我试过用现场实际故障数据做样本,结果样本本身就有噪声,模型学了一堆错误模式。后来我改用人工审核过的标准样本,准确率才上来。
- 结构化模板不是万能的——遇到特别复杂的多步推理任务,模板反而可能限制模型的发挥。这时候我一般会拆成多个子任务,每个子任务单独写一个Prompt。
一个小技巧:写完Prompt之后,先让模型“复述”一遍任务。比如加一句“请用你自己的话描述一下你要完成的任务”。如果模型复述错了,说明你的Prompt有歧义。这个技巧帮我发现了至少30%的Prompt设计问题。
好了,这一章的内容就到这里。Prompt工程看起来简单,但真正用好,还是需要反复调试的。我个人建议你从“结构化模板”开始用起,等熟练了再尝试零样本和少样本的各种变体。