LMQL(Language Model Query Language)来自 ETH Zurich,是一种面向大语言模型的约束引导生成 DSL,核心思路是在生成时用声明式约束限定输出空间,使结果更可控、更接近结构化数据。
用途:构建类型安全、格式可校验的结构化 LLM 输出,如分类、抽取、JSON 生成、列表生成等。
主要能力:支持长度约束、选项约束(in 列表)、正则约束、数值范围、逻辑与或非;支持多变量组合;支持 temperature、max_tokens、beam 搜索等采样控制;可声明 JSON、列表等结构化输出模式;可与 Python 类型提示、Pydantic、异步调用结合。
使用方式:先安装。@lmql.query 装饰 Python 函数,在文档字符串内写 lmql 查询,用 [变量] 占位并在 where 中声明约束,函数返回映射结果。可设置 model、temperature、decoder、debug 等参数,并通过 lmql.model 配置 OpenAI、Anthropic 或本地模型端点。
适用场景:需要可控格式的输出、分类与意图识别、字段抽取、结构化生成、多步链式生成、批量并行分类。
限制:资料未提供完整的模型兼容性与版本要求细节;部分约束为示意写法,实际行为以官方运行环境为准。