上一回我们聊了少样本示例。
那招确实好用。
给个例子,模型就照猫画虎,格式规规矩矩。
可它有个很现实的毛病。
费词元。
每次发请求,样例都得跟着消息历史一起送过去。
你一天跑一千次,这份样例就重复传一千遍。
账单上都是白花花的钱。

图注:一张平台介绍卡,写着以清华的时序大模型为核心,用接口完成复杂预测。
很多时候我们要的并不是复杂例子。
只想让模型守几条基本规矩。
比如别写废话,别乱猜原因,必须用列表输出。
这类全局规矩,有没有更省事的做法。
有,就是系统提示词。
它像一道紧箍咒,念上去模型就不敢造次。
它凭什么说话最管用
先算一笔少样本的账。
上一回我们在代码里塞了两条假的历史消息。
一条样例提问,一条样例回答。
模型看到历史,就知道该按什么套路出牌。
你算过账没有。
样例输入加样例输出,一共四百个字。
在接口里大概就是五六百个词元。
每次真实业务请求,这些词元雷打不动都得带上。
并发一大就很吓人。
一个小时查一千次,光传样例就废掉五十万词元。
一天下来就是上百万。
去后台看一眼账单,会心疼。
再想想,样例里写的那些东西,到底图什么。
其实只有两件事。
一件是教它推理逻辑。
这个必须用样例,没辙。
另一件是教它输出格式。
比如必须列出一二三四点,必须用方括号做标题。
后面那件是死规矩。
不管你查什么数据,都要求这么排版。
既然是死规矩,何必每次都拿样例去示范。
直接用大白话告诉它就够了。
这就轮到系统提示词出场。
我们平时用 AI对话,问的都是临时的问题,问完就完了。
系统提示词是系统级指令,挂在模型的脑子上,生成每个词的时候都在提醒。
你可以把它理解成给模型定的宪法。
不设它,模型的人设就是个没受过训练的网民。
设了它,比如你写你是一个严谨的运维工程师。
它想乱说话时就会掂量一下,这不符合工程师的身份。
在底层,模型对系统指令的注意力权重最高。
用户让它往东,系统让它往西,它大概率往西走。
这就给我们立规矩提供了顺手的位置。
那些必须遵守又不能变通的格式与边界,统统写进去。
往后再也不用在每次提问里反复唠叨。
也不用占少样本样例的篇幅。
靠谱的写法分三块
写它是个手艺活。
写得太短不管用,写得太长模型抓不住重点,甚至直接遗忘。
一般分三块最稳妥。
第一块是定人设。
告诉它你是谁,角色定了,口吻和深度就定了。
比如写,你是一个有十年经验的企业级时序数据运维专家。
这句话不是废话。
模型看到十年经验和运维专家,调出来的内部知识就不一样。
它不会用小学生口吻说这个数字变大了。
它会说,指标呈上升趋势,疑似触发阈值。
做金融分析,就写你是资深量化研究员。
人设一定要贴合业务。
第二块是定格式。
把死规矩写死,这是省少样本词元的关键。
假设我对报告格式要求极严,就可以直接写死。
输出必须遵守几个固定段落。
异常检测概要,异常时间点,异常指标,关联分析,根因推测。
严禁输出这些段落之外的废话。
也不要写好的、这是您的报告这类客套话。
这段话一贴,模型就不敢写散文了。
它只能老老实实填你给的框。
效果跟给一个样例一模一样。
但它只用写一次,不必每次带样例数据。
第三块是定边界。
模型有个毛病,爱胡编。
不知道原因的时候,它也硬编一个给你,这就是幻觉。
系统提示词里必须严禁这种行为。
可以写,如果根据现有数据推不出根因,必须回答信息不足,不允许猜测。
有了这条线,它没把握时就会认怂。
认怂了我们还能再去查数据。
胡说八道就会误导老板决策。
按接口规范,系统提示词必须放在消息列表的第一位。
先定义一个函数,接收真实的数据文本。
函数里先写好人设和格式红线。
格式写得非常具体,连二级标题符号都直接给了。
模型只要照着填空就行。
再把用户的真实提问拼进去。
最后拼出一个消息列表。
第一条的角色是系统,内容就是那段提示词。
第二条的角色是用户,内容是提问。
然后把这个列表返回出去。
有意思的是,调工具的精准度也提高了。
像 AI编程助手要去查数据库,参数给得更准,调用次数也更克制。
为什么。
因为你在系统里告诉它,它是资深专家。
资深专家查数据的时候不会瞎查。
跑一遍,出来的报告干干净净。
没有一句废话,格式完美贴合要求。
而这一切,你一个词元都没花在少样本样例上。
两招怎么分工
讲到这你可能有个疑问。
系统提示词这么厉害,还要少样本干嘛。
它们的分工不一样。
系统提示词是宪法,管的是大方向。
什么不能干,必须按什么大类格式干,都归它管。
可具体的业务推理套路,它管不了。
比如处理器占用飙升,先看内存还是先看网络。
这条推理链,你用自然语言写不清楚。
写几百字的推理步骤,模型记不住,它会忘。
这时候就得少样本出马。
在样例里展示一次完整的链路。
从占用高,到查内存,到发现内存也高,到推断是垃圾回收。
模型看一眼样例就懂了。
最爽的玩法是两招一起上。
系统提示词把格式框死,少样本把逻辑教明白。
有了它兜底,样例还能写得很精简。
你不需要在样例里再抄一遍格式要求。
样例可以缩成这样。
输入是两条指标数值,输出只有一句归因。
格式的事全交给系统提示词去约束。
这就像带徒弟。
系统提示词是员工手册,上班别迟到,报告必须用文档写。
少样本是老员工教他怎么填模板里的坑。
两者结合,徒弟带得又快又好。
规矩立太多会摆烂
系统提示词虽好,也不能滥用。
塞十几条互相打架的规矩进去,模型直接就摆烂了。
比如先写,输出必须极详细,不少于五百字。
紧接着又写,严禁废话,不超过一百字。
模型一看就懵了,到底让它写长还是写短。
最后它可能前半段写长,后半段强行截断。
出来的东西莫名其妙。
所以规矩一定要互相兼容。
要详细就别嫌长。
要简短就别要求面面俱到。
还有些要求,模型客观上做不到,硬写进去也没用。
比如写,你的分析必须百分之百准确,不允许有任何误差。
模型是概率模型,不可能百分之百准确。
你写这一句,它只会学会伪装。
它会把那些不靠谱的结论,包装得像百分之百靠谱一样输出。
这反而增加了隐蔽的幻觉,更危险。
正确的写法还是前面那条边界。
不确定就明说。
允许它认错,它反而更诚实。
写系统提示词没有标准答案。
不同的模型对指令的敏感度也不一样。

图注:平台官网首页,写着以清华的时序大模型为核心,帮企业把数据优势变成决策优势。
建议去翻翻开发资料。
看看有没有一套针对时序分析的现成写法。
有时候资料里会给一段示例代码。
里面那段系统提示词写得特别地道。
那是别人按模型调优过的。
你直接抄过来用,比自己瞎琢磨强一百倍。
还有一个好去处是应用示例页。

图注:示例页上的预测应用,列出了北京气温和北京湿度等指标。
网页端可能没法显式设置系统字段。
你可以把指令放在提问最前面,用特殊符号括起来。
换几种指令试试,看输出变化有多大。
一个暴躁的运维,一个温柔的运维,口吻差得很明显。
这能帮你直观感受到它的威力。
到今天,提示词工程最核心的三板斧就凑齐了。
第一板斧是明确的指令。
第二板斧是少样本样例,教它照猫画虎。
第三板斧是系统提示词,给它立规矩画圈。
三招配合起来,模型基本就被你拿捏住了。
该类 AI工具用起来,才像个能干活儿的同事。
该查数据就查数据,该出报告就出报告。
格式规范,逻辑严密,不废话也不瞎编。
下一期我们讲怎么让它输出纯结构化数据,对接下游系统。
今天让模型输出了规整的排版,人看着是爽了,机器看不懂。
如果下游还有一个自动化脚本,要去解析它的结论,自动报警或者重启服务。
那个脚本怎么读这种排版。
脚本只认结构化数据。
怎么逼着模型别输出给人看的排版,只给机器看的数据。
这就要用到更硬的约束手段。
下一期我们聊聊怎么锁死模型的输出格式。
我们下篇见。
