跳到主要内容

业务规则与 Few-shot 示例

为什么业务规则必须细化到可执行?​

  • 场景: 一个帮用户打电话处理账单的 Agent,可砍价、可申请退款、可取消订阅;
  • 计费设计: 三种模式——按省钱提成(如省下金额的 20%)、按服务收固定小费、特别困难任务预收款且不退款;
  • 模糊规则的代价: “根据任务情况选择合适的计费类型”会让行为极不稳定;
  • 边界歧义一: “帮我退掉上个月买的衣服”既像“帮用户省钱”又像“取回本属于他的钱”,分类不清;
  • 边界歧义二: “帮我取消 Netflix 订阅”确实让用户未来不再付费,但算不算“省钱”没有明确定义;
  • 后果: 同样的任务在不同时间得到完全不同的分类,业务逻辑不可预测;
  • 明确化示例: 提成仅限通过谈判降低现有账单的场景;退款与取消服务绝对不能用提成;
NEVER use percentage_based_one_time for refunds and service cancellations.
Use fixed_fee instead.
  • 概率细化: 成功率按固定流程分步评估,估出的概率直接映射计费模式(高于 60% 用可退款模式、低于 30% 直接拒绝任务);
  • 金额细化: 通话按每分钟 $0.05 计费,汇总后四舍五入到最接近的整数美元;
  • “节省”的口径: 只基于现有账单计算,否则模型可能把“避免明年涨价”也算成省钱;
  • 设计哲学: 大语言模型擅长遵循复杂指令与从长上下文提取信息,但不应在业务规则制定上被赋予过多自由裁量权;

提示词应该由谁设计?​

  • 分工: 在优秀的 Agent 公司里,提示词一般由产品经理设计,基于线上数据、用户反馈与运营经验迭代规则;
  • 工程师角色: 把规则准确编码进提示词,保证格式正确、结构清晰,但不擅自决定业务逻辑;
  • 原因: 业务规则细化不是技术问题而是产品设计问题,需要产品经理深度参与;
  • 类比: 好的新员工培训不是“你很聪明,自己看着办”,而是提供详细 SOP,让员工在明确框架内发挥;

何时该给模型看 Few-shot 示例?​

  • 适用条件: 期望输出难以用规则精确描述时——特定风格的文案、结构化报告格式、客服语气分寸;
  • 做法: 给出两三个高质量的输入-输出示例,模型凭上下文学习能力“临时学会”这些模式;
  • 效果: 往往胜过等量篇幅的抽象规则;
  • 反向条件: 对模型本就擅长、规则又容易说清的任务,示例只是浪费 token;
  • 放置位置一: 放进系统提示词,成为静态前缀的一部分,对所有请求生效;
  • 放置位置二: 伪造一组 user/assistant 消息放在首轮对话中,适合按会话类型选用不同示例集的场景;
  • 缓存约束: 无论放在哪里,示例都处于上下文靠前区域,一旦确定就应保持字节级稳定;
  • 禁忌: 按请求动态检索“最相关”的示例等于每次改写前缀,缓存会持续失效——生产系统为每类任务准备固定示例集;
  • 数量: 两三个精心挑选、覆盖边界情况的示例通常胜过十个大同小异的示例,后者既占上下文又稀释对规则的注意力;

提示工程消融实验得出哪些结论?​

  • 框架: 基于 Tau-Bench,模拟航空公司客服与零售客户支持两个场景,覆盖航班改签、退款、库存查询等多步任务;
  • 方法: 控制变量法——设定基线(结构化提示词、完整工具描述、专业中立语气),逐维度修改;
  • 维度一(语气与风格): 三种风格差异显著,但对任务完成率影响相对有限;
  • 维度二(信息组织): 保留全部规则但打乱结构、去除层次后,任务成功率下降超过 30%;
  • 维度三(工具描述): 保留函数签名与参数定义、移除所有描述性文本后,工具调用错误率增加 45%;
  • 总结: 对人类友好的信息组织方式,对模型同样友好;