一、引言
近期,大型语言模型(LLM)如GPT系列模型引领了人工智能领域的一场技术革命。开发者们都在利用这些LLM进行各种尝试,虽然已经产生了许多有趣的应用,但是单独使用这些LLM往往难以构建功能强大的实用应用。
LangChain通过将大型语言模型与其他知识库、计算逻辑相结合,实现了功能更加强大的人工智能应用。简单来说,个人理解LangChain可以被视为开源版的GPT插件,它提供了丰富的大语言模型工具,可以在开源模型的基础上快速增强模型的能力。
在此,我总结了最近对LangChain的学习内容,希望能与更多的朋友一起交流。LangChain使得语言技术的运用更加活跃多元,它有望在人工智能领域发挥重要作用,推动我们工作效率的变革。我们正处在人工智能爆发的前夜,积极拥抱新技术将会带来全新的体验。
二、介绍
什么是LangChain?
LangChain产生源于Harrison与领域内的一些人交谈,这些人正在构建复杂的LLM应用,他在开发方式上看到了一些可以抽象的部分。一个应用可能需要多次提示LLM并解析其输出,因此需要编写大量的复制粘贴。
LangChain使这个开发过程更加简单。一经推出后,在社区被广泛采纳,不仅有众多用户,还有许多贡献者参与开源工作。
主要特性:
1.数据感知:能够将语言模型与其他数据源进行连接。 数据的读取和处理
2.代理性:允许语言模型与其环境进行交互。可以通过写工具的方式做各种事情,数据的写入更新。 我理解是对数据的更新写入
主要价值:
1、将需要开发LLM应用所需要的功能进行组件化,并且提供了很多工具,方便使用,开箱即用。
2、有一些现成的可以完整特定功能的链,也可以理解为提高了工具方便使用,不仅有工具也封装了一些现成的产品场景。
LangChain的主要模块?
这一部分我第一次接触在4月份,那个时候LangChain在v0.0.6x的版本,最近新增了一些功能,当然最近新增的功能看起来更加的合理,往好的方向发展,但是主要模块变化不大。
三、LangChain主要概念与示例
以下核心部分模块,都有对应的实践代码放在本仓库中,执行代码需要做的一些准备:
- 能访问外网
- 模型使用:申请OpenAPI的Key、申请HuggingFace的Key.
- Google搜素工具:申请SERPAPI。serpapi.com/
- 模型调试:注册下WandB账号,复制下key: wandb.ai/site
OPENAI_API_KEY=
HUG_API_KEY=
SERPAPI_API_KEY=
WANDB_API_KEY=
另外本次案例,一些比较重要的模块安装:
pip install openai python-dotenv langchain google-search-results tiktoken sentence_transformers chromadb redis faiss-cpu playwright wandb langflow
模块 | 说明 | 安装命令 |
---|---|---|
openai python-dotenv langchain | 主要的LangChain模块 | pip install openai python-dotenv langchain |
google-search-results | 使用Google搜索的接口 | pip install google-search-results |
tiktoken | 进行summary的时候,需要进行分割 | pip install tiktoken |
sentence_transformers | 进行文本Embedding | pip install sentence_transformers |
chromadb | 向量数据库,存储文本嵌入向量 | pip install chromadb |
redis | 如果chromadb有bug,使用redis存储向量也可以 | pip install redis |
faiss-cpu | Facebook的相似性向量搜索库 | pip install faiss-cpu |
playwright | 浏览器测试工具,Agent测试时候用 | pip install playwright |
wandb | LangChain调试工具 | pip install wandb |
langflow | LangChain可视化配置工具 | pip install langflow |
Model I/O
和大模型交互的部分,LangChain为我们抽象了三个组件,模型输入、模型、模型输出解析器:
Model
LangChain的一个核心价值就是它提供了标准的模型接口;然后我们可以自由的切换不同的模型,当前主要有两种类型的模型,LLMs(语言模型)和Chat Models(聊天模型).说到模型,大家就理解模型就是ChatGPT就可以。单纯的模型只能生成文本内容。
- LLMs:这类模型接受一个文本字符串作为输入,然后返回一个文本字符串作为输出。主要用于文本生成任务
- Chat Models:将聊天消息列表作为输入,并返回一个聊天消息,通常这些消息会标明语言的角色(通常是"System"、“AI"或"Human”),这类模型是基于语言模型的,但是它们被专门调整用于进行对话。
Prompt
面向模型编程,其实就是写Prompt。 Prompt是模型的输入,高质量的Prompt对于充分发挥AI的能力至关重要。LangChain提供了两个工具:
- Prompt templates:参数化模板。
- Example selectors: 动态的选择在Prompt中的例子