项目介绍:LMQL
LMQL 是一种专为大型语言模型 (LLMs) 打造的编程语言,基于 Python 的扩展版本。它提供了一种全新的方法,将传统编程与语言模型的调用能力结合在一起。与传统模板语言不同,LMQL 能够在编程代码层面上原生整合语言模型的交互。
LMQL 的探索
LMQL 程序的外观与标准的 Python 程序相似,但其顶层字符串会被解释为查询字符串。这些字符串会传递给语言模型,模板变量(如 [GREETINGS]
)则由模型自动补全。
例如,LMQL 代码如下所示:
"Greet LMQL:[GREETINGS]\n" where stops_at(GREETINGS, ".") and not "\n" in GREETINGS
if "Hi there" in GREETINGS:
"Can you reformulate your greeting in the speech of \
victorian-era English: [VIC_GREETINGS]\n" where stops_at(VIC_GREETINGS, ".")
"Analyse what part of this response makes it typically victorian:\n"
for i in range(4):
"-[THOUGHT]\n" where stops_at(THOUGHT, ".")
"To summarize:[SUMMARY]"
这种代码结构允许用户在程序的任意执行点结合使用标准自然语言提示,以充分利用模型的推理能力,同时保持传统的算法逻辑。
功能概览
LMQL 通过多项高级功能,使得与 OpenAI 和 Hugging Face Transformers 等语言模型的协作更高效、更强大,功能包括:
- Python 语法:可以用熟悉的 Python 语法编写查询,全面集成在 Python 环境中。
- 丰富的控制流:LMQL 全面支持 Python 的功能,从而实现强大的控制流和逻辑。
- 高级解码:支持高级解码技术,如
beam search
和best_k
。 - 强大的约束机制:通过对模型输出应用约束,用户可以更好地控制模型的行为。
- 优化运行时:利用投机性执行实现更快的推论。
- 同步和异步 API:允许并行执行数百个查询。
- 多模型支持:轻松与多个 API 无缝集成。
- 广泛的应用场景:可用于实现复杂的应用程序,比如安全的 JSON 解码和算法提示。
- 库集成:可以与现有技术栈集成,如 LangChain 或 LlamaIndex。
- 灵活的工具:提供交互式开发体验,包括 IDE 和 VS Code 扩展。
入门指南
要安装最新版本的 LMQL,可以使用以下命令:
pip install lmql
如果需要在本地 GPU 上运行,确保在具有 GPU 支持的 PyTorch 环境中安装 LMQL。
安装完毕后,可以通过以下命令启动 LMQL Playground IDE:
lmql playground
此 IDE 包含了许多示例 LMQL 程序的展示。如果没有自动启动,请访问 http://localhost:3000
。
配置 OpenAI API 凭证
如需使用 OpenAI 模型,必须配置 API 凭证。可以通过定义 OPENAI_API_KEY
环境变量,或者在工作目录中新建 api.env
文件,输入以下内容:
openai-org: <org identifier>
openai-secret: <api secret>
对于全系统配置,也可以在 $HOME/.lmql/api.env
或 LMQL 项目的根目录(如 src/
)下创建 api.env
文件。
最新开发版本安装
如需安装最新版本的 LMQL,可以执行以下命令:
pip install git+https://github.com/eth-sri/lmql
这样可以直接从主分支安装 lmql
包。
结语
LMQL 是一个以社区为核心的项目,欢迎贡献者参与。有关更多的信息,请参考贡献指南,并通过 Discord 与团队联系。期待您的加入!