一个 Prompt 塞了太多任务:4 个原因 + 对症修复

一个 prompt 塞 5 件事,模型把第一件做好、第二件搞砸、剩下的随便答。

你写了一个 prompt 让模型:(1) 总结客户邮件、(2) 分类情绪、(3) 起草回复、(4) 必要时标升级、(5) 写一条内部 Slack 消息。输出 task 1 做得好、task 2 给个通用答案、task 4 完全跳过、task 3 写了半截回复。task 5 没碰。追问”5 个都做”——同样的形态,漏的稍微不同。多任务 prompt 像无调度的分时 CPU:模型把大部分预算给第一个任务,后面降,没注意力余额就停。

本文讲为什么批量 prompt 结果不一致,以及怎么拆成并行或顺序 prompt 并给每任务显式成功标准。

常见原因

1. 为省事叠任务

你批量是因为写 5 个 prompt 觉得浪费。结果是一个 prompt 做 5 件事都做得糟,而不是 5 个 prompt 各做好一件。

如何判断:prompt 含 3+ 个编号任务。

2. Token 预算用完

模型输出预算有限。5 个任务塞一个输出 = 每个 1/5 预算,即使有的需要 1/2 才能做好。

如何判断:后面任务被截或跳过。

3. 早任务改变模型”状态”

任务 1 用正式语气答完,任务 2 继承这个语气,哪怕换个语域更合适。模型在单一回答里路径依赖。

如何判断:后任务不当地继承了早任务的语域 / 框架。

4. 没每任务成功标准

你说”5 个都做”没说每个成功长什么样。模型挑最易满足的做、剩下跳。

如何判断:prompt 只有一个成功标准被 5 个任务共用。

5. 任务有隐性依赖

任务 3 依赖任务 2 的输出。模型按序处理但任务 2 输出次优,任务 3 错误级联。

如何判断:一个任务失败污染下一个。

动手前先确认

  • 列出你叠的任务并数数。
  • 标真正独立 vs 依赖。
  • 每个定义成功。
  • 决定并行(独立)还是顺序(依赖)发送。
  • 计划每任务独占一轮,还是共享 system prompt + 单轮任务。

需要收集的信息

  • 当前多任务 prompt。
  • 不全 / 不一致的输出。
  • 拆出来的 5 个(或多少个)任务。
  • 每任务成功标准。
  • 模型 + system prompt。

最短修复路径

Step 1:列任务;默认 1 prompt = 1 任务

任务 1:总结邮件。
任务 2:分类情绪。
任务 3:起草回复。
任务 4:标升级。
任务 5:内部 Slack 消息。

默认:5 个 prompt。批量理由:仅当依赖要求或 token 成本压过质量。

Step 2:独立任务并行跑

平台支持就并行发 5 个 API 调用。每个拿全注意力。总延迟是 5 个的 max,不是 sum。

results = await asyncio.gather(
  call_model(prompt_1),
  call_model(prompt_2),
  ...
)

Step 3:依赖任务顺序链,显式 handoff

Pass 1:总结邮件。输出:<summary>
Pass 2:给 <summary>,分类情绪。输出:<sentiment>
Pass 3:给 <summary> 和 <sentiment>,起草回复。输出:<reply>
Pass 4:给以上信息,决定是否升级。输出:<bool>
Pass 5:综合以上,写 Slack 消息。输出:<message>

顺序保住质量、显式依赖。

Step 4:必须批量就清晰标号 + 每任务成功

处理下面这封邮件。对每个编号任务输出带标签的分块。

任务 1:SUMMARY(≤30 字)
任务 2:SENTIMENT(positive | neutral | negative | frustrated)
任务 3:REPLY_DRAFT(50-100 字、第二人称、无 emoji)
任务 4:ESCALATION(yes/no + 一句话理由)
任务 5:SLACK_MSG(≤40 字、口语)

输出:
TASK 1:……
TASK 2:……
TASK 3:……
TASK 4:……
TASK 5:……

结构化每任务输出防止”没劲了”模式。

Step 5:复杂多任务用 planner / executor 拆

Planner prompt:给定输入 X,产 5 步计划,
                  每步带其输出 schema。

然后每步作为独立 prompt 执行。

把复杂工作分解成 scope 明确的子 prompt。

Step 6:审完成度

跑完后程序化检查每任务输出存在且良构。哪个漏就只重跑那个。

怎么确认已经修好

  • 每个任务都有完整输出,不只是任务 1。
  • 每任务输出过它的成功标准。
  • 任务 5 的深度和任务 1 的相当。
  • 同事看输出说不出哪个先跑。
  • 总质量高于批量 prompt,代价是多几个调用。

如果还是没修好

  1. 任务可能比你以为的更依赖——排序。
  2. 模型可能需要更少任务——砍掉最低价值的。
  3. 最重要任务用更强模型,其他用便宜的。
  4. 极高风险工作绝不批量——永远 1 prompt 1 任务。

预防建议

  • 默认规则:1 prompt = 1 任务。
  • 批量工作流用 planner + executor 模式 + 显式子 prompt。
  • 维护反模式清单:“你又叠任务了?” 发送前查。
  • 审生产管线:3+ 任务 prompt 都算风险。
  • 把”批量省 token”当 smell,除非质量经验证等价。
  • 养成习惯反问”中途失败哪些可恢复?“——批量 prompt 是半完全失败。

相关阅读

标签: #排查 #Prompt #Prompt 质量 #Prompt 工程