EN
返回档案库

档案库 · 产品创意 · 技术决策 · 2023–2026

Outlines 通过掩码机制保证 LLM 输出合法 JSON——让无效输出根本无法生成

2023 Show HN:将 Pydantic 模型或正则表达式作为输出类型,通过有限状态机掩码 logits,从构造上保证结构合法

Outlines

创意是什么约束生成过程本身:把请求的输出类型编译成有限状态机,凡是不符合该类型的 token 一律掩掉,这样模型就不可能输出非法 JSON伤筋动骨

当时的题目

Building LLM applications meant turning free-form model text into typed data, and every mainstream approach fixed the problem after the fact: prompt for JSON, parse the result, validate it, and call the model again when the output broke. That loop was slow, fragile and never guaranteed a valid answer.

它是怎么成立的

在 2023 年年中,语言模型走向生产应用的最大障碍不是原始能力,而是数据形状:LLM 的输出是散文,而软件需要类型化记录、枚举和布尔值。标准解法是「先生成后修复」——提示模型输出 JSON,解析、校验,不行就再来一次——发布帖中讨论的微软 TypeChat 就是这种思路。Outlines 于 2023 年 8 月 14 日出现在 Hacker News 上,提出相反做法:让非法输出根本不可能出现。

这个库的接口仿照 Python 类型系统。调用方把需要的形状传给模型——Literal["Positive", "Negative"]、int、Pydantic 模型或 JSON schema——Outlines 随即把这个类型编译成有限状态机。每步解码时,凡是会把回复带出合法结构的 token 都会被掩蔽,模型只能在类型允许的候选中采样。作者在初始化时一次性建立索引,之后每步的掩码通过字典查询生成,既不像文法采样那样要扫描整个词表,也无需第二次调用来修补垃圾输出。

帖子拿到 854 分和 303 条评论,工程师们拿它与微软 TypeChat 以及 guidance 库做对比。此后项目持续演进:截至 2026 年 9 月捕获时,仓库拥有 15.7k star、868 fork、1,325 次提交,功能列表也扩展到多项选择、函数调用、JSON/Pydantic schema、正则与文法,并支持 transformers、llama.cpp、vLLM、Ollama 及托管 API。

妙在哪

  • 掩蔽 logits 是从构造上保障结构合法,所以每一次采样都可以保证,而不只是碰运气等着解析来救。
  • 镜像 Python 的类型系统让接口一目了然:传入 Literal、int 或 Pydantic 模型,开发者已经写好的 schema 就成了输出契约。
  • token 索引只建一次,每步掩码是查字典,这让受约束生成的速度几乎和不加约束一样快,回应了文法类方法性能差的质疑。
  • 去掉了重试循环,失败模式也变了:应用不再需要识别坏 JSON 再祈祷第二次能更好。

做出来什么

The August 14, 2023 Show HN drew 854 points and 303 comments, where readers compared it with Microsoft's TypeChat and with guidance libraries that looped over the full vocabulary each step. By the September 2026 capture the repository showed 15.7k stars, 868 forks and 1,325 commits, with features spanning JSON/Pydantic, regex, grammars, function calls and prompt templates across local and hosted models.

他们自己的页面Outlines repository on GitHub

可以借走的

当模型的自由文本不可信时,把约束移入机器内部:让非法状态不可表示,而不是事后检查。

后来

Outlines 成为 .txt(dottxt.co)的开源项目,该公司持续发布该库,并围绕同一技术打造了商业层。2026 年 9 月捕获显示 15.7k star、868 fork、1,325 次提交;README 宣传了早期访问 API、schema 审计、企业库以及关于结构化生成的研究文章,还列出了 NVIDIA、Cohere、HuggingFace 和 vLLM 等用户。仓库引用的 Rémi Louf 与 Brandon T. Willard 的原始论文将该方法正式化为高效引导生成。

资料来源

发现哪里写错了?告诉我们。

轮到你了

你刚读完一个点子。把你手上的题目说出来,看看谁接过同样的题。

免费账号 · 3 次免费提问 · 不用绑卡

相关案例