AI 可预测性(AI Predictability)

AI 可预测性研究的是:如何让本质上”随机”的大模型,在实际应用里表现得稳定、可复现、可控——同样的输入尽量给出一致且符合预期的输出,行为不飘、不失控。

本质:大模型是概率模型,天生带随机性(同一个问题可能给出不同措辞甚至不同结论)。这在闲聊时无所谓,但在 Agent 自动执行任务、对接下游系统时,不可预测 = 不可靠 = 不敢用。可预测性就是用一系列工程手段,把这种随机性”关进笼子”。

一句话定位:模型的”创造力”和”可预测性”是一对矛盾——它靠随机性产生多样和创意,但工程上又需要它稳定听话。可预测性工程就是在这对矛盾里找平衡点。

类比:大模型像一个才华横溢但有点即兴的员工。让他自由发挥能出彩,但你要交付一个每次格式都一致的报表时,就得给他模板、给他检查清单、规定好流程——这些约束就是”可预测性工程”。

为什么 Agent 尤其需要它

一次性问答答错了,人可以重问。但 Agent 是多轮自动循环(见 agent.mdloop_engineering.md),而且输出常常要喂给下游程序:

  • 输出格式飘一下(该给 JSON 却多说了一句话)→ 下游解析直接崩
  • 每一轮的小随机性会逐轮累积放大,循环越长越容易跑偏
  • 结果不可复现 → 出了 bug 难复盘、难测试、难信任

关键认知:Agent 的可靠性 = 单步可预测性的连乘。 单步 95% 靠谱,跑 10 步整体就只剩约 60%。所以要么提高单步确定性,要么用结构化和校验兜住每一步。

随机性从哪来

来源说明能否控制
采样温度 (Temperature)控制输出随机程度,越高越发散能,设低甚至设 0
Top-p / Top-k采样时从多大候选集里选词
随机种子 (Seed)采样的随机源部分 API 支持固定
模型本身更新服务商换模型版本,行为变化靠锁定版本号
上下文变化输入/历史稍有不同,输出就不同靠 Context Engineering(见 context_engineering.md)

提升可预测性的手段

手段做什么效果
降低温度temperature 调低/设 0输出更确定、更可复现
结构化输出强制返回 JSON / 指定 schema(function calling)下游能稳定解析,见 tool_calling.md
固定版本 + 种子锁定模型版本号、固定 seed减少环境漂移
明确约束的提示规定格式、给示例(few-shot)、划边界缩小模型发挥空间
人为触发/把关关键步骤让人确认(见 slash_commands.md)用户控制而非模型自主
workflow 化把固定流程写死成工作流而非交给 Agent 自由决策确定性最高(见 agent.md)
校验 + 重试对输出做校验,不合格自动重来兜住偶发的跑偏
护栏 (Guardrails)对输入输出做规则/模型级过滤拦掉越界和有害内容

一条主线:可预测性 = 减少模型的”自由度”。 从”降温度”到”给 schema”到”写死 workflow”,本质都是一步步把决策权从模型手里收回来。收得越多越稳,但也越死板、越不灵活——这就是下一节的取舍。

核心取舍:确定性 vs 灵活性(= Workflow vs Agent)

这直接呼应 agent.md 里 workflow 和 agent 的分野:

确定性高 ◀───────────────────────────────▶ 灵活性高
写死的 Workflow      结构化 Agent       自由发挥的 Agent
(每步都定死)      (给约束+校验)       (放手让它决策)
可预测、可测试        平衡              强大但难控
  • 流程固定、容错低(如转账、数据处理)→ 往左靠,用 workflow + 低温 + 结构化
  • 任务开放、需要随机应变(如探索性研究)→ 往右靠,给它更多自主权
  • 大多数实用 Agent 在中间:核心骨架用 workflow 保证稳,局部决策交给模型保持灵活。

和”可解释性 / 可观测性”的区别(易混)

概念回答的问题
可预测性 (Predictability)它下次会不会给出一致、符合预期的输出?
可解释性 (Interpretability)它为什么给出这个输出?内部怎么想的?
可观测性 (Observability)它这次实际做了什么?每一步能不能看到、追溯?

三者配合:可观测性(记录每步)是基础,让你能发现不可预测的地方;可预测性靠工程手段把行为收稳;可解释性则试图理解模型内部机制。工程上最常用、最立竿见影的是可观测 + 可预测

常见坑 / 误区

  • ❌ “temperature 设 0 就完全确定了” → 更确定但不保证 100% 可复现;还有硬件浮点、模型更新等因素
  • ❌ “让 Agent 越自主越智能越好” → 自主性↑ 可预测性↓,关键场景反而要收权(见 agent_security.md)
  • ❌ “prompt 写清楚输出就一定按格式来” → 不保证,要用结构化输出/schema + 校验兜底
  • ❌ “单步很准,整体就很准” → 会连乘衰减,长循环尤其要每步校验
  • ❌ “可预测性 = 可解释性” → 两码事:一个是行为稳不稳,一个是能不能理解它为什么这么做
  • ❌ “锁不锁模型版本无所谓” → 服务商静默更新模型会导致行为突变,生产环境应锁版本

延伸阅读 / 关联概念

  • Agent 运行机制 — workflow vs agent 的确定性取舍;见 agent.md
  • Loop Engineering — 循环越长随机性越放大,何时停何时校验;见 loop_engineering.md
  • 上下文工程 — 干净稳定的上下文是可复现的前提;见 context_engineering.md
  • Tool Calling — 结构化输出(function calling)是可预测性的利器;见 tool_calling.md
  • 斜杠命令 — 人为触发把关,提升可控性;见 slash_commands.md
  • Agent 安全 — 收敛自主性也是安全手段;见 agent_security.md
  • 温度 / Top-p / Seed — 采样参数,可预测性的直接旋钮