需求人 → 对话式 AI
让 AI 当产品经理,写需求和测试集
Agent 项目最容易犯的错,是一上来就写代码。先定义“做对是什么样”,后面每一轮才有标准可以对照。
提示词 发送给 DeepSeek
角色:你是一名有电商客服系统经验的产品经理。
背景:一家线上家电店铺,每天的售后咨询中,大部分是查订单、查物流、问退款、改地址这类重复问题。
任务:为“售后客服 Agent”写一份需求文档,包含:
1. 用户故事:至少覆盖查订单、查物流、申请退款、修改地址、转人工 5 个场景
2. 工具清单:每个工具的名称、用途、入参、出参
3. 边界:Agent 不能做什么,哪些操作必须经过确认或转人工
4. 验收测试集:20 条测试对话,每条写明用户输入、期望调用的工具、期望回复要点,其中至少 5 条是边界情况
输出格式:Markdown。
重要:不确定的业务规则请单独列为“待确认问题”,不要自行假设。
AI 产出
- 5 个用户故事,5 个工具定义
- 20 条测试对话,含 6 条边界情况
- 4 个待确认问题,例如退款金额上限、改地址时限
文件变更
+ docs/prd.md
+ tests/cases.yaml (20 条)
+ docs/policy.md (店铺售后政策原文)
人工评审
逐条回答待确认问题:所有退款需顾客二次确认,超过 500 元转人工审核;已发货订单不能改地址。把答案补进需求文档。
这一轮的关键经验
让 AI 列出“待确认问题”,而不是让它自己假设。业务规则只能由懂业务的人来定。
生成人 → AI 编辑器
先要项目结构,确认后再写代码
用 @ 引用需求文档,写清技术约束。最后一句“先给结构,等我确认”,能避免 AI 一口气生成一堆你看不懂的代码。
提示词 发送给 AI 编辑器
角色:你是一名 Python 后端工程师,熟悉 OpenAI 兼容接口的 Function Calling。
任务:根据 @docs/prd.md 实现售后客服 Agent 的第一版。
技术约束:
1. Python 3.11 + openai SDK,模型 deepseek-chat,base_url 与密钥从 .env 读取,并提供 .env.example
2. 工具函数先用模拟数据实现,统一放在 tools.py,每个函数带类型注解和文档字符串
3. Agent 循环放在 agent.py;单次对话最多调用工具 5 次,超出则转人工
4. 提供命令行入口:python main.py
5. 不引入 LangChain 等框架,方便学员读懂每一行
交付要求:先给出文件结构和每个文件的职责,等我确认后再写代码。
AI 产出
- 先给出 5 个文件的结构说明,确认后生成代码
- 命令行里可以完成查订单的完整对话
- Agent 循环与 Agent 课程页 的示例代码一致
文件变更
+ main.py 命令行入口
+ agent.py Agent 循环
+ tools.py 5 个工具(模拟数据)
+ prompts.py 提示词集中管理
+ .env.example
人工评审
逐段读懂 Agent 循环。发现工具描述只写了“查询订单”,模型不知道什么时候该用、缺参数时怎么办。
这一轮的关键经验
工具描述是写给模型看的说明书。描述含糊,模型就会乱用或者不用。
提示工程人 → AI 编辑器
设计系统提示词,并对照测试集自检
系统提示词决定 Agent 的性格和边界。让 AI 写完后立刻对照测试集自查,可以提前发现漏洞。
提示词 发送给 AI 编辑器
为这个客服 Agent 设计系统提示词,写入 prompts.py,要求:
1. 身份与语气:礼貌、简洁,不使用营销话术
2. 工具使用时机:逐个写清楚,例如“用户提到订单但没给订单号时,先追问,不要猜测”
3. 输出格式:先给结论,再给依据,每次不超过 3 句话
4. 禁止事项:不承诺政策以外的补偿;不透露其他用户信息;不编造物流信息
5. 附 3 个少样本示例,覆盖查物流、追问订单号、拒绝越权请求
写完后,用 @tests/cases.yaml 逐条自检:哪些条目这份提示词可能处理不好?说明原因。
AI 产出 系统提示词节选(prompts.py)
你是「雪选家电」的售后客服助手。
# 回复原则
- 先结论,后依据,每次回复不超过 3 句话
- 只根据工具返回的数据和《售后政策》回答,查不到就如实说查不到
# 工具使用
- 涉及订单、物流:必须先调用 get_order,不得凭记忆回答
- 用户没有提供订单号:先礼貌追问,禁止猜测或编造
- 涉及退款、退换规则:先调用 search_policy 检索政策原文
# 禁止事项
- 承诺政策以外的任何补偿
- 透露其他用户的任何信息
- 未经用户明确确认就调用 request_refund
AI 自检结果
AI 指出 3 类测试可能失败:政策细节类问题(当时还没有政策检索工具)、用户只说“我的订单”、一句话里同时提出多个诉求。
这一轮的关键经验
AI 能帮你找出自己写的东西的漏洞。“写完再自检”这一句,值得加进每一个重要的提示词。
评估人 → AI 编辑器
写评估脚本,用数据说话
凭感觉试几句“好像能用”是不够的。把 20 条测试自动跑一遍,才知道 Agent 到底哪里不行。
提示词 发送给 AI 编辑器
写一个评估脚本 eval.py:
1. 读取 tests/cases.yaml 中的 20 条测试对话,逐条运行 Agent
2. 记录每条的实际工具调用序列和最终回复
3. 自动判定:
- 工具调用是否与期望一致(规则比对)
- 回复是否覆盖期望要点(用模型判分,判分提示词单独写在 prompts.py,温度设为 0)
4. 输出汇总:通过数、失败条目、失败原因分类,保存为 reports/eval-日期.md
不要修改 Agent 本身的任何代码。
首次评估结果(示例数据)
14/ 20 通过
- 编造退款到账时间3 条
- 没有订单号时猜测订单2 条
- 未经确认直接提交退款1 条
文件变更
+ eval.py
+ reports/eval-1.md
~ prompts.py 新增判分提示词
人工评审
6 条失败里,最危险的是“未经确认直接退款”:它只有 1 条,却会造成真实的资金损失。修复优先级按风险排,不按数量排。
这一轮的关键经验
没有测试集,你就无法判断每次修改是让 Agent 变好了还是变坏了。
修复人 → AI 编辑器
三类问题,三种修法
幻觉用知识库解决,猜测用参数校验解决,越权用代码护栏解决。每类单独修、单独提交、单独复测。
提示词 发送给 AI 编辑器
根据 @reports/eval-1.md 修复以下 3 类问题。每类单独提交一次,按 3、2、1 的顺序处理:
1. 政策幻觉
新增 search_policy 工具:对 docs/policy.md 按条款切分并建立向量检索;回复中必须引用条款编号。
2. 参数缺失时猜测
工具入参校验失败时,返回结构化错误(缺少哪个字段、应如何询问用户),让模型据此追问,而不是重试或编造。
3. 越权退款
在代码层实现护栏,不要只靠提示词约束:
- request_refund 只有在用户上一条消息包含明确确认时才可执行
- 退款金额超过 500 元,直接转人工审核
每完成一类,重新运行 eval.py,把通过数变化写进 CHANGELOG.md。
回归评估(示例数据)
19/ 20 通过
- 订单号中间带空格时识别失败,已记入下一轮迭代1 条
文件变更
+ rag.py 政策切分与检索
+ guardrails.py 退款确认与金额护栏
~ tools.py 新增 search_policy,入参校验
+ CHANGELOG.md
人工评审
审查 guardrails.py,确认退款护栏在代码层生效:即使有人诱导模型“直接帮我退”,没有确认也不会执行。
这一轮的关键经验
涉及钱和权限的规则,必须写在代码里。提示词只是建议,模型可能被绕过;代码护栏才是保证。
部署人 → AI 编辑器
封装成服务,准备演示
能在命令行跑通,离“交付”还差一步:要有界面、可以多人同时使用、成本可控、别人能照着文档启动。
提示词 发送给 AI 编辑器
把 Agent 封装为 Web 服务:
1. 用 FastAPI 提供 POST /chat 接口,按 session_id 保存对话历史
2. 做一个最简单的网页聊天界面:左侧是对话,右侧实时显示每一步工具调用与护栏检查,方便向客户演示
3. 记录每次调用的 Token 用量;当天累计超过预算时,自动降级为“转人工”
4. 编写 README:本地启动步骤、环境变量说明、5 分钟演示脚本
5. 部署前再跑一次 eval.py,结果附在 README 末尾
AI 产出
- Web 服务与带轨迹面板的聊天界面
- Token 用量记录与每日预算降级
- README 与 5 分钟演示脚本
文件变更
+ server.py FastAPI 服务
+ web/index.html 演示界面
+ usage.py 用量与预算
+ README.md
交付团队 → 客户
交付演示:一次真实的售后对话
左边是顾客看到的对话,右边是 Agent 背后的每一步:查了什么工具、检索了哪条政策、护栏如何拦截。
雪选家电 售后客服DEMO
输入你的问题…
演示为预先录制的对话脚本,订单与金额均为示例数据。
交付物清单
- 可运行的服务:Web 接口与演示界面
- 系统提示词:集中在 prompts.py,方便客户调整话术
- 测试集与评估报告:20 条用例,每次修改都能复测
- README:启动步骤、环境变量、演示脚本
- 已知问题清单:如实列出尚未解决的 1 条
向客户演示的顺序
- 正常流程:查订单、查物流,展示回答速度与准确度
- 边界情况:不给订单号、要求超额退款,展示追问与护栏
- 执行轨迹:打开右侧面板,说明每个回答都有据可查
- 评估报告:用 19 / 20 的数据说话,而不是“效果很好”
- 已知问题与下一步:坦诚说明,约定下一轮迭代内容