LMQL:让LLM聊天机器人更好地工作?
2023年07月28日 由 Samoyed 发表
978173
0
LMQL采用混合方法进行编程,并将自然语言提示与编程语言相结合,以便从语言模型获得准确的响应。
大型语言模型并不总能正确地回答您的问题。它们很难控制,因为用户不能完全理解它们内部发生了什么。最近,有很多人抱怨LLM聊天机器人会产生幻觉,给出不满意的回答,解决这个问题的一个好办法是改进提示技术。语言模型查询语言(LMQL)通过将语言提示与简单的脚本结合起来解决了这个问题。
ETH Zurich的研究人员写了一篇题为“提示即编程:大型语言模型的查询语言”的论文,这篇论文是关于智能提示这一新兴学科的,它是自然语言和编程语言提示的直观结合。用户可以指定语言模型输出的约束条件,并通过提供高级语义使其同时执行多个任务。
它是如何工作的?
LMQL是一种声明性编程语言,这意味着该语言只说明任务的最终结果是什么,并抽象出软件执行操作所需的逻辑控制流。它受到SQL的启发,但在框架中集成了 Python。用户可以提供包含文本和代码的模型提示。
论文称,语言语法有五个基本部分。
1、解码器,顾名思义,解码生成文本的算法。它是一串代码,将输出转化为有意义的结果,提高单词的质量和多样性。
2、以Python语法编写的查询块(Query block)作为与语言模型进行核心交互的机制。查询块中的每个顶级字符串都是对语言模型的直接查询。
3、Model/from子句指定被查询的模型。它定义了用于文本生成的基础语言模型。
4、而Where子句允许用户定义影响生成输出的约束条件。它定义了语言模型必须符合的期望品质。
5、最后是分布指令,这是一个可选指令,用于指导生成值的分布。它定义了生成的结果应该如何分布和呈现,使用户能够控制结果的格式和结构。
控制交互
对于简单的查询,用户可以使用自然语言来引导语言模型,但是当任务复杂性增加,用户需要其对特定问题的响应时,最好完全控制查询。如果你精通技术,即使是简单的任务,比如让模型给你讲个笑话,你也可以完全控制你想要的结果。
LMQL提供了专用的Playground IDE,以便更轻松地进行查询开发。用户可以在文本生成的任何阶段检查解释器的状态、验证结果和模型的响应。其中包括分析和探索在束搜索期间产生的各种假设的能力,为优化语言模型的行为提供有用的见解。
论文认为,效率和性能是一个很大的挑战。尽管更加高效,现代语言模型中的推理步骤依赖于昂贵的高端GPU来实现令人满意的性能。
使用LMQL,在第一次尝试中就可以生成与期望输出紧密一致的文本,从而消除了后续迭代的需要。评估表明LMQL提高了各种任务的准确性,同时显著降低了付费使用API的计算成本。这意味着可以节省13%到85%的成本。
LMQL的一位作者在HackerNews上表示:“成本绝对是我们考虑的一个维度(毕竟研究的资金有限),尤其是在使用OpenAI API时。在非常有限的OpenAI API中难以实现逐token级别的控制。作为解决方案,我们实现了推测执行,可以在生成的输出上对约束进行惰性验证,同时如果需要的话,可以及早失败。这意味着,我们不会为每个令牌重新查询API(非常昂贵),而是可以连续令牌流的段落进行查询,并在需要时进行回溯。”语言模型程序设计
这并不是提示工程的第一种混合方法。Jargon、SudoLang 和 prlang 都做过类似的事情。"LMQL 的另一位作者说:"LLMs+PLs 目前是一个非常有趣的领域,有很多方向可以探索。它们为用户提供了以简单扼要的方式表达普通和高级提示技术的能力。
但是,如果您可以在LLM中使用任何编程语言,为什么要学习像LMQL这样的特定查询语言呢?
LMQL提供了一种简明的方法来定义多部分提示并在LLM上强制约束。例如,您可以确保模型始终遵循特定的输出格式,从而自动处理输出的解析。还抽象了一些东西,比如API和本地模型、标记化、优化,并使工具集成(例如在LLM推理期间的工具函数调用)变得更加容易。这也与语言模型无关,从而提高了可移植性,并可跨 LLM 使用。
语言模型编程(LMP)可以更容易地为不同的任务调整语言模型,同时抽象模型的内部结构并提供高级语义。LMQL是一个很有前途的发展,它能够提高语言模型编程的效率和准确性。它使用户能够用更少的资源实现他们想要的结果,使文本生成更易于访问和高效。
来源:https://analyticsindiamag.com/lmql-the-cure-for-llm-chatbot-hallucination/