LangChain:大语言模型界的 Airflow

LangChain 是一个利用大语言模型 (LLM) 构建应用程序的开源框架。它可以结合 LLM 和各种信息源比如 Google Wikipedia,以创造出各式各样有趣的应用。而且,就像 Airflow 编排 ETL 数据管道一样,LangChain 能够编排多个 LLM 相关的任务进而组成 LLM 管道。


在这篇博客中,我将向大家介绍一款非常有趣的开源技术框架,它被称为 LangChain。LangChain 是一个智能代理系统,其主要目的是利用最先进的语言生成技术,协助软件研发人员、数据科学家以及其他技术从业者更高效地进行各种任务处理。

首先,让我们来了解一下 LangChain 的核心功能之一:它具有一个强大的利用 LLM 进行决策的智能代理系统。通过这个系统,LangChain 能够分析各种场景,为用户提供实时的行动建议。为了确保准确性,该系统采用了大量的前期训练,使其能快速响应并作出最佳决策。

此外,LangChain 提供了一个标准的接口,方便用户根据自己的需求选择合适的代理 (Agent)。通过这种方式,用户可以依照场景和个人喜好,快速选择出最适合的智能代理参与到工作中。需要注意的是,LangChain 还有一个强大的功能是示例库 (Prompt),库中收藏有丰富的实际应用案例,可以供用户参考学习。

当然,LangChain 的应用远不止于此。它还可以应用于各种涉及语言处理和分析的场景,这样的例子包括:自动回复电子邮件、生成报告或文章以及进行关键词提取等。而在语言生成方面,LangChain 也可以展现出令人惊叹的优势, 成为用户最佳的写作助手。 总的来说,LangChain 是为语言生成和智能语言处理创造的一款具有广泛实用价值的工具。

确实,LangChain 通过发挥其智能代理和语言生成技术的优势,为我们的生活和工作带来了诸多便利。如果你正在寻找一个集成了最新技术和智能语言处理功能的工具,LangChain 无疑将是你的最佳选择。尝试一下 LangChain,并发掘其潜力,你会发现它将会为你带来惊喜。

注意以上内容由 ChatGPT 生成


LangChain 是什么?

LangChain 是一个利用大语言模型 (LLM) 来开发各种应用的开源框架。它由 Harrison Chase 创造,2022 年十月在 Github 发布,它的仓库地址位于 https://github.com/hwchase17/langchain

就像它的仓库简介说的那样,Building applications with LLMs through composability,LangChain 的特点就在于组合性,或者说连接性。LangChain 可以将大语言模型 (比如 OpenAI 和 HuggingFace Hub) 和外部信息源 (比如 Google, Baidu, Wikipedia) 连接起来,当然它也可以连接数据预处理管道,甚至你的机器学习模型。有了这种组合性,我们就可以用 LangChain 来编排各种与 LLM 相关的任务,比如 Prompt Engineering, Text Completion, Chat, Reasoning 和智能 AI 代理 (Agent),有点类似于 Apache Airflow 编排各种数据处理的任务,数据工程师们肯定知道我在说什么。

LangChain 的关键功能

LangChain 提供了一系列工具,比如 Chains, Agents, Prompt templates, Memory, Indexes,以便在文本输入和输出之间交互。LangChain 有以下 7 个关键模块:

  1. Models: 开源或闭源的大语言模型 (LLM)
  2. Prompts: 提示词模版,类似于 Python 的 format 函数。可以接收用户的输入变量来构建提示词
  3. Memory: 赋予 chains 和 agents 记忆能力,使其记住于用户的先前互动和历史对话内容
  4. Indexes: 向量化数据 (Embedding) 并存入向量数据库,默认使用 chromadb,然后可以根据用户的输入检索查询最相关的文本
  5. Chains: 将多个组件或其他 chains 组合在一个管道中的方法,LangChain 提供 chains 的标准接口
  6. Agents: 根据用户设定的目标,Agents 会自行思考可行的任务并执行它们,类似于 AutoGPT
  7. Callbacks: 回调函数,可以在 LLM 应用的不同阶段自动执行各种任务,比如 logging, monitoring, steaming 等等

LangChain 小试牛刀

光说不练假把式,让我们来实现 2 个简单基于 LangChain 的 LLM 应用吧。

开始前,先安装 dependencies。

请注意,以下 2 个应用都是在 Python3.10 环境下写的。

1
pip3 install langchain openai

Text Generator

最基本的 LLM 文本补全应用:用户提出一个问题,LLM 生成一个回答。

在这个应用中,我们会用到 LangChain 中的 Models 功能来调用 OpenAI 的 LLM。

1
2
3
4
5
6
7
8
import os
from langchain.llms import OpenAI

os.environ['OPENAI_API_KEY'] = 'your openai key'

llm = OpenAI(temperature=0.7) # OpenAI LLM wrapper
user_input = input('Enter your question:')
print(llm(user_input))

去掉引入 dependencies 和 OpenAI API Key, 一共 3 行代码 LangChain 就实现了一个简单问答应用,非常方便!

Blog Outline Creator

这个应用相比上一个相对而言稍微复杂一些,它的目的在于:根据用户输入的话题,生成博客文章的标题和提纲。

在这个应用中,我们会用到 LangChain 的 Prompt template 和 Chains 模块。

首先,跟往常一样,先引入 dependencies 和 OpenAI Key

1
2
3
4
5
6
7
import os
from config import OPENAI_KEY
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain

os.environ['OPENAI_API_KEY'] = 'your openai key'

创建两个 Prompt templates,一个是博客文章标题的提示词模版,另一个是博文提纲的提示词模版。

1
2
3
4
5
6
7
8
9
title_template = PromptTemplate(
input_variables = ['topic'],
template='write me a blog article title about {topic}'
)

blog_outline_template = PromptTemplate(
input_variables = ['title'],
template='write me a blog outline based on this title TITLE: {title}'
)

调用 OpenAI 的 LLM 模型,并创建两个 LLM Chains。标题 Chain 的输入是标题的 Prompt,提纲 Chain 的输入是提纲的 Prompt。细心的观众可能已经发现了,这两个 Chains 是有先后顺序的,我们会先执行标题 Chain,有了 LLM 生成的标题之后,再执行提纲 Chain。

1
2
3
llm = OpenAI(temperature=0.9) 
title_chain = LLMChain(llm=llm, prompt=title_template, verbose=True)
blog_outline_chain = LLMChain(llm=llm, prompt=blog_outline_template, verbose=True)

用户输入自己想写的博客文章的话题,顺序执行博文标题 Chain 和博文提纲 Chain。

1
2
3
4
5
6
7
if __name__ == '__main__':
topic = input('Enter the blog topic here: ')
title = title_chain.run(topic=topic)
blog_outline = blog_outline_chain.run(title=title)

print(f'Title: {title}\n')
print(f'Blog Outline: {blog_outline}')

最后,我们就得到了 LLM 生成的博客文章标题和提纲。

这里我输入的 topic 是 LangChain,可以看出来 LLM 把 LangChain 理解成一个语言学习平台,还是有很多提升空间,如果输入的信息更多一些,LLM 应该会理解的更准确。不过总的来说,LLM 的效果不错,博客文章的标题和提纲确实都生成得有模有样!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
$ Enter the blog topic here: LangChain

> Entering new LLMChain chain...
Prompt after formatting:
write me a blog article title about LangChain

> Finished chain.

> Entering new LLMChain chain...
Prompt after formatting:
write me a blog outline based on this title TITLE:

"Unlocking the Power of LangChain: The Revolutionary Language Exchange Platform"

> Finished chain.
Title:

"Unlocking the Power of LangChain: The Revolutionary Language Exchange Platform"

Blog Outline:

I. Introduction
A. What is LangChain?
B. How does LangChain work?

II. Benefits of LangChain
A. Allows users to learn multiple languages
B. Gives users access to native speakers
C. Establishes an international community

III. LangChain Platform Features
A. Live Video Chat
B. Digital Currency
C. Language Exercises

IV. LangChain User Experiences
A. Testimonials from current users
B. Positive effects on users’ capability in foreign language skills

V. Conclusion
A. How LangChain is setting a new standard in language learning
B. The impact LangChain can have on international cultural understanding
C. A call to action to join the LangChain community

References

资磁一下?