关于人工智能:使用-LangChain-实现-AI-转型文本数据游戏规则改变者

47次阅读

共计 5483 个字符,预计需要花费 14 分钟才能阅读完成。

举荐:应用 NSDT 场景编辑器助你疾速搭建可二次编辑的 3D 利用场景

在过来的几年里,大型语言模型?—? 或 LLM 为敌人?—? 风靡人工智能世界。

随着 OpenAI 的 GPT-3 在 2020 年的突破性公布,咱们见证了 LLM 的受欢迎水平稳步回升,随着该畛域的最新进展,这种受欢迎水平只会加剧。

这些弱小的人工智能模型为自然语言解决应用程序开拓了新的可能性,使开发人员可能创立更简单的、相似人类的交互。

不是吗?

然而,在解决这种 AI 技术时,很难扩大和生成牢靠的算法。

在这个疾速倒退的格局中,LangChain 曾经成为一个多功能框架,旨在帮忙开发人员在宽泛的利用中充分利用 LLM 的后劲。最重要的用例之一是解决大量 文本数据。

让咱们明天就开始利用 LLM 的力量吧!

LangChain 可用于聊天机器人、问答零碎、摘要工具等。然而,LangChain 最有用和最罕用的应用程序之一是解决文本。

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

所有网站和应用程序每天都在被成吨的单词轰炸。没有人能够解决如此大量的信息 …

然而计算机能够吗?

LLM 技术与 LangChain 一起是缩小文本量的好办法,同时放弃音讯的最重要局部。这就是为什么明天咱们将介绍 LangChain 解决文本的两个根本但十分有用的用例。

  • 综述:表白无关文本注释或聊天交互的最重要事实。它能够缩小数据量,同时保留最重要的局部。
  • 萃取:从文本注释或某些用户查问中提取结构化数据。它能够检测和提取文本中的关键字。

无论您是 LLM 世界的老手,还是心愿将您的语言生成我的项目晋升到一个新的程度,本指南将为您提供有价值的见解和实际示例,以开释 LangChain 解决文本的全副后劲。

⚠️ 如果你想有一些根本的把握,你能够去查看 👇

🏻LangChain 101:构建本人的 GPT 驱动的应用程序 — KDnuggets

永远记住,要应用 OpenAI 和 GPT 模型,咱们须要在本地计算机上安装 OpenAI 库并领有一个无效的 OpenAI 密钥。如果您不晓得该怎么做,能够去查看 这里.

1. 总结

ChatGPT 与 LangChain 一起能够疾速,牢靠地汇总信息。

LLM 摘要技术是缩小文本量的好办法,同时放弃音讯的最重要局部。这就是为什么 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. 短文本摘要

对于短文本的摘要,该办法很简略,实际上,除了简略的提醒阐明之外,您不须要做任何花哨的事件。

这基本上意味着应用输出变量生成模板。

我晓得你可能想晓得 … 提醒模板到底是什么?提醒模板是指生成提醒的可重现形式。它蕴含一个文本字符串 – 一个模板 – 能够从最终用户那里获取一组参数并生成提醒。

  • 提醒模板蕴含:语言模型的阐明 – 容许咱们标准化 LLM 的一些步骤。
  • 一个输出变量 – 容许咱们将后面的指令利用于任何输出文本。

让咱们在一个简略的例子中看到这一点。我能够标准化生成生产特定产品的品牌名称的提醒。

我的 Jupyter Notebook 的屏幕截图。

正如您在后面的例子中察看到的那样,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,我将取得美国国家的摘要,并以十分易于了解的语气进一步总结。

我的 Jupyter Notebook 的屏幕截图。所以当初咱们晓得了如何总结一篇简短的文本 …… 我能够给这个调味一点吗?当然咱们能够 …

1.2. 长文本摘要

在解决长文本时,次要问题是咱们无奈通过提醒间接将它们传播给咱们的 AI 模型,因为它们蕴含太多的令牌。

当初你可能想晓得 … 什么是代币?

标记是模型查看输出的形式 – 单个字符、单词、单词的一部分或文本片段。如您所见,定义并不非常准确,它取决于每个模型。例如,OpenAI 的 GPT 1000 代币大概有 750 个单词。

但要理解的最重要的事件是,咱们的老本取决于代币的数量,咱们不能在单个提醒中发送任意数量的代币。为了取得更长的文本,咱们将反复与以前雷同的示例,但应用整个维基百科页面文本。

我的 Jupyter Notebook 的屏幕截图。

如果咱们查看它有多长 … 它大概是 17K 代币。

间接发送到咱们的 API 有很多货色。那当初怎么办?首先,咱们须要将其拆分。此过程称为分块或将文本拆分为较小的局部。我通常应用 RecursiveCharacterTextSplitter,因为它很容易管制,但你能够尝试一堆。

应用它后,咱们失去的不仅仅是一条文本,而是 23 条,这有助于咱们的 GPT 模型的工作。接下来,咱们须要加载一个链,该链将为咱们间断调用 LLM。LangChain 为此类链式应用程序提供了链接口。咱们十分抽象地将链定义为对组件的一系列调用,其中能够包含其余链。根本界面很简略:

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 文档中查看。因而,如果咱们再次对拆分的文本(称为文档)反复雷同的过程,LLM 能够轻松生成整个页面的摘要。

我的 Jupyter Notebook 的屏幕截图。有用吧?因而,当初咱们晓得了如何总结文本,咱们能够转到第二个用例!

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 的构造。

我的 Jupyter Notebook 的屏幕截图。正如咱们之前看到的,它运行完满!所以当初 … 让咱们多玩一点。尽管这一次见效了,但对于更高级的用例来说,这不是一种长期牢靠的办法。这就是一个微妙的 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 对象与我能想到的任何输出查问一起应用一样简略,它将主动生成带有我所需关键字的输入。

我的 Jupyter Notebook 的屏幕截图。正如您在上面的示例中察看到的那样,输出“我用完了酸奶达能、无品牌燕麦奶和 Heura 制作的那些纯素虫子”,LLM 给了我以下输入:

我的 Jupyter Notebook 的屏幕截图。

次要要点

LangChain 是一个多功能的 Python 库,可帮忙开发人员充分利用 LLM 的后劲,特地是在解决大量文本数据时。它善于解决文本的两个次要用例。LLM 使开发人员可能在自然语言解决应用程序中创立更简单和相似人类的交互。

摘要:

  1. LangChain 能够疾速牢靠地汇总信息,缩小文本量,同时保留音讯中最重要的局部。
  2. 提取:该库能够从一段文本中解析数据,容许结构化输入并启用将数据插入数据库或基于提取的参数进行 API 调用等工作。
  3. LangChain 促成了疾速工程,这是最大化 ChatGPT 等 AI 模型性能的关键技术。通过提醒工程,开发人员能够设计可在不同用例中重复使用的标准化提醒,从而使 AI 应用程序更加通用和无效。

总体而言,LangChain 是加强 AI 应用的弱小工具,尤其是在解决文本数据时,而提醒工程是在各种应用程序中无效利用 ChatGPT 等 AI 模型的要害技能。

原文链接:应用 LangChain 实现 AI 转型:文本数据游戏规则扭转者

正文完
 0