跳到主要内容

React 工程化与 Prompt(第 3-4 周)

目标:把 Prompt 模板、输出校验、错误兜底加入工程化闭环。

目录

任务清单

  • 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.txt
  • prompts/prd.v2.txt
  • README 记录变更与指标

验收标准

  • JSON 可解析
  • 模板可切换

详细解析:Prompt 工程化

模板拆分建议

  • system:全局规则
  • task:当前任务
  • context:用户输入/证据
  • output:格式约束

Prompt 评估最小闭环

  1. 准备 20 条用例
  2. 统计 JSON 合格率
  3. 对比版本指标

Mermaid:Prompt 版本流转

调试建议

  • 记录失败样本
  • 复用失败样本做回归
  • 记录版本变更日志

详细步骤(第 3-4 周)

  1. 把 Prompt 拆成模板文件
  2. 加 JSON 校验
  3. 加失败重试
  4. 记录指标

示例:失败重试(伪代码)

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 测试步骤

  1. v1 与 v2 同时上线小流量
  2. 统计 JSON 合格率
  3. 选择指标更好版本

指标表样例

版本JSON 合格率平均耗时
v188%1.2s
v295%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 模板清单(可直接用)

  1. PRD 生成
  2. 会议纪要
  3. 简历优化
  4. 代码解释
  5. 错误分析
  6. 测试用例生成
  7. FAQ 生成
  8. 周报生成
  9. 需求拆解
  10. 风险评估
  11. 文案改写
  12. 标题生成
  13. 结论提炼
  14. 用户画像
  15. 竞品分析
  16. 技术方案摘要
  17. 需求优先级
  18. 里程碑计划
  19. 问题列表
  20. 反问清单

附录:Prompt 评审清单

  • 是否强制输出格式
  • 是否有拒答规则
  • 是否有示例
  • 是否控制字数

Prompt v3 示例

Role: 你是产品经理
Task: 输出需求拆解
Constraint: JSON + 必须包含风险

回归用例表(简版)

用例期望结果
生成 PRDJSON 合格通过
生成总结有行动项通过

常见失败样本

  • 输出带 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