随着大语言模型 (LLM) 的引入,自然语言处理已成为互联网上的热门话题。LangChain 是一个开源框架,使开发人员能够开发由大语言模型支持的应用程序,它的应用包括聊天机器人、摘要、生成问答等等。本文将将带您走进 LangChain 的世界,领略自然语言处理新范式的魅力。
一、大语言模型
在解释 LangChain 如何工作之前,首先需要了解大型语言模型如何工作。大语言模型是人工智能 (AI) 的一种,它使用深度学习在由文本、数字和代码数据组成的大数据上训练机器学习模型。
海量的数据使模型能够了解现有的模式以及单词、图形和符号之间的关系。这个特性允许模型执行一系列任务,比如:
- 文本生成、语言翻译、创意、技术和学术内容写作,以及准确且相关的问题回答;
- 图像中的目标检测;
- 书籍、文章和研究论文摘要。
LLM 最显著的局限性在于模型非常通用。这个特性意味着,尽管他们能够有效地执行多项任务,但有时他们可能会对需要专业知识和深入领域知识的问题或提示提供一般答案,而不是具体答案。
二、LangChain 说明
1、介绍
LangChain 框架由 Harrison Chase 于2022年底开发,为 LLM 提供了一种创新的方法。这个过程首先通过将数据集文本分解成更小的部分或摘要进行预处理。然后将摘要嵌入到向量空间中。它提供了一组丰富的工具和库,以便于处理文本数据、训练模型、生成对话等。
随着 LLM 变得更加强大和数据密集,LangChain 的预处理方法是不可避免的一个关键功能。该方法主要用于代码和语义搜索案例,因为它提供了实时收集以及与 LLM 的交互。
2、特性
LangChain 不同于市场上其他语言模型的独特特性:
- 记忆力:一些 LLM 的内存很小,如果提示超出内存限制,通常会导致上下文丢失。而 LangChain 则提供了之前的聊天提示和回复,解决了内存限制的问题。消息历史记录使用户能够向 LLM 重复之前的消息以回顾之前的上下文。
- LLM 切换:与使用单一模型 API 锁定软件的其他 LLM 相比,LangChain 提供了一种抽象,可以简化 LLM 的切换或将多个 LLM 集成到您的应用程序中。当您想要使用紧凑模型(例如 OpenAI 的 GPT-3.5 中的 Stability AI 的 StableLM)来升级软件功能时,这非常有用。
- 集成:与其他 LLM 相比,将 LangChain 集成到您的应用程序中很容易。它通过链和代理提供管道工作流程,快速将 LangChain 整合到具体的应用程序中。就线性管道而言,链条本质上是连接多个部件的物体。代理更高级,允许选择组件如何使用业务逻辑进行交互。例如,用户可能希望使用条件逻辑来根据 LLM 的结果确定下一个操作过程。
- 数据传递:由于 LLM 的一般基于文本的特性,将数据传递到模型通常很棘手。LangChain 通过使用索引来解决这个问题。索引使应用程序能够以可变格式导入数据,并以某种方式存储数据,从而可以将数据一行一行地提供给 LLM。
- 响应:LangChain 提供输出解析器工具,以适当的格式给出答案,而其他 LLM 的模型响应由一般文本组成。在应用程序中使用 AI 时,最好有一个可以编程的结构化响应。
三、LangChain 入门
1、准备环境
基于 Python 进行 LangChain 的相关开发。
安装以下依赖项:
- OpenAI:将 ChatGPT API 集成到 Python 环境中。
- LangChain:将 LangChain 集成到 Python 环境中。
python
pip install openai langchain
2、导入依赖项
从 LangChain 包导入必要的类,如 LLMChain、OpenAI、ConversationChain和PromptTemplate。
python
from langchain import ConversationChain, OpenAI, PromptTemplate, LLMChain
from langchain.memory import ConversationBufferWindowMemory
配置 ChatGPT API KEY:
python
import os
os.environ["OPENAI_API_KEY"]="[you key]"
3、开发应用程序
下面通过 CoLab 工具开发一个简单的聊天应用程序,如下所示:
python
# 自定义 LLM 模板
template = """
Assistant is a large language model trained by OpenAI.
{history}
Human: {human_input}
Assistant:
"""
prompt = PromptTemplate(input_variables=["history", "human_input"], template=template)
chatgpt_chain = LLMChain(
llm=OpenAI(temperature=0),
prompt=prompt,
verbose=True,
memory=ConversationBufferWindowMemory(k=2),
)
# 使用 ChatGPT 链交互
output = chatgpt_chain.predict(
human_input="What is MakeUseOf?"
)
# 输出模型的答复
print(output)
结语
LLM 正在迅速增长,并改变了人类与知识机器的互动方式。像 LangChain 这样的框架在为开发人员提供一种平稳简单的方法来为应用程序提供 LLM 方面处于领先地位。LangChain 作为一种新兴的自然语言处理技术,具有强大的处理能力和高度的灵活性,为开发者提供了一个便捷、高效的解决方案,以构建自定义的大语言模型。