ReLLM 项目介绍
ReLLM 是一个巧妙利用正则表达式技术的项目,它旨在增强大型语言模型(LLM)的文本生成能力,使其产生符合特定格式的输出。
背景
在解决问题时,有些人会首先想到使用正则表达式,而最终可能会遇到更多的问题。ReLLM 通过在模型生成文本之前过滤掉不匹配的部分,解决这个问题,使用户可以获得明确的结构化数据,比如 JSON 或 XML,或者要求生成符合特定规则的语句模板。例如,ReLLM 可以确保输出是一个日期、数字,或者是填空问题的句子。
工作原理
ReLLM 的核心机制是对每个潜在生成进行评估。它会对每个潜在的文本生成进行部分正则匹配检测,对于那些不符合正则表达式模式的结果,ReLLM 会通过“掩码”模型的输出,防止语言模型生成这些不符合的结果。
值得一提的是,对于需要托管 ReLLM 服务的用户,可以查看 Thiggle Regex Completion API。
安装指南
要开始使用 ReLLM,可以简单地通过 Python 安装包管理器 pip 安装:
pip install rellm
初步实验表明,即使是较小规模的模型,通过 ReLLM 限制生成的文本空间,也可以显著提高文本生成的质量。ReLLM 的这种能力使得通过编程更容易解析输出数据。用户可以查看一些 示例,例如通过 ReLLM 解析上下文无关文法(如 JSON),请访问 r2d4/parserllm。
使用示例
以下是一些使用 GPT2(124百万参数)进行的示例,展示了 ReLLM 的实际应用效果:
-
提示: ReLLM,最佳的从 LLM 获取结构化数据的方法,缩写为
模式:Re[a-z]+ L[a-z]+ L[a-z]+ M[a-z]+
ReLLM 结果: Realized Logistic Logistics Model
无 ReLLM 结果: Largest Largest Address Space (MELSP) -
提示: 用 JSON 数组表示字母表的前三个字母:
模式:\[\"[a-z]\", \"[a-z]\", \"[a-z]\"\]
ReLLM 结果: ["a", "b", "c"]
无 ReLLM 结果: { "index": 0, "id":"1", "description":"", "text": "[{ "id": 0, "name": -
提示: 用一个关于牙医的有趣故事填空句子:
模式:Today I\'m going to the [a-z]+ to [a-z]+ because ([a-z]+ )*\.
ReLLM 结果: Today I'm going to the dentist to see because it is a very important day for me
无 ReLLM 结果: 'My family bought me an appointment with a dentist when I was 15. -
提示: 这是一个好的演示吗?
模式:(Yes|No)
ReLLM 结果: No.
无 ReLLM 结果: I don't know, but this is amazing! -
提示: 将日期 May 4, 2023 转换为格式 mm/dd/yyyy:
模式:[0-9]{2}/[0-9]{2}/[0-9]{4}
ReLLM 结果: 00/00/0045
无 ReLLM 结果: mm:ss -
提示: Jeff Dean 是
模式:(Programmer|Computer Scientist|AGI)
ReLLM 结果: Computer Scientist
无 ReLLM 结果: former national basketball champion and a former professional basketball player. -
提示: 我可以吃
模式:[0-9]{1,10} [a-z]* of [a-z]*
ReLLM 结果: 800 calories of coffee
无 ReLLM 结果: iced coffee here on the west side
通过上面的示例可以清晰地看到,ReLLM 能够有效限制语言模型输出符合特定格式要求的文本,从而在许多复杂的数据处理场景中展示出巨大的应用价值。