我不会先给出“五个示例用 Few-shot、几百条数据就微调”这种固定分界。第一步是做一套代表线上分布的评测集,覆盖常规输入、边界、拒答和分布外样本,然后让三种方案在同一口径下比较质量、延迟、成本和维护复杂度。
如果基座模型已经理解任务,指令和输出契约也能直接说清,我先用 Zero-shot。它上下文最短、维护最简单。遇到特殊标签边界、固定格式或少量示例比文字规则更清楚时,再用 Few-shot。示例数没有通用答案,一个可能够,几十个也可能因为选择或顺序不合适而退化。示例还会占上下文和输入成本;动态检索示例时,要防止召回错例和把不可信文本当指令。
Fine-tuning 适合另一类问题:需求相对稳定,提示已经优化,但模型仍反复出现可由高质量样本表达的行为缺口,比如分类边界、固定风格或持续的指令遵循问题。它需要训练集、留出评测、版本管理和上线回归。数据有偏差,模型也会把偏差学进去,所以不能简单说微调的效果天花板一定最高。
还要把行为和事实分开。如果系统缺的是当天政策、库存、网络告警或需要引用的内部资料,我会用受权限控制的查询或 RAG 提供事实。微调权重不是实时数据库,也不能保证把事实更新到位。实际系统可以组合:RAG 给证据,Few-shot 给当前任务示例,Fine-tuning 改善稳定行为,但组合后仍要用评测证明收益。
隐私方面也不能说“示例只在请求里,所以结束后一定销毁”。数据是否进日志、保留多久、是否用于训练和在哪个区域处理,都取决于部署方式、服务条款和配置。敏感数据需要最小化、脱敏、权限控制、留存策略和审计。Fine-tuning 数据同样要做这些治理。
最后我的决策顺序是:先 Zero-shot 基线,再加经审核的 Few-shot;如果错误来自事实缺失就补检索,如果是稳定行为缺口且流量、延迟或成本值得才做 Fine-tuning。每次模型、提示、示例集或数据分布变化,都重新跑同一套评测。