
🧠 记忆锚点:Prompt 是“模板 + 变量契约 + 模型配置”的可测试制品;请求必须记录版本,实验要粘性分流,异常可自动回滚。
💡 答案要点
为什么 Prompt 需要专门管理?
Prompt 是 LLM 应用的"代码"——改一行可能导致:
- 输出格式全部变化 → 下游解析挂掉
- 幻觉率上升 → 用户投诉激增
- Token 消耗增加 → 成本暴涨
所以 Prompt 必须像代码一样:版本化、可回滚、可灰度。完整 Prompt 管理方案:
1. 版本化存储
yaml
# prompts/rag_answer/v2.1.0.yaml
name: rag_answer
version: v2.1.0
description: "RAG 问答核心 Prompt,增加无答案时明确拒绝"
author: xiaogaiguo
created_at: 2026-07-02
content: |
你是一个专业的企业知识库助手。请严格基于以下检索内容回答问题。
规则:
1. 只能使用检索内容中有明确依据的信息
2. 如果检索内容无法回答问题,直接说"根据现有资料无法回答",不要编造
3. 关键数据(数字、日期、名称)必须与原文完全一致
4. 回答末尾标注引用来源
检索内容:
{{context}}
问题:{{question}}
metrics:
faithfulness: 0.93 # RAGAS 评估值
hallucin_rate: 0.02 # 幻觉率
avg_tokens: 450 # 平均 token 消耗2. A/B 测试框架
go
type PromptABConfig struct {
ExperimentID string
ControlID string // 对照组:v2.0.0
TreatmentID string // 实验组:v2.1.0
TrafficRatio float64 // 实验组流量比例:0.1 = 10%
}
func selectPrompt(userID string, cfg PromptABConfig) string {
// 稳定哈希分流(同一用户始终进同一组)
h := fnv.New32a()
h.Write([]byte(userID + cfg.ExperimentID))
bucket := h.Sum32() % 100
if float64(bucket) < cfg.TrafficRatio*100 {
// 记录实验组分配
trackExperiment(userID, cfg.ExperimentID, "treatment")
return getPrompt(cfg.TreatmentID)
}
trackExperiment(userID, cfg.ExperimentID, "control")
return getPrompt(cfg.ControlID)
}3. 灰度发布流程
新 Prompt 上线流程:
1. 开发 → 本地用 RAGAS 跑评估集(>100 个问题)
2. 对比指标:Faithfulness / 幻觉率 / Token 消耗
3. 指标全部优于当前版本 → 上灰度 (5% 流量)
4. 灰度 24 小时无异常 → 扩到 50%
5. 全量后保留旧版本 7 天(方便回滚)4. 快速回滚
go
// 一键回滚:数据库更新 + 内存缓存失效
func rollbackPrompt(name string, targetVersion string) error {
if err := db.UpdateActiveVersion(name, targetVersion); err != nil {
return err
}
cache.Delete("prompt:" + name + ":active") // 清缓存,下次请求自动加载旧版
log.Infof("Prompt %s rolled back to %s", name, targetVersion)
return nil
}工具选型:
| 工具 | 适用场景 |
|---|---|
| Langfuse | 开源自托管,Prompt 版本 + Trace 调试一体 |
| PromptLayer | SaaS,快速接入,适合小团队 |
| Git + YAML | 最轻量,代码化管理,CI 集成评估 |
| 自研 | 企业级合规要求,数据不出内网 |
面试话术:
示例表达(仅在能用本人经历或可复现实验佐证时使用): "Prompt 在生产环境必须像代码一样管理。我们用 Langfuse 做 Prompt 版本管理:每个版本有 YAML 描述 + RAGAS 评估指标,上线前必须跑评估集,Faithfulness 低于 0.90 的版本不允许上线。灰度策略是稳定哈希分流,保证同一用户始终在同一组,避免体验跳变。最关键的是回滚机制——数据库更新 + 清缓存两步,30 秒内完成回滚,遇到线上幻觉率异常可以立即止损。"