AI 可预测性(AI Predictability)
AI 可预测性研究的是:如何让本质上”随机”的大模型,在实际应用里表现得稳定、可复现、可控——同样的输入尽量给出一致且符合预期的输出,行为不飘、不失控。
本质:大模型是概率模型,天生带随机性(同一个问题可能给出不同措辞甚至不同结论)。这在闲聊时无所谓,但在 Agent 自动执行任务、对接下游系统时,不可预测 = 不可靠 = 不敢用。可预测性就是用一系列工程手段,把这种随机性”关进笼子”。
一句话定位:模型的”创造力”和”可预测性”是一对矛盾——它靠随机性产生多样和创意,但工程上又需要它稳定听话。可预测性工程就是在这对矛盾里找平衡点。
类比:大模型像一个才华横溢但有点即兴的员工。让他自由发挥能出彩,但你要交付一个每次格式都一致的报表时,就得给他模板、给他检查清单、规定好流程——这些约束就是”可预测性工程”。
为什么 Agent 尤其需要它
一次性问答答错了,人可以重问。但 Agent 是多轮自动循环(见 agent.md、loop_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 — 采样参数,可预测性的直接旋钮