告别JSON解析:nobodywho决策模型直接输出概率

nobodywho推出决策模型,对候选答案直接打分返回概率,替代JSON解析与重试。
nobodywho项目推出决策模型(Decision Models),针对LLM应用链中“选择”这一步的痛点提出替代方案。传统做法让LLM生成JSON再由Pydantic解析,格式错乱时需重试,增加延迟与代码复杂度。决策模型不生成任何token,而是对预先列出的候选答案逐一打分,返回每个选项的概率和整体置信度,从根本上绕过解析与校验环节。该功能通过Python的Decision/DecisionAsync接口调用,底层使用本地运行的laya模型(449 MB,Apache-2.0)。适用场景包括路由选择、安全过滤和多步推理分支,开发者可依据置信度设置动态阈值触发备用路径。目前方案仅支持本地运行,且来源单一(Reddit贡献者帖子),实际效果仍需独立验证。
在构建LLM应用链时,我们常常需要让模型做一个“选择”:调用哪个检索器、使用哪个工具、内容是否安全。常规做法是让LLM输出JSON,再用Pydantic解析,并加上重试机制——一旦格式错乱,整个流程就可能卡住。nobodywho项目最近推出的决策模型(Decision Models)提供了一种新思路:不生成任何token,而是直接对候选答案打分,返回每个选项的概率和置信度。

传统方案的痛点:解析与重试
大多数链式调用中,“选择”这一步依赖LLM的文本输出,然后通过解析器提取结构化结果。开发者需要处理模型输出不符合schema的情况,通常会增加重试逻辑。这不仅增加了延迟,也让代码变得复杂。更麻烦的是,当选项较多时,模型可能生成模糊或矛盾的答案,解析成功率进一步下降。
nobodywho的贡献者指出,这种模式本质上是在用生成式模型做分类任务,而分类任务并不需要逐token生成文本。(来源:Reddit帖子,作者披露其贡献者身份)
什么是结构化输出与重试机制
让LLM输出JSON再解析,属于“结构化输出”的一种朴素实现:模型仍以逐token方式生成文本,开发者依赖提示词约束其格式,再用Pydantic等库校验字段类型与必填项。由于生成过程具有随机性,格式错误、字段缺失、类型不符时有发生,于是需要“解析失败→重新调用→再解析”的重试循环。重试会成倍增加token消耗与端到端延迟,且在温度较高或选项较多时收敛缓慢。更稳健的做法包括约束解码(constrained decoding)和函数调用(function calling),它们能在解码阶段限制可选token,但仍属于生成范式,输出的是文本而非可直接使用的概率分布。
决策模型如何工作
nobodywho新增的决策模型专门处理这类“选择”步骤。你只需列出所有可能的答案,模型会为每个选项计算一个分数,最终返回一个包含所有选项概率和整体置信度的结果对象。由于不生成token,完全避免了JSON解析和格式校验的环节。
该功能通过Python的Decision或DecisionAsync接口调用,模型在本地运行,无需网络请求。据帖子介绍,底层使用laya模型(449 MB,Apache-2.0许可),可在用户自己的机器上执行。

打分式分类与生成式分类的区别
传统做法把分类伪装成生成:模型先生成“选项A”这样的文本,系统再把它映射回标签。打分式分类则让模型对每个候选答案单独计算一个logit或相似度分数,经softmax归一化后得到概率分布。这样做的好处是:输出空间被限定在候选集合内,不存在“生成候选集之外的乱码”这一失败模式;概率本身携带不确定性信息,可直接用于阈值判断;推理时通常只需一次前向计算,无需自回归逐token解码,延迟更低且更稳定。代价是候选选项必须事先枚举,无法处理开放式答案。
laya模型与本地推理
laya是nobodywho决策模型所依托的小型模型,体积约449 MB,采用Apache-2.0许可,可完全在本地CPU或消费级硬件上运行。相较于动辄数十GB的生成式大模型,这类小模型牺牲了通用生成能力,换取低延迟、零网络依赖和数据不出本机的隐私优势。它本质上是一个句向量/打分模型,通过比较输入与各候选选项的表示来计算匹配程度。需要注意的是,模型体积小意味着其语义覆盖范围有限,在专业领域或多语言场景下的判别质量需要通过实测确认。
适用场景与社区讨论
帖子作者询问社区:“你会把这样的步骤放在链的哪个位置?”这引发了关于决策步骤在复杂工作流中角色的思考。常见的候选位置包括:
- 路由选择:根据用户输入决定使用哪个检索器或工具。
- 安全过滤:判断内容是否适合继续传递。
- 多步推理中的分支:在需要明确分支的链中替代LLM调用。
相比生成式方案,决策模型给出的概率分布让开发者能设置动态阈值,比如当置信度低于某个值时触发人工审核或备用路径。
局限与待验证之处
目前该方案仅支持本地运行,模型体积(449 MB)对于资源受限的环境可能仍有压力。此外,laya模型的具体能力边界、在多语言或复杂语义下的表现,帖子中未提供详细评测。由于是单一来源(Reddit帖子且作者为项目贡献者),实际效果需要更多独立测试验证。
不过,这种“不生成、只打分”的思路为链式调用中的决策步骤提供了一种轻量替代方案,尤其适合需要明确概率输出的场景。项目已在GitHub开源,文档提供了Python接口示例。
相关推荐

Cognition SWE-2 实战:一个提示词搞定产品发布全流程
解析 YouTube 创作者用 Cognition SWE-2 发布产品的完整提示词:落地页、七封邮件序列与未购买用户跟进工具三段式结构,以及"测试并汇报"这一约束如何改变 AI 的交付质量。
AWS AgentCore Gateway:用MCP打通AI Agent与企…
AWS AgentCore Gateway:用MCP打通AI Agent与企业后端
AWS AgentCore Gateway如何作为主MCP服务器聚合REST API、Lambda与已有MCP服务?解析其AST实时映射、零冷启动、语义搜索治工具过载、会话隔离与密钥注入安全设计,以及企业AI Agent解耦后端的架构思路。

一个链接给Figma AI装上新技能:MCP连接器实战
通过粘贴一个MCP服务器链接,Figma中的AI Agent就能获得新工具能力。本文拆解配置流程、超过20个一键接入应用、读写权限与执行策略设置,以及公开HTTPS链接这一关键限制。