大型语言模型(LLMs)的快速发展正在重塑机器学习领域,实现了前所未有的生成能力。然而,将LLMs与传统软件系统集成时也带来了根本性的挑战,特别是在效率、正确性,以及需要构建结构化编程抽象以协调其概率性特征与传统确定性软件工程系统和实践之间的矛盾。本文将这一趋势视为一种新兴范式,旨在推动我们称之为语言模型编程(Language Model Programming, LMP)的研究进展,通过引入新的程序抽象和算法,实现更高效、更可靠、更可控的LLM编程方式。 为此,本文提出了三个核心贡献:首先,引入了一种新的编程语言和运行时系统——语言模型查询语言(LMQL),用于高效地构造提示词并约束与LLM的程序交互;其次,提出了提示草图(Prompt Sketching),这是一种以模板为中心的解码方法,支持结构化、多阶段的LLM交互,同时确保更准确、更有引导性的生成过程;最后,介绍了一种高效的、基于语法的推测性文本生成算法——Domino,该算法旨在满足高吞吐量推理需求,同时延续了LMQL和更广义LMP范式下对生成的可靠性和控制性要求。 这些工具和算法显著提升了与LLM进行编程的效率、可靠性与可控性,为构建更先进、更个性化、更自主、且更高效的软件系统奠定了基础——以LLM为核心。为实现这一目标,本文不仅借鉴了传统编程语言领域的研究成果,也融合了LLM的最新进展,以及编译器构建、语法解析器、声明式与命令式编程、自然语言处理中的解码算法等相关技术。
综上所述,这些工具从机器学习与编程语言两个维度显著提升了LLM的可靠性,为语言模型编程这一新兴研究领域做出了重要贡献。