该软件包将大型语言模型(LLMS)集成到Spacy中,具有用于快速原型和提示的模块化系统,并将非结构化响应转换为各种NLP任务的强大输出,无需培训数据。
llm
组件将提示集成到您的Spacy管道中langchain
模型和功能都可以在spacy-llm
中使用大型语言模型(LLMS)具有强大的自然语言理解能力。只有几个(有时没有)示例,可以提示LLM执行自定义的NLP任务,例如文本分类,命名实体识别,核心分辨率,信息提取等。
Spacy是一个建筑系统良好的图书馆,需要以各种方式使用语言。 Spacy的内置组件通常由监督学习或基于规则的方法提供动力。
监督学习要比LLM差得多,促使原型制作,但对于许多任务来说,这对生产来说要好得多。在单个GPU上舒适运行的变压器模型非常强大,对于您拥有明确定义的输出的任何任务,这可能是一个更好的选择。您可以用几百到几千个标记的示例训练模型,它将学会做到这一点。通过监督学习,效率,可靠性和控制都更好,并且准确性通常也高于LLM提示。
spacy-llm
让您拥有两全其美的最好。您可以快速用LLM提示供电的组件初始初始化管道,并自由地混合由其他方法供电的组件。随着项目的进行,您可以根据需要替换一些或所有LLM供电的组件。
当然,您的系统中可能会有一个完全合理的LLM功能的组件。如果您想要一个可以以微妙的方式从多个文档中综合信息并为您生成细微的摘要的系统,那么更大的是更好。但是,即使您的生产系统需要LLM来完成某些任务,这并不意味着您都需要所有LLM。也许您想使用廉价的文本分类模型来帮助您找到要汇总的文本,或者您想添加基于规则的系统以理智检查摘要的输出。通过成熟且经过深思熟虑的库,这些前后任务要容易得多,这正是Spacy提供的。
spacy-llm
将在将来的Spacy版本中自动安装。目前,您可以在已经安装了spacy
的同一虚拟环境中运行以下内容。
python -m pip install spacy-llm
配x 该软件包仍然是实验性的,对接口进行的更改可能会在次要版本更新中破坏。
让我们使用OpenAI的GPT模型运行一些文本分类。
从OpenAI.com创建一个新的API密钥或获取现有的API密钥,并确保将键设置为环境变量。有关更多背景信息,请参阅围绕设置API键的文档。
要进行一些快速实验,从0.5.0开始,您可以运行:
import spacy
nlp = spacy . blank ( "en" )
llm = nlp . add_pipe ( "llm_textcat" )
llm . add_label ( "INSULT" )
llm . add_label ( "COMPLIMENT" )
doc = nlp ( "You look gorgeous!" )
print ( doc . cats )
# {"COMPLIMENT": 1.0, "INSULT": 0.0}
通过使用llm_textcat
工厂,使用了内置的TextCat任务的最新版本,以及OpenAI的默认GPT-3-5模型。
为了控制llm
管道的各种参数,我们可以使用Spacy的配置系统。首先,创建一个至少包含以下内容的配置文件config.cfg
(或在此处查看完整示例):
[nlp]
lang = " en "
pipeline = [ " llm " ]
[components]
[components.llm]
factory = " llm "
[components.llm.task]
@ llm_tasks = " spacy.TextCat.v3 "
labels = [ " COMPLIMENT " , " INSULT " ]
[components.llm.model]
@ llm_models = " spacy.GPT-4.v2 "
现在运行:
from spacy_llm . util import assemble
nlp = assemble ( "config.cfg" )
doc = nlp ( "You look gorgeous!" )
print ( doc . cats )
# {"COMPLIMENT": 1.0, "INSULT": 0.0}
就是这样!还有许多其他功能 - 及时模板,更多任务,日志记录等。有关如何使用这些的更多信息,请查看https://spacy.io/api/large-langue-language-models。
在不久的将来,我们将
总是欢迎PR!
如果您对spacy-llm
的使用有疑问,或者想在旋转后给我们反馈,请使用讨论板。错误报告可以在Spacy问题跟踪器上提交。谢谢你!
请参阅我们的迁移指南。