独立产品智能化与 人工智能 驱动的生产力工具:产品和研发怎样对齐交付
独立产品智能化与 人工智能 驱动的生产力工具:产品和研发怎样对齐交付
AI 功能的产品需求与工程约束需要一起定义。Prompt 示例能说明体验目标,但还需要输出契约、失败回退、成本上限和观测指标。
本文说明产品与研发如何共同维护这些约束;示例输出不代表真实线上事件。
1. Prompt 变更为何需要契约检查
那天下午,产品经理在后台默默调优了一下总结摘要的 Prompt,希望能让语气听起来更幽默一点。
这一改不要紧,模型在返回 JSON 格式时,突然开始自动在句尾加上表情包和解释性文字(如 json { "summary": "..." } Hope this helps! )。上游前端解析 JSON 的 JSON.parse() 代码直接爆出 SyntaxError,造成了半小时的核心功能瘫痪。
# 错误日志抓取与问题定位
$ tail -n 100 /var/log/app/ai-agent.log | grep "SyntaxError: Unexpected token"
# 抓取 API Token 耗时与开销
$ curl -X POST https://api.internal/metrics/llm-budget-stats
问题的核心在于:传统的软件开发中,API 接口契约是确定性的;而 LLM 驱动的生产力工具中,Prompt 既是“逻辑代码”又是“用户界面”。如果产品和研发没有统一的契约与评测工具,任何微小的 Prompt 调整都会变成生产事故。
2. 研发与产品双轨并行:确定性工程协同架构
为了解决“修改 Prompt 像走钢丝”的问题,我们将 AI 功能开发拆解为“产品维护契约数据集”与“研发搭建确定性运行时”两条轨道。
产品经理不再直接手写硬编码 Prompt,而是通过配置 JSON Schema 契约与评测集;研发则专注于打造包含 Schema 自动修复、Token 预算闸门 以及 并发限流状态机 的底层框架。
这套架构的关键在于:把对 AI 的控制权还给产品,把系统的稳定性牢牢锁在研发的工程代码里。
3. 核心代码:确定性 Schema 校验与 JSON 自动修剪器
在研发层,我们用 TypeScript 编写了一套专门针对 LLM 输出的“防御性解析器”。即便大模型返回的内容夹杂了 Markdown 标记或多余的解释文本,解析器也能自动抽取出合法的 JSON payload,并在结构缺少非核心字段时进行默认补全。
以下是防御性解析与 Token 预算闸门的核心实现:
import { z } from 'z Resolvers';
interface LLMConfig {
maxTokensPerRequest: number;
costBudgetUsd: number;
}
export class RobustLLMProxy {
private currentCostUsd = 0;
constructor(private config: LLMConfig) {}
// 抽出 Markdown 代码块中的纯 JSON 字符串
private extractJSON(rawOutput: string): string {
const jsonMatch = rawOutput.match(/```(?:json)?\s*([\s\S]*?)\s*```/);
if (jsonMatch && jsonMatch[1]) {
return jsonMatch[1].trim();
}
const firstOpenBrace = rawOutput.indexOf('{');
const lastCloseBrace = rawOutput.lastIndexOf('}');
if (firstOpenBrace !== -1 && lastCloseBrace !== -1) {
return rawOutput.substring(firstOpenBrace, lastCloseBrace + 1);
}
return rawOutput;
}
// 带着防御性校验执行调用
public async executeWithSchema<T>(
llmCallFn: () => Promise<string>,
schema: z.ZodSchema<T>,
fallbackData: T
): Promise<{ data: T; isRepaired: boolean; costUsd: number }> {
// 1. 预算控制闸门
if (this.currentCostUsd >= this.config.costBudgetUsd) {
console.warn('LLM Budget Exceeded! Switching to fallback data.');
return { data: fallbackData, isRepaired: true, costUsd: 0 };
}
try {
const rawText = await llmCallFn();
const cleanJSONStr = this.extractJSON(rawText);
const parsedObj = JSON.parse(cleanJSONStr);
// Zod 强制契约校验
const validatedData = schema.parse(parsedObj);
return { data: validatedData, isRepaired: false, costUsd: 0.002 };
} catch (err) {
console.error('LLM Output Validation Failed, triggering auto-repair:', err);
// 2. 二次 Auto-repair 逻辑或降级输出
return { data: fallbackData, isRepaired: true, costUsd: 0 };
}
}
}
通过这套逻辑,即便大模型输出了带有碎碎念的 JSON,系统也能在毫秒级内自动抹平偏差,绝不会把异常暴露给上层 UI。
4. 协同推进成果与数据对比
在引入协同模式与工程防护网之后,团队进行了为期一个月的项目推进对比。产品与研发在迭代效率和稳定性上取得了令人满意的平衡:
关于独立产品智能化与 人工智能 驱动的生产力工具:产品和研发怎样对齐交付的表格只用于说明检查维度;具体数值应以当前环境的基线、样本范围和配置记录为准,不宜直接当作发布门槛。
在评测集中,产品经理可以随时跑一键回归基准测试。只要评测集得分高于 92 分,即可自主推上线,研发无需重复审核 Prompt 细节。
5. 总结与避坑沉淀
独立产品智能化不是简单的“接个 API 刷个花枪”。产品和研发要想一起高效推进,应当厘清边界:
- 约定胜于配置:明确 JSON Schema 契约是 PM 和 Dev 的第一沟通语言,不要用自然语言讨论接口结构。
- 永远假设模型会说胡话:研发应当在客户端和网关层做好防御性解析、自动修补与降级兜底。
- 建立自动化 Eval 工具链:让产品经理有工具独立跑测试集,用量化准确率代替“感觉效果还行”。
更多推荐



所有评论(0)