提示词版本管理与测试
把提示词当代码管理:集中存放、版本化、A/B 对比与回归测试。
提示词是最容易"改坏"的地方
LLM 应用 80% 的效果波动来自提示词改动。一个字的差异可能让解析失败率翻倍 —— 所以提示词需要像代码一样被管理。
集中管理
- 提示词统一放
prompts/目录,独立成 YAML/文本文件,代码里只引用不硬编码; - 文件名带版本号(
rag-answer.v3.yaml),或直接用 Git 管理变更; - 变量名稳定,模板内容可热更。
回归测试
维护一个"评测集"(问题 + 期望要点),每次改提示词后批量跑一遍:
test_cases = [
{"q": "退货流程?", "must_contain": ["7天", "申请"]},
{"q": "发票怎么开?", "must_contain": ["电子发票"]},
]
for case in test_cases:
answer = rag_chain.invoke(case["q"])
assert all(kw in answer for kw in case["must_contain"]), case["q"]
A/B 对比
- 新旧提示词各跑同一评测集,对比通过率、平均长度、延迟;
- LangSmith 的
evaluate可以把两版结果放在同一视图对比; - 保留每版的评测记录,效果回退时可快速定位是哪次改动引入。
原则:没有跑过评测集的提示词改动,不要上线。
📝 课后练习
quiz-1 提示词修改后、上线前应该做什么?