大语言模型(LLMs)的飞速进步改变了机器学习的版图,实现了前所未有的生成能力。然而,将 LLMs 与传统软件系统集成引入了根本性的挑战,特别是在效率、正确性,以及对结构化编程抽象的需求方面——这些抽象需要调和模型的概率性(Probabilistic Nature)与传统软件工程系统及实践的确定性(Deterministic Nature)。基于这一新兴范式,本论文的目标是通过引入创新的程序化抽象和算法,推动我们称之为**语言模型编程(Language Model Programming, LMP)**领域的发展,从而实现更高效、可靠且受控的 LLM 编程。 为此,本论文提出了三项核心贡献: 1. 引入了语言模型查询语言(LMQL):这是一种针对 LMP 的新型编程语言及运行时,能够实现对 LLM 程序化交互的高效提示(Prompting)与约束。
提出了提示词草绘(Prompt Sketching):这是一种全新的以模板为中心的解码方法,支持受控的多部分 LLM 交互,同时确保生成过程更加准确且具有引导性。
引入了 Domino 算法:这是一种针对基于语法的 LLM 文本生成的高效投机算法(Speculative Algorithm),在确保可靠性与控制力的同时(如在 LMQL 和更广泛的 LMP 中所示),解决了高吞吐量推理的需求。
这些工具和算法显著提升了使用 LLM 编程的效率、可靠性和可控性,为构建以 LLM 为核心的更先进、个性化、自主且高效的软件系统铺平了道路。为实现这一目标,本论文不仅依托于先前的编程语言研究和 LLMs 的最新进展,还结合了编译构造、解析器、声明式与命令式编程,以及自然语言处理中的解码算法。 综合而言,这些工具从机器学习和编程语言的双重维度显著提升了 LLMs 的可靠性,从而为“语言模型编程”这一新兴领域做出了贡献。