Agent 项目如何写 PRD:任务边界、风险清单与验收口径
1. 引入:90%的Agent项目失败,都始于一份不合格的PRD
2024年某AI咨询公司发布的《企业Agent落地调研报告》显示:全年国内企业上马的Agent类项目中,72%最终未能落地,其中48%的失败原因可以归结为「需求定义模糊」——产品经理拿着写传统互联网APP的思路写Agent PRD,通篇是「具备自然语言交互能力」「能自主完成用户任务」「回复准确率高」这类模糊描述,等到开发交付时才发现和预期相差甚远:要么Agent什么都敢答,频繁出现幻觉甚至输出违规内容;要么什么都做不了,稍微超出预设场景就直接宕机;要么验收时双方各执一词,产品说「你做的不符合需求」,开发说「你根本没说清楚什么是符合需求」。
我去年参与过一个电商售后Agent的项目,最初的PRD只有2页,核心需求写的是「替代80%的人工售后客服,能处理用户的查单、退换货、咨询问题」,结果开发出来上线第一天就出了事故:有用户问「我买的100块的衣服坏了,能赔我1000块吗?」,Agent直接同意了,当天就造成了3万多的损失。事后复盘才发现,PRD里完全没写Agent的决策权限边界、风险应对规则,连最基本的验收标准都没有。
这篇文章我会结合3年多的Agent产品落地经验,给大家一套可直接复用的Agent PRD撰写框架,核心围绕任务边界、风险清单、验收口径三大核心模块展开,既适合0基础的产品经理快速上手,也能给技术、算法、运营人员提供需求对齐的统一标准。
2. 核心概念与问题背景
2.1 核心概念定义
什么是Agent项目PRD?
Agent项目PRD(Product Requirements Document,产品需求文档)是针对具备自主决策、自然语言交互、环境感知能力的AI代理类项目的需求说明文件,和传统软件PRD的核心差异在于:传统PRD的核心是「枚举确定性功能和交互规则」,而Agent PRD的核心是「定义能力围栏、不确定性应对方案、可量化的效果标准」。
三大核心模块的定义
| 模块 | 核心作用 | 本质 |
|---|---|---|
| 任务边界 | 明确Agent「能做什么、不能做什么、能做到什么程度」 | 给Agent画不可逾越的能力围栏 |
| 风险清单 | 提前识别Agent运行过程中可能出现的所有不确定性风险,给出应对预案 | 把Agent的天生不确定性控制在可接受范围内 |
| 验收口径 | 定义可量化、可验证的项目交付标准,避免需求扯皮 | 给供需双方提供统一的验收标尺 |
2.2 问题背景:为什么传统PRD不适用于Agent项目?
传统软件的运行逻辑是规则驱动的确定性系统:比如你做一个APP的登录功能,你可以枚举所有的规则:手机号必须是11位、验证码必须是6位、错误3次锁定账号、登录成功跳转到首页,所有路径都是预设好的,不会出现预期之外的行为。
而Agent的运行逻辑是模型驱动的不确定性系统:
- 输入不可枚举:用户可能输入任何内容,你不可能提前预设所有的query场景
- 决策不可枚举:Agent基于大模型的推理能力做决策,你不可能穷举所有的决策路径
- 输出不可枚举:Agent的回复是自然语言生成的,不可能完全和预设话术一致
传统PRD的「功能列表+交互原型+逻辑规则」的框架,完全无法覆盖Agent的不确定性,导致出现三大痛点:
- 边界模糊:Agent要么越权操作,要么不敢处理任何超出预设的需求
- 风险不可控:幻觉、Prompt注入、敏感输出、决策错误等问题频发
- 验收无据:项目交付时没有统一的判断标准,需求反复变更,项目延期
2.3 概念对比:传统PRD vs Agent PRD
| 对比维度 | 传统软件PRD | Agent项目PRD |
|---|---|---|
| 核心目标 | 枚举所有确定性功能和交互 | 定义能力围栏、不确定性应对、效果标准 |
| 需求描述方式 | 功能列表+交互原型+规则说明 | 任务域定义+边界规则+风险预案 |
| 边界定义 | 明确的功能范围边界 | 任务边界+交互边界+决策权限边界三维定义 |
| 风险处理方式 | 提前修复所有确定性Bug | 识别风险等级,给出分级应对预案,不可能完全消除风险 |
| 验收标准 | 功能走通+交互符合原型 | 多维度可量化指标(任务成功率、幻觉率、满意度等) |
| 迭代方式 | 新增功能模块为主 | 优化效果、扩展边界、降低风险为主 |
3. 问题解决:Agent PRD三大核心模块撰写指南
3.1 第一模块:任务边界:给Agent画不可逾越的能力围栏
任务边界是Agent PRD的第一核心,相当于给Agent设定了「行为准则」,所有超出边界的需求要么直接拒答,要么转人工,从源头上避免越权操作和幻觉问题。
3.1.1 任务边界的三维定义框架
任务边界要从任务域边界、交互边界、决策权限边界三个维度定义,缺一不可。
(1)任务域边界:明确Agent的服务范围
任务域边界就是明确Agent「能处理什么任务,绝对不能处理什么任务」,要分「白名单」和「黑名单」两部分:
- 白名单:列出所有Agent可以处理的任务类型,要具体到场景,不能模糊。比如电商售后Agent的白名单任务:查询订单物流状态、申请7天无理由退换货、查询售后进度、咨询运费险规则、修改收货地址(未发货状态)
- 黑名单:列出所有Agent绝对不能触碰的任务类型,比如修改用户账户余额、泄露其他用户信息、回答非电商业务相关问题、同意超出政策范围的赔偿要求
任务域边界的落地实现逻辑:可以用「关键词匹配+语义相似度计算」的方式实现,代码示例如下:
# 环境安装:pip install sentence-transformers numpy torchimportnumpyasnpfromsentence_transformersimportSentenceTransformer# 加载预训练向量模型model=SentenceTransformer('all-MiniLM-L6-v2')# 白名单任务列表,生成语义向量allowed_tasks=["查询订单物流状态","申请7天无理由退换货","查询售后进度","咨询运费险规则","未发货状态修改收货地址"]allowed_embeddings=model.encode(allowed_tasks)# 黑名单关键词列表forbidden_keywords=["修改余额","泄露信息","其他用户","赔偿10倍","攻击系统"]defcheck_task_domain(user_query:str,similarity_threshold:float=0.7)->tuple[bool,str]:""" 检查用户query是否在任务域边界内 :param user_query: 用户输入的问题 :param similarity_threshold: 语义相似度阈值,超过则属于白名单任务 :return: 是否允许处理,提示信息 """# 第一步:先匹配黑名单关键词,直接拦截forkwinforbidden_keywords:ifkwinuser_query:returnFalse,"抱歉,您的问题我无法处理,请联系人工客服哦~"# 第二步:计算语义相似度,判断是否属于白名单任务query_embedding=model.encode(user_query)similarities=np.dot(allowed_embeddings,query_embedding)/(np.linalg.norm(allowed_embeddings,axis=1)*np.linalg.norm(query_embedding))max_similarity=similarities.max()ifmax_similarity>=similarity_threshold:returnTrue,f"任务匹配成功,相似度{max_similarity:.2f}"else:returnFalse,"抱歉,我只能处理订单查询、退换货、售后相关的问题哦~"# 测试示例if__name__=="__main__":print(check_task_domain("我的订单什么时候发货?"))# 输出:(True, '任务匹配成功,相似度0.89')print(check_task_domain("帮我修改一下我的账户余额到10000"))# 输出:(False, '抱歉,您的问题我无法处理,请联系人工客服哦~')print(check_task_domain("你会不会写Python代码?"))# 输出:(False, '抱歉,我只能处理订单查询、退换货、售后相关的问题哦~')(2)交互边界:明确Agent的交互规则
交互边界是明确Agent在交互过程中的行为规范,核心包括:
- 异常交互处理规则:用户说脏话、恶意提问、诱导Agent输出违规内容时的回复规则,统一用标准化拒答话术,不要和用户纠缠
- 信息补全规则:当用户的需求信息不全时,Agent需要主动询问的信息列表,比如用户申请退换货时,要先问订单号、退换货原因、是否有商品损坏照片
- 转人工触发规则:什么场景下必须转人工,比如用户情绪激动要求投诉、需求超出任务域、Agent连续3次无法理解用户问题
(3)决策权限边界:明确Agent的自主决策范围
决策权限边界是Agent能自主做决定的最大范围,超过这个范围必须转人工,通常用阈值定义,比如:
- 退款金额≤100元:Agent可以自主同意
- 100元<退款金额≤500元:Agent可以给出审核建议,由人工审核通过后执行
- 退款金额>500元:直接转人工处理,Agent不能给出任何同意/拒绝的结论