返回首页
💻

LMQL

代码编程与辅助

面向大语言模型交互的查询编程语言,用类型、模板与约束描述输出,配优化运行时,让提示词更稳健、更可复用,跨本地与云端后端。

查询语言LLM开发框架
月访问量5,900
月访问量为第三方平台估算,仅供参考

详细介绍

LMQL(Language Model Query Language)是一门面向大语言模型交互的编程语言,官网把它定义为「Robust and modular LLM prompting using types, templates, constraints and an optimizing runtime」——用类型、模板、约束与一个带优化能力的运行时来写提示词。它把提示词从「拼字符串」升级为「写程序」:先描述清楚期望的输出,再交给运行时去执行,从而让模型输出更可控、更稳健、更可复用。代码风格类似 Python 装饰器——在函数上用 @lmql.query 声明一段带约束的查询,约束可以是长度、枚举或任意 Python 表达式,随后直接调用;提示与逻辑天然组织在一起,便于复用与版本管理。优化运行时会在生成过程中按约束裁剪搜索空间,而不是生成后再校验,这是它与普通模板提示在机制上的关键差异,也是输出稳定的来源。

核心能力

  • 约束式生成:对生成结果施加类型与格式约束(如长度、枚举、正则等),从源头减少解析失败与乱答,不必依赖正则与重试兜底。
  • 模板与模块化提示:提示词可以拆成带类型的模块,大型提示逻辑可维护、可复用,团队协作时不再靠复制粘贴与版本混乱。
  • 嵌套查询(Nested Queries):官方称之为「把过程式编程带进提示词编写」,允许一个查询内嵌套调用另一个查询,组合出更复杂的多步行为。
  • 跨后端运行:同时支持 llama.cpp、OpenAI、Transformers 等后端,本地模型与云端 API 用同一套语言描述,迁移成本低。
  • 执行轨迹(Execution Trace):记录提示词的实际执行过程,便于调试「模型为什么这样输出」,把提示词调优从玄学变成可观察的过程。

适合谁

要在生产系统里稳定调用大模型的工程师,尤其是需要严格控制输出结构、又不想靠正则兜底的团队;做提示词工程研究、教学或实验的个人也适合。项目开源,Docs、Blog、Research 与 Playground 齐全,官方还通过开发者调查驱动下一版本的方向,社区参与度高。

注意事项

  • 引入了新的语法与概念,学习成本高于纯字符串提示,团队引入需要投入时间。
  • 不同后端对约束的支持程度不同,跨后端迁移时个别特性可能失效,需要实测验证。
  • 它定位是编程语言与运行时,不是托管服务,模型与算力仍要自己准备。
  • 项目处于活跃演进期,接口可能变化,生产使用前请锁定版本,升级前先跑一遍现有查询做回归,避免约束行为变化。

使用建议

先用官方 Playground 试写一条带约束的查询,感受它与纯字符串提示的差异;从「约束输出格式」的小场景切入,跑通后再逐步引入模板与嵌套查询。遇到边界行为先查官方文档再写代码,能省掉不少试错;项目还在征集社区反馈推进下一大版本,关注官方博客与调查,能提前了解接口演进方向。