React 工程化与 Prompt(第 3-4 周)
目标:把 Prompt 模板、输出校验、错误兜底加入工程化闭环。
目录
- 任务清单
- 最小可运行代码
- 项目结构
- 版本化与回滚(最小约定)
- 验收标准
- 详细解析:Prompt 工程化
- Mermaid:Prompt 版本流转
- 调试建议
- 详细步骤(第 3-4 周)
- 示例:失败重试(伪代码)
- 指标记录(最小)
- 扩展方向
- Prompt 注册表(最小实现)
- A/B 测试步骤
- 指标表样例
- 常见坑排查清单
- 示例:PRD 生成 Prompt(v2)
- 失败样本回收
- A/B 测试报告模板
- 详细解析:为什么要拆 Prompt
- Mermaid:Prompt 管道
- 常见错误样例
- 修正策略
- Prompt 模板清单(可直接用)
- 附录:Prompt 评审清单
- Prompt v3 示例
- 回归用例表(简版)
- 常见失败样本
- FAQ
- 验收清单(工程化)
- 附录:参数建议
- 最小完成标记
- 完整可运行代码(Prompt 工程 + JSON 校验)
任务清单
- Prompt 模板化
- JSON schema 校验
- 统一错误码与兜底
Prompt 模板示例(v1)
Role: 你是资深产品经理
Task: 输出 PRD
Constraint: 输出 JSON
最小可运行代码
规则:
1) 输出 JSON
2) 缺字段必须补齐
JSON 校验(zod 伪代码)
import { z } from "zod";
const Schema = z.object({
title: z.string(),
items: z.array(z.object({ name: z.string(), priority: z.enum(["P0","P1","P2"]) }))
});
Schema.parse(result);
项目结构
react-ai-demo/
prompts/
prd.v1.txt
src/
validators/
版本化与回滚(最小约定)
prompts/prd.v1.txtprompts/prd.v2.txt- README 记录变更与指标
验收标准
- JSON 可解析
- 模板可切换
详细解析:Prompt 工程化
模板拆分建议
system:全局规则task:当前任务context:用户输入/证据output:格式约束
Prompt 评估最小闭环
- 准备 20 条用例
- 统计 JSON 合格率
- 对比版本指标
Mermaid:Prompt 版本流转
调试建议
- 记录失败样本
- 复用失败样本做回归
- 记录版本变更日志
详细步骤(第 3-4 周)
- 把 Prompt 拆成模板文件
- 加 JSON 校验
- 加失败重试
- 记录指标
示例:失败重试(伪代码)
for (let i = 0; i < 2; i++) {
const result = await callLLM(prompt);
if (Schema.safeParse(result).success) return result;
}
throw new Error("输出校验失败");
指标记录(最小)
- JSON 合格率
- 平均响应时长
- 失败类型分布
扩展方向
- A/B 测试页面
- Prompt 版本切换面板
- 失败样本回收
Prompt 注册表(最小实现)
{
"prd": { "version": "v1", "path": "prompts/prd.v1.txt" },
"summary": { "version": "v1", "path": "prompts/summary.v1.txt" }
}
A/B 测试步骤
- v1 与 v2 同时上线小流量
- 统计 JSON 合格率
- 选择指标更好版本
指标表样例
| 版本 | JSON 合格率 | 平均耗时 |
|---|---|---|
| v1 | 88% | 1.2s |
| v2 | 95% | 1.4s |
常见坑排查清单
- 模板内容过长 → 拆分 system/task/context
- 校验过严 → 提升失败率
- 版本混乱 → 强制版本号
示例:PRD 生成 Prompt(v2)
Role: 你是资深产品经理
Task: 生成PRD
Constraint:
- 输出 JSON
- 必须包含 background/goal/features/risk
失败样本回收
- 记录失败输入
- 标注失败原因
- 进入回归用例集
A/B 测试报告模板
版本: v1 vs v2
合格率: 88% -> 95%
平均耗时: 1.2s -> 1.4s
结论: v2 上线
详细解析:为什么要拆 Prompt
- 减少上下文长度
- 方便局部替换
- 便于版本管理
Mermaid:Prompt 管道
常见错误样例
- 输出不是 JSON
- 字段缺失
- 数组为空
修正策略
- 提示“必须输出 JSON”
- 增加 required 字段
- 增加示例输出
Prompt 模板清单(可直接用)
- PRD 生成
- 会议纪要
- 简历优化
- 代码解释
- 错误分析
- 测试用例生成
- FAQ 生成
- 周报生成
- 需求拆解
- 风险评估
- 文案改写
- 标题生成
- 结论提炼
- 用户画像
- 竞品分析
- 技术方案摘要
- 需求优先级
- 里程碑计划
- 问题列表
- 反问清单
附录:Prompt 评审清单
- 是否强制输出格式
- 是否有拒答规则
- 是否有示例
- 是否控制字数
Prompt v3 示例
Role: 你是产品经理
Task: 输出需求拆解
Constraint: JSON + 必须包含风险
回归用例表(简版)
| 用例 | 期望 | 结果 |
|---|---|---|
| 生成 PRD | JSON 合格 | 通过 |
| 生成总结 | 有行动项 | 通过 |
常见失败样本
- 输出带 Markdown
- 缺少必填字段
- 字段类型不正确
FAQ
Q: 为什么模板要拆分?
A: 便于替换与回滚。
Q: 为什么要校验?
A: 保证输出可用。
Q: 为什么要 A/B?
A: 用数据选择更好版本。
验收清单(工程化)
- 模板可切换
- JSON 可解析
- 失败可重试
- 版本可回滚
附录:参数建议
- temperature: 0.2~0.4
- max_tokens: 400~800
最小完成标记
- 模板可维护
完整可运行代码(Prompt 工程 + JSON 校验)
源码目录:
docs/demos/prompt-demo
cd docs/demos/prompt-demo
npm i
node index.js