自ChatGPT问世以来,大模型给我们感官带来的很大的冲击。首先是机器人聊天这一应用形式似乎是一夜之间就接近了图灵测试的标准,另外有着强大上下文感知以及推理能力的大模型正在朝着各个领域渗透。伴随着大模型的热度,相信很多开发同学的订阅列表也被不断涌现的大模型相关的开发框架各种新闻稿占据。
其中LangChain是那最火的几个框架之一,我将结合官方文档和其他的一些相关信息,对LangChain做一个简介,并演示一个简单的例子。
LangChain简介
在Langchain的官方文档中,是这样介绍Langchain的:LangChain is a framework for developing applications powered by language models. It enables applications that
- Are context-aware: connect a language model to sources of context (prompt instructions, few shot examples, content to ground its response in, etc.)
- Reason: rely on a language model to reason (about how to answer based on provided context, what actions to take, etc.)
直白的翻译过来LangChain是开发大模型应用的框架,这些应用有两个重要的特点:
- 能够感知上下文;
- 能够进行推理。
总结一下,LangChain是一个能够开发大模型应用的开发框架。 我们知道大部分大模型厂商都提供了Api能力,使得用户能够构建自己的基于大模型的应用。既然有了这些Api就能构建应用,为什么要引入LangChain来开发大模型应用,而LangChain又扮演了什么样的角色呢?接下来,通过LangChain的架构和各个组件介绍来详细了解。
LangChain架构和组件
首先来看一下LangChain整体的技术栈图(引用自LangChain官方文档)
分为4个组成部分:LangChain(SDK)、Templates、LangServe和LangSmith,覆盖了从开发到生产的整个应用生命周期。从应用生命周期的视角来看:
| 生命周期阶段 | 对应组件 |
|---|---|
| 开发 | LangChain、Templates |
| 服务化(部署) | LangServe |
| 生产监控 | LangSimth |
由此可见,LangChain提供了全链路的大模型应用 开发、部署、监控管理能力,让应用整合大模型变得十分容易。
LangChain的安装和使用
官方文档中有详细的安装LangChain的步骤,可以参考Installation这一节。就我自己,我使用conda创建虚拟环境,通过pip进行安装。需要注意一点,单独执行
pip install langchain
这个命令只是最小化安装了langchain,后续还要根据需要安装对应的包。
下面,我们用LangChain实现一个简单功能。
我是在本地使用LangChain的,我的本地环境如下:
| 类别 | 环境 |
|---|---|
| 硬件 | macbook m3 max 128G |
| 大模型 | MixTral 8*7B Instruct v0.1 8位量化,下载地址 |
| 模型加载框架 | llama-cpp-python,一个llama.cpp的python封装包,可以通过pip进行安装,安装命令 pip install llama-cpp-python==0.1.9 |
在上面的架构图中,我们可以看到LangChain有个组件叫LangChain-Community,在之中有个专门的Model I/O组件用于处理与大模型的输入输出,我们将利用这个组件来实现向大模型提交Prompt,并获取结果的功能。
- 首先,安装LangChain-Community,
pip install langchain-community - 代码如下:
from langchain_community.llms import LlamaCpp
# 模型文件地址
model_home = '/models/mixtral-8x7b-instruct-v0.1.Q8_0.gguf'
llm_model = LlamaCpp(model_path=model_home)
print(llm_model.invoke("虎鲸是什么?"))
- 执行这段代码,可以获得以下内容
这样,我们就通过LangChain实现了这个简单的功能,非常容易上手。