用 LangChain 改变人工智能:文本数据游戏规则的改变者

AI资讯2年前 (2023)发布 GPTHub
17 0

作者提供的图片
 

 

在过去的几年里,大型语言模型?——?还是朋友们的法学硕士?——?席卷了人工智能世界。 

随着 2020 年 OpenAI 的 GPT-3 的突破性发布,我们见证了法学硕士的受欢迎程度稳步上升,而且随着该领域的最新进展,这种受欢迎程度只会进一步加剧。

这些强大的人工智能模型为自然语言处理应用开辟了新的可能性,使开发人员能够创建更复杂的、类人的交互。

不是吗?

然而,在处理这种人工智能技术时,很难扩展并生成可靠的算法。

在这个快速发展的环境中,LangChain 已成为一个多功能框架,旨在帮助开发人员在广泛的应用中充分利用法学硕士的潜力。最重要的用例之一是处理大量文本数据。 

今天就让我们深入了解并开始利用法学硕士的力量!

LangChain 可用于聊天机器人、问答系统、摘要工具等。然而,LangChain 最有用和最常用的应用之一是处理文本。

当今世界充斥着数据。最臭名昭著的类型之一是文本数据。

所有网站和应用程序每天都受到大量文字的轰炸。没有人能够处理如此大量的信息……

但电脑可以吗?

LLM 技术与 LangChain 相结合是减少文本量同时保留消息最重要部分的好方法。这就是为什么今天我们将介绍两个基本但非常有用的 LangChain 处理文本的用例。

  • 总结:表达有关文本或聊天交互的最重要事实。它可以减少数据量,同时保留最重要的部分。
  • 提取:从文本正文或某些用户查询中提取结构化数据。它可以检测并提取文本中的关键字。

无论您是法学硕士领域的新手,还是希望将您的语言生成项目提升到一个新的水平,本指南都将为您提供宝贵的见解和实践示例,以释放 LangChain 处理文本的全部潜力。

⚠️想要有一些基础的掌握可以去查看👇🏻

LangChain 101:构建您自己的 GPT 支持的应用程序 — KDnuggets

永远记住,为了使用 OpenAI 和 GPT 模型,我们需要在本地计算机上安装 OpenAI 库并拥有有效的 OpenAI 密钥。如果您不知道如何操作,可以到这里查看。

 

1. 总结

 

ChatGPT 与 LangChain 一起可以快速且非常可靠地汇总信息。 

LLM 摘要技术是减少文本量同时保留消息最重要部分的好方法。这就是为什么法学硕士可以成为任何需要处理和分析大量文本数据的数字公司的最佳盟友。

要执行以下示例,需要以下库:

# LangChain & LLM
from langchain.llms import OpenAI
from langchain import PromptTemplate
from langchain.chains.summarize import load_summarize_chain
from langchain.text_splitter import RecursiveCharacterTextSplitter

#Wikipedia API
import wikipediaapi

 

1.1. 短文摘要

 

对于短文本的摘要,方法很简单,实际上除了简单的提示提示之外,不需要做任何花哨的事情。

这基本上意味着生成带有输入变量的模板。

我知道您可能想知道……提示模板到底是什么?

提示模板是指生成提示的可重复的方式。它包含一个文本字符串(一个模板),可以从最终用户那里获取一组参数并生成提示。

提示模板包含:

  • 语言模型的说明– 使我们能够标准化法学硕士的一些步骤。
  • 输入变量– 允许我们将前面的指令应用于任何输入文本。

让我们通过一个简单的例子来看看这一点。我可以标准化一个提示,生成生产特定产品的品牌名称。

 

用 LangChain 改变人工智能:文本数据游戏规则的改变者
我的 Jupyter 笔记本的屏幕截图。
 

 

正如您在前面的示例中所观察到的,LangChain 的神奇之处在于我们可以使用不断变化的输入变量来定义标准化提示。

  • 为品牌生成名称的说明始终保持不变。
  • 产品变量作为可以更改的输入。

这使我们能够定义可在不同场景中使用的通用提示。

现在我们知道什么是提示模板了…… 

假设我们想要定义一个提示,使用超级易于理解的词汇来总结任何文本。我们可以定义一个提示模板,其中包含一些特定的指令和一个根据我们定义的输入变量而变化的文本变量。

# Create our prompt string.
template = """
%INSTRUCTIONS:
Please summarize the following text.
Always use easy-to-understand vocabulary so an elementary school student can understand.

%TEXT:
{input_text}
"""

Now we define the LLM we want to work with - OpenAI’s GPT in my case -  and the prompt template. 


# The default model is already 'text-davinci-003', but it can be changed.
llm = OpenAI(temperature=0, model_name='text-davinci-003', openai_api_key=openai_api_key)

# Create a LangChain prompt template that we can insert values to later
prompt = PromptTemplate(
   input_variables=["input_text"],
   template=template,
)

 

那么让我们尝试一下这个提示模板。使用维基百科 API,我将获取美国国家的摘要,并以非常易于理解的语气进一步总结它。

 

XXXXXX
我的 Jupyter 笔记本的屏幕截图。
 

 

现在我们知道如何总结一篇短文了……我可以稍微加点趣味吗?

当然我们可以… 

 

1.2. 长文本摘要

 

在处理长文本时,主要问题是我们无法通过提示直接将它们传达给我们的人工智能模型,因为它们包含太多标记。

现在您可能想知道……什么是代币?

标记是模型看待输入的方式——单个字符、单词、单词的一部分或文本片段。正如您所观察到的,这个定义并不精确,它取决于每个模型。例如,OpenAI 的 GPT 1000 令牌大约为 750 个单词。

但最重要的是要了解的是,我们的成本取决于代币的数量,并且我们无法在一次提示中发送尽可能多的代币。为了获得更长的文本,我们将重复与之前相同的示例,但使用整个维基百科页面文本。

 

用 LangChain 改变人工智能:文本数据游戏规则的改变者
我的 Jupyter 笔记本的屏幕截图。
 

 

如果我们检查一下它有多长……大约有 17K 个代币。

直接发送到我们的 API 的数据量相当大。

所以现在怎么办?

首先,我们需要将其拆分。这个过程称为分块文本分成更小的部分。我通常使用RecursiveCharacterTextSplitter因为它很容易控制,但有很多可以尝试。

使用它后,我们得到的不仅仅是一段文本,而是 23 段文本,这有助于 GPT 模型的工作。

接下来我们需要加载一个链,它将为我们连续调用 LLM。

LangChain为此类链式应用提供了Chain接口。我们将链非常笼统地定义为对组件的调用序列,其中可以包括其他链。基本接口很简单:

class Chain(BaseModel, ABC):
    """Base interface that all chains should implement."""
    memory: BaseMemory
    callbacks: Callbacks
    def __call__(
        self,
        inputs: Any,
        return_only_outputs: bool = False,
        callbacks: Callbacks = None,
    ) -> Dict[str, Any]:
        ...

 

如果你想了解更多关于链的知识,可以直接去LangChain文档查看。 

因此,如果我们对分割的文本(称为文档)再次重复相同的过程,法学硕士可以轻松生成整个页面的摘要。

 

用 LangChain 改变人工智能:文本数据游戏规则的改变者
我的 Jupyter 笔记本的屏幕截图。
 

 

有用吧?

现在我们知道如何总结文本,我们可以转向第二个用例!

 

2. 提取

 

提取是从一段文本中解析数据的过程。这通常与输出解析一起使用来构造我们的数据。

提取关键数据对于识别和解析文本中的关键词非常有用。常见用例是从句子中提取结构化行以插入到数据库中,或从长文档中提取多行以插入到数据库中。

假设我们正在运营一家数字电子商务公司,我们需要处理我们网站上所述的所有评论。

我可以去一一阅读所有这些……这太疯狂了。 

或者我可以简单地从每个数据中提取我需要的信息并分析所有数据。 

听起来很容易……对吧?

让我们从一个非常简单的例子开始。首先,我们需要导入以下库:

# To help construct our Chat Messages
from langchain.schema import HumanMessage
from langchain.prompts import PromptTemplate, ChatPromptTemplate, HumanMessagePromptTemplate

# We will be using a chat model, defaults to gpt-3.5-turbo
from langchain.chat_models import ChatOpenAI

# To parse outputs and get structured data back
from langchain.output_parsers import StructuredOutputParser, ResponseSchema

chat_model = ChatOpenAI(temperature=0, model_name='gpt-3.5-turbo', openai_api_key=openai_api_key)

 

2.1. 提取特定单词

 

我可以尝试在某些文本中查找特定的单词。在本例中,我想解析文本中包含的所有水果。同样,它和以前一样非常简单。我们可以轻松定义一个提示,向我们的 LLM 提供清晰的指示,指出识别文本中包含的所有水果,并返回包含这些水果及其相应颜色的类似 JSON 的结构。

 

用 LangChain 改变人工智能:文本数据游戏规则的改变者
我的 Jupyter 笔记本的屏幕截图。
 

 

正如我们之前所看到的,它运行得非常完美!

所以现在……让我们多玩一点。虽然这一次有效,但对于更高级的用例来说,这并不是一个长期可靠的方法。这就是一个奇妙的 LangChain 概念发挥作用的地方……

 

2.2. 使用LangChain的响应模式

 

LangChain的响应模式将为我们做两件主要的事情:

  1. 生成带有真实格式说明的提示。这太棒了,因为我不需要担心即时工程方面的问题,我将把它留给 LangChain!
  2. 读取 LLM 的输出并将其转换为适合我的 python 对象。这意味着,始终生成有用且我的系统可以解析的给定结构。

为此,我只需要定义模型中排除的响应即可。 

因此,假设我想要确定用户在评论中陈述的产品和品牌。我可以像以前一样通过简单的提示轻松执行 – 利用 LangChain 生成更可靠的方法。

因此,首先我需要定义一个response_schema,在其中定义要使用名称和描述解析的每个关键字。

# The schema I want out
response_schemas = [
   ResponseSchema(name="product", description="The name of the product to be bought"),
   ResponseSchema(name="brand", description=  "The brand of the product.")
]
And then I generate an output_parser object that takes as an input my response_schema. 
# The parser that will look for the LLM output in my schema and return it back to me
output_parser = StructuredOutputParser.from_response_schemas(response_schemas)

 

定义解析器后,我们使用 LangChain 的 .get_format_instructions() 命令生成指令格式,并使用 ChatPromptTemplate 定义最终提示。现在,就像将这个output_parser对象与我能想到的任何输入查询一起使用一样简单,并且它将自动生成带有我想要的关键字的输出。

 

用 LangChain 改变人工智能:文本数据游戏规则的改变者
我的 Jupyter 笔记本的屏幕截图。
 

 

正如您在下面的示例中所观察到的,输入“我用完了达能酸奶、无品牌燕麦奶和 Heura 生产的纯素汉堡”,法学硕士给出了以下输出:

 

用 LangChain 改变人工智能:文本数据游戏规则的改变者
我的 Jupyter 笔记本的屏幕截图。
 

 

主要要点

 

LangChain 是一个多功能的 Python 库,可帮助开发人员充分利用 LLM 的潜力,特别是在处理大量文本数据方面。它擅长处理文本的两个主要用例。法学硕士使开发人员能够在自然语言处理应用程序中创建更复杂、更类似于人类的交互。

  1. 总结:LangChain可以快速可靠地总结信息,减少文本量,同时保留消息中最重要的部分。
  2. 提取:该库可以从一段文本中解析数据,从而允许结构化输出并启用诸如将数据插入数据库或基于提取的参数进行 API 调用等任务。
  3. LangChain 促进了快速工程,这是最大化 ChatGPT 等人工智能模型性能的关键技术。通过提示工程,开发人员可以设计可在不同用例中重复使用的标准化提示,从而使人工智能应用程序更加通用和有效。

总体而言,LangChain 是增强人工智能使用的强大工具,特别是在处理文本数据时,而即时工程是在各种应用程序中有效利用 ChatGPT 等人工智能模型的关键技能。

Josep Ferrer是来自巴塞罗那的分析工程师。他毕业于物理工程专业,目前在应用于人类移动的数据科学领域工作。他是一位专注于数据科学和技术的兼职内容创作者。您可以通过LinkedInTwitterMedium联系他。

ChatGPTChatGPT中国站国内ChatGPT人工智能AIOpenAIChatGPT国内ChatGPT官网ChatGPT中文版ChatGPT体验ChatGPT国内站点ChatGPT中文网ChatGPT国内中国版ChatGPTChatGPT中国镜像ChatGPT国内镜像AI全家桶AI导航MJ绘画AI绘画技术人工智能绘画AI艺术创作智能绘图软件

 

 

© 版权声明

相关文章