Step 1 · 固定任务与评测样本
不要从“写一个好 prompt”开始,而是先固定 20 条输入与预期输出。
{"input":"用户说想退款但订单已发货","expected":{"intent":"refund","risk":"medium"}}Step 2 · 设计输出 schema
{
"intent": "refund|shipping|complaint|other",
"risk": "low|medium|high",
"reason": "一句话依据"
}验收:输出字段稳定,缺字段会被解析器拦住。
Step 3 · 写 v1 prompt
规则:
- system 放稳定角色和边界。
- user 放动态输入。
- 输出格式明确到字段。
- 给 2 个正例和 1 个反例。
Step 4 · 加解析与重试
失败类型分开记录:
MODEL_TIMEOUTRATE_LIMITJSON_PARSE_FAILEDSCHEMA_INVALID
每种失败要有不同处理,不要全部“再试一次”。
Step 5 · 成本与延迟记录
每次调用至少记录:
model, prompt_version, input_tokens, output_tokens, latency_ms, success, fallbackStep 6 · 模型路由
做一张表:
| 场景 | 主模型 | 降级模型 | 触发条件 |
|---|---|---|---|
| 高风险分类 | strong | medium | 超时 / 429 |
| FAQ 摘要 | small | rule | 成本超阈 |
Step 7 · 版本化与复盘
目录结构:
prompts/
classify/v1.0.md
classify/v1.1.md
eval/
classify_cases.jsonl
runs/2026-05-15.json验收:任意一次 prompt 变更都能说清“为什么改、指标怎么变、如何回滚”。