mlc-ai/xgrammar
Fast, Flexible and Portable Structured Generation
XGrammar – LLM 的结构化生成引擎
是什么 – XGrammar 是一个开源库,使大型语言模型(LLMs)能够严格遵循给定结构(JSON、正则表达式、自定义上下文无关文法等)生成输出。它通过 约束解码 实现,几乎不增加延迟的情况下保证 100% 的结构正确性。
为何重要 – 许多 AI 应用需要可靠、机器可读的输出(例如返回 JSON 的 API、必须遵循计划模板的代理,或生成代码片段的工具)。传统 LLM 解码可能产生格式错误的文本,需要后处理或重试。XGrammar 将正确性保证移入生成阶段,节省时间并减少错误。
主要特性
- 零开销 JSON 生成 – 与普通文本生成相比,基准测试显示“几乎零”额外开销。
- 通用 CFG 支持 – 可提供任意上下文无关文法,支持自定义格式、基于正则表达式的约束或领域特定语言。
- 跨平台与跨硬件 – 支持 Linux、macOS、Windows;可在 CPU、NVIDIA/AMD GPU、Apple Silicon、TPU 等上运行。
- 多语言 API – 主要支持 Python,同时提供 C++、JavaScript 和 Swift 的官方绑定。
- 广泛模型兼容性 – 已在 Qwen、Llama、DeepSeek、Phi、Gemma 等模型上测试通过。
- 与主流推理引擎即插即用 – 作为 vLLM、SGLang、TensorRT-LLM、MLC-LLM 等推理引擎的默认结构化生成后端。
典型应用场景
| 场景 | XGrammar 如何帮助 |
|---|---|
| 返回 JSON 的 API 服务 | 无需额外验证器即可保证响应为有效 JSON。 |
| 必须遵循计划或脚本的代理型 LLM | 将计划编码为 CFG;模型只能输出保持计划语法正确的 token。 |
| 从自由文本中提取/转换数据 | 定义所需字段的正则表达式或文法;提取过程变为确定性。 |
| 具有语言特定语法规则的代码生成 | 提供语言文法,模型绝不会生成括号不匹配或缺少关键字的情况。 |
快速入门(Python)
pip install xgrammar # 基础安装
pip install "xgrammar[metal]" # 可选:Apple Silicon 的 Metal 支持
import xgrammar as xgr
# 示例:生成具有固定模式的 JSON 对象
grammar = xgr.JSONGrammar({"name": "string", "age": "int"})
result = xgr.generate(model, grammar, prompt="给我一个用户档案")
print(result) # 始终为有效 JSON
完整文档、安装指南和代码示例请访问 https://xgrammar.mlc.ai/docs/。
生态系统集成
- vLLM、SGLang、TensorRT-LLM、MLC-LLM – XGrammar 是这些推理运行时的默认结构化生成后端。
- Rust 绑定 – 社区维护的
xgrammar-rs供 Rust 项目使用。 - 产业采用 – 已集成至 NVIDIA、Meta、Google、DeepSeek、Databricks、Modular、Perplexity 等公司产品中。
发布与治理
- 发布版本在 GitHub 上管理,并发布到 PyPI(例如
xgrammar==0.2.7)。 - 项目采用开放治理模式,包含
CODE_OF_CONDUCT、CONTRIBUTING指南和GOVERNANCE.md,列出了维护者和决策流程。
许可证
- Apache License 2.0 – 宽松、适合商业用途的开源许可证。
社区与引用
- 社区 – GitHub 上的讨论、DeepWiki 标志,以及不断增长的合作者列表。
- 引用 – 若用于研究,请引用 2024 年 ML Systems 论文和 2026 年 ACM 会议论文(BibTeX 见 README)。
XGrammar 是任何需要在不牺牲速度的前提下实现可靠结构化输出的 LLM 系统构建者的实用工具。
相关
- 项目
- 项目
- 项目
- 项目
- 项目