LMQL:用于构建大语言模型交互程序的编程语言
LMQL 将提示词、变量生成、类型、模板、约束和 Python 控制流结合起来,用于编写更具结构性的语言模型交互程序。它支持嵌套查询、多部分提示、输出格式约束、工具增强与聊天机器人等应用,并可在多个模型后端之间切换。

原站网页截图,页面可能随时间更新。
- 分类:AI 编程与 Agent
- 名称:LMQL is a programming language for LLM interaction. LMQL
- 来源:lmql.ai
LMQL 面向需要把提示词组织成程序的开发者。它允许将自然语言提示与变量、循环、条件约束和函数结合,用较明确的规则控制模型生成过程,适合处理结构化输出、重复任务和多步骤交互。
把提示词写成可执行程序
LMQL 的核心思路是把提示词放进类似 Python 函数的查询程序中。程序可以通过字符串插值生成提示内容,再把模型返回的变量直接用于后续逻辑。例如,开发者可以定义问题和答案变量,并在查询结束后读取生成结果。这样,提示词不再只是一次性文本,而是能够参与函数调用、循环和结果处理的程序组成部分。
用约束控制模型输出
LMQL 提供类型和约束机制,用于限制模型变量的生成范围。示例中可以要求答案长度小于指定值、在特定字符处停止,或让变量符合整数等预期格式。对于清单生成,也可以把变量限制在给定选项中。此类约束适合需要固定格式、有限候选值或便于程序继续处理的任务,但具体生成效果仍取决于所使用的语言模型与运行配置。
组织多步骤和可复用提示
嵌套查询支持把局部指令拆成可复用的提示组件,并在更大的查询中调用。多部分提示和上下文控制则适合将若干独立问题按步骤处理,再汇总结果。示例先分别询问多个人物的出生日期,统一日期格式后,再提出比较问题。这种方式适合信息抽取、格式统一、分阶段判断和需要组合多个模型响应的流程。
连接不同模型后端
LMQL 旨在让同一套语言模型交互代码适配多个后端,页面列出了 llama.cpp、OpenAI 和 Transformers 等选项,并支持通过一行代码切换后端。实际使用时,可以根据已有模型环境、部署方式和任务需求选择后端;若希望保持程序结构不变,后端可移植性会减少重写提示逻辑的工作量。
适合探索的任务方向
LMQL 的公开主题覆盖约束式语言模型、类型与正则表达式、多部分提示、分布测量、Python 支持、元提示、工具增强和聊天机器人。它更适合有编程基础、希望把提示词纳入应用逻辑的人使用。对于简单的一次性问答,直接使用普通对话工具可能更直接;如果任务包含重复调用、结构化结果或多步控制,则可以考虑用 LMQL 组织流程。