跳到主要内容

按需生成 AI 内容

$9,000/月 → $700/月

将个性化外联从预计算改为由用户需求触发,使模型调用减少 96%,并移除了过时的批处理管线。

阅读时间:4分钟作者

预计算在产品规模下成倍放大

一次房产搜索会返回 50~500 名买家。旧流程会在用户选择联系人之前,为每个结果生成外联消息。

这样一来,成本会随搜索结果数量增长,而它本应只随实际收到消息的少数联系人增长。

每名买家都会触发四个智能体

SendFlow 最多重试三次以生成初稿。Review Gate 决定接受或拒绝初稿,Content Rewriter 调整语气和细节,Message Humanizer 再生成两到三个变体。八个工作线程并行执行这条链,并在任何人点击“发送”前把结果存入数据库。

搜索结果
  -> SendFlow(最多重试三次)
  -> Review Gate
  -> Content Rewriter
  -> Message Humanizer(2~3 个变体)
  -> 存储每个结果

这条链会为每名买家调用模型四到五次。一次返回 500 名买家的搜索,会在用户选择收件人前产生约 2,500 次模型调用。

百分之八十的工作被丢弃

在这个包含 500 个结果的示例中,用户只联系了约 100 名买家。大约 80% 的预计算消息从未被使用,相当于约 2,000 次调用没有产生任何面向用户的结果。调整提示词可以降低单次调用成本,却无法证明运行这些无用调用是合理的。

把生成移到用户表达意图的时刻

修改后的搜索只返回买家,不再生成外联消息。用户明确点击 Regenerate with AI 后,系统只为选中的联系人调用一个专用智能体。请求上下文包含地点、电话号码、买家与发件人的名字、市场、买家活动、格式化的对话历史和买家 ID;结果在发送前仍可编辑。

搜索 500 名买家 -> 生成 0 条消息
用户选择一名买家 -> 组装联系人与对话上下文
Regenerate with AI -> 调用模型 1 次
ProgressReporter -> 每两秒发送一次 WebSocket 更新
可编辑结果 -> 用户决定是否发送

实现经历过演进。一个代码仓库快照会在选中联系人面板打开时直接发起 REST 请求;后续文章所依据的流程把该操作放到明确的用户意图之后,并通过 WebSocket 流式传送进度。这些是产品的不同阶段,并非同时存在的一条代码路径。

让按需工作感觉即时

产品在 gpt-4.1-nano 上配置了超过 25 个专用智能体。每个请求只选择其中一个配置,并不是 25 个智能体组成的链。消息生成期间,ProgressReporter 每两秒发送一次 WebSocket 更新。

把生成操作放到点击之后,让等待过程变得可见。我保留了结果编辑能力,显示生成进度,并且只为用户选中的收件人生成消息。

删除无用工作,而不是继续优化浪费

在记录的 500 名买家示例中,调用量从约 2,500 次降至约 100 次,减少 96%。每月模型支出从约 $9,000 降至约 $700。根据这些取整后的月度数据估算,年化支出减少约 $100,000。

这项更改还删除了 1,218 行代码,其中包括 640 行的批处理器。删除这条路径时,它的重试、工作进程、持久化和多智能体协调也一并消失。

  • 测量用户实际使用了多少生成内容。
  • 把高成本工作放到真正需要它的产品事件之后。
  • 按需工作无法立即完成时,显示可见进度。
  • 产品不再依赖批处理架构后,将其删除。