[控场AI]
· 7 分钟阅读· 3,919 字

别再解析LLM散文:决策层终结正则解析时代

别再解析LLM散文:决策层终结正则解析时代

OpenAI、Microsoft与主流推理栈同周收敛到类型化决策接口,行业从生成决策转向评分决策。

文章指出,Agent控制流中长期依赖正则或JSON解析把模型英文散文转回布尔值的“胶带方案”,既浪费输出token又脆弱。本周OpenAI的Decisions API、Microsoft的Decision-1,以及SGLang与vLLM对/v1/decisions端点的支持,在同一周形成“评分而非生成”的接口共识。作者提出决策层模式:类型化决策调用(predicate、choice、score)、文档化的阈值策略、以及携带输入哈希、分数与时间戳的审计日志。厂商宣称的性能与价格均属自测,$0.042/百万输入token已成为品类价格锚点。迁移应从高频低风险分类器入手,先影子运行再切换。

你部署过的每一个Agent,控制流里都藏着一个尴尬的秘密:某个角落,一段正则表达式正在把模型输出的英文散文解析回布尔值。本周,行业终于给出了能干掉这个hack的原语。

OpenAI的Decisions API进入公开测试——POST /v1/decisions,只返回类型化答案:一个概率、一个选择或一个分数。几天后,Microsoft在Foundry中发布Decision-1:一个经后训练的Qwen3.5-9B,专为单次决策评分设计,每百万输入token仅$0.042,输出免费。同一周,SGLang加入了nightly版的/v1/decisions端点,vLLM合并了/v1/systemone。接口共识已经形成:别再生成决策,去评分它。

rss source: Stop Parsing LLM Essays: Build a Verdict Layer

我们一直在用的胶带方案

诚实地看看你现在的技术栈。它长这样:

response = llm.chat("Classify this lead as HOT, WARM, or JUNK. Reply with JSON only.")
label = json.loads(response.text)["label"]   # pray

你为推理付了输出token的钱,然后把它丢掉。为了一个是/否的答案,你等了一整段生成。每隔几百次调用,模型就会“发挥创意”,你的解析器在凌晨两点吞下一个异常。

JSON模式和结构化输出减少了崩溃,但架构仍然是错的:你之所以把文本生成器当分类器用,是因为当时还没有可服务的分类器。现在有了。

JSON模式与结构化输出指模型供应商提供的约束解码能力(如OpenAI的JSON Mode、JSON Schema、以及基于语法约束的guided decoding)。它们在采样阶段限制token分布,使输出必然符合预设格式,从而把解析失败率从“每隔几百次崩一次”降到接近零。但它的作用域仅限格式合法,不保证语义正确:模型仍可能在一个合法JSON里填入你从未定义的标签,或给出与输入无关的答案。更关键的是,约束解码只解决了“解析”,不解决“概率”。通过JSON拿到的仍是离散标签,没有校准过的置信度,无法支撑阈值策略。这正是文中观点:结构化输出只是让胶带更结实,而决策层是用类型化、带概率的原语替换整个胶带方案。

决策层模式

替代方案由三部分组成。

1. 类型化决策调用

固定选项输入,校准概率输出。OpenAI的三种形态覆盖了几乎所有控制流:predicate(条件成立的概率——你的if语句)、choice(一个选项加概率——你的switch)、score(有序层级上的位置——你的优先队列)。

2. 阈值策略,而非凭感觉

这是大多数教程跳过的部分。没有策略环绕,数字毫无用处:

score = decide("Is this support ticket urgent?", ticket.text)
# → {"urgent": 0.91, "normal": 0.09}
if score["urgent"] >= 0.85:
    page_oncall(ticket)
elif score["urgent"] >= 0.60:
    human_review_queue(ticket, score)   # score travels with the ticket
else:
    auto_resolve(ticket)

把分数与工单一起传递,人类审核时看到的不再是一段论述,而是一个可追溯的数字。

3. 审计日志

每一个决策都落入日志,携带输入哈希、分数、阈值结果和时间戳。当决策出问题时,你不用和一段散文争论——直接看数字、阈值和输入。这也是该模式对合规友好的原因:OpenAI在测试版中提供了零数据保留支持和HIPAA合规资格,因为一个被评分、被记录的决策,其可审计性是散文永远无法比拟的。

厂商声称了什么(批判性阅读)

OpenAI Decisions API:公开测试版,仅运行于gpt-6-luna,每百万输入token $0.10,输出和缓存免费。官方说法是“比Responses API快约10倍”——但这是对标OpenAI自家API的测量,没有披露基准测试,也没有发布与竞品的头对头准确率对比。图像必须以inline base64传入;托管URL和文件ID都被拒绝。

Microsoft Decision-1:由Office of the CTO的VP Achint Srivastava宣布,在Foundry中提供,即将登陆OpenRouter。后训练的Qwen3.5-9B,计划后续基于Microsoft AI和OpenAI模型重做基座。每百万输入token $0.042,输出免费。声称:在36个基准上取得最高准确率(约15万道保留问题),比Quyet-1.0-Large快4.5倍,P50下比GPT-6 Sol快35倍,在八种输入扰动下决策翻转率仅1.3%,在11个基准上完成5,250次安全请求。全部由厂商自测。信任,但要用你自己的评估集去验证。

有一个价格对比很有意思:TypeSafe的Jev——一篇独立评测称之为“OpenAI直接回应的产品”——标出了同样的$0.042/百万输入token。这个品类现在已经有了价格锚点,而且很便宜。

扰动鲁棒性是决策模型的一项核心指标。所谓输入扰动,包括同义改写、标点与大小写变化、插入无关句子、轻微拼写错误,甚至把关键条件前后调换位置。一个只靠表面线索做判断的分类器,在扰动下极易翻转结论,这在生产Agent中意味着同样的工单可能因为多了一个逗号就走上完全不同路径。Microsoft声称在八种扰动下决策翻转率仅1.3%,这个数字之所以重要,是因为它衡量的是稳定性而非绝对准确率——一个准确率很高但翻转率也高的模型,会让阈值策略失去意义。验证时建议自行构造扰动集,重点看翻转样本,而不是只看总体准确率。

迁移清单

  1. Grep胶带代码。 找出每一个以“reply with JSON only”或“respond with just the label”结尾的提示词。这就是你的迁移列表。

  2. 先转换一个分类器。 选最高频、最低风险的那个(分诊、打标签、路由)。让类型化端点与你的解析器并行影子运行一周,比较分歧率。

  3. 把阈值策略写下来。 无论是否校准,概率都需要有文档化的截断点和升级带。“低于0.85阻断,0.6–0.85人工审核”是策略;凭感觉的截断值是bug。

  4. 记录每一个判决。 输入哈希、分数、结果、时间戳。这是整个模式中最便宜的可靠性升级。

  5. 用它来给Agent打分。 Microsoft明确瞄准了基于量规的AI响应和Agent动作评分。你的Agent输出在到达用户之前,先由更便宜的模型评分——这就是容器化模式的产品化。

**影子运行(shadow mode)**是新旧系统并行、只记录不生效的迁移手法:类型化端点照常被调用,但结果不被用于真实动作,而是与现有解析器结果一起写入日志,对比分歧率、延迟和成本。它的价值在于把“模型准确性”问题转化成一个可量化的差值指标:当两者一致时,切换无风险;当它们分歧时,可以直接检查具体样本,判断是新评分更对还是旧解析更对。常见的切换门槛是分歧率低于某一阈值且分歧样本中人工复核判定新系统不劣于旧系统。影子运行通常安排一到两周,足够覆盖工作日与周末的流量分布,以及低频但高风险的边角输入。

为什么这超越API本身

作者Shivam Kumar在VisionQuantech的生产环境中运行着一个决策引擎Jev,每晚用于线索评分、回复分类和构建优先级排序。他的Agent栈里一直有一个决策阶段——THINK、ACT,然后DECIDE:一个小型评分模型对每个关键步骤做出判决,记录并阈值化。它一直是安静的那个阶段,也一直是让系统保持诚实的那个阶段。

本月,行业把它正式化为一个可服务的原语,两家厂商和两个开源栈在同一周收敛到同一个接口。当这种情况发生时,接口本身就是故事,而不是排行榜。

搭建决策层。凌晨两点的你会感谢自己。

背景补充

**校准(calibration)**是指模型输出的概率与真实频率一致的性质:当模型说“0.9”时,这类样本大约有90%确实为正。LLM通过提示词或生成式分类给出的置信度往往过度自信,未校准的概率直接拿来设阈值会产生大量误判。常见修正是对验证集做温度缩放(temperature scaling)或等渗回归(isotonic regression),把原始分数映射到经验频率,再写入文档化的截断点。文中强调“无论是否校准,概率都需要有文档化的截断点和升级带”,其中的升级带(escalation band)指介于自动处理与直接阻断之间的灰区,例如0.6–0.85触发人工审核。灰区宽度本质上是精度与成本之间的权衡:带越宽,漏判越少但仍需人力;带越窄,自动化率高但风险上升。

分享:

相关推荐