AI时代,相信大家或多或少都听过 LangChain 的大名。通俗的说,LangChain是一个面向大模型的开发框架(SDK)。
目前 LangChain 仍在快速迭代中,所以在使用中要时刻关注你所使用的版本和接口变更。
0. 认识LangChain框架
从上图可以看到,LangChain 目前有四层框架:
- 最下层深色部分:LangChain的Python和JavaScript库。包含无数组件的接口和集成,以及将这些组件组合到一起的链(chain)和代理(agent)封装,还有链和代理的具体实现。
- Templates:一组易于部署的参考体系结构,用于各种各样的任务。
- LangServe:用于将LangChain链部署为REST API的库。
- LangSmith:一个开发人员平台,允许您调试、测试、评估和监控基于任何LLM框架构建的链,并与LangChain无缝集成。
在最下层深色部分- LangChain的Python和JavaScript库中,可以看到它封装了一系列模块。
- 模型 I/O 封装,包括:
- LLMs:大语言模型
- ChatModels:一般基于 LLMs,但按对话结构重新封装
- Prompt:提示词模板
- OutputParser:解析输出
- Retrieval 数据连接与向量检索封装,包括:
- Retriever: 向量的检索
- Document Loader:各种格式文件的加载器
- Embedding Model:文本向量化表示,用于检索等操作
- Verctor Store: 向量的存储
- Text Splitting:对文档的常用操作
- Agents 根据用户输入,自动规划执行步骤,自动选择每步需要的工具,最终完成用户指定的功能,包括:
- Tools:调用外部功能的函数,例如:调 google 搜索、文件 I/O、Linux Shell 等等
- Toolkits:操作某软件的一组工具集,例如:操作 DB、操作 Gmail 等等
- Chain 实现一个功能或者一系列顺序功能组合
- Memory 记忆封装,也就是上下文的管理能力封装
- Callbacks 一些过程回调函数
1. 动手实现你的第一个LangChain程序
1.1 LangChain 环境
(1)安装 LangChain
- pip 安装
python
复制代码pip install langchain
- conda 安装
python
复制代码conda install langchain -c conda-forge
(2)安装 LangChain X OpenAI
LangChain封装了对于大模型的调用接口,也就是说,我们可以选择使用的模型,无论是在线模型还是本地部署的模型。本文我们还是使用OpenAI的API来调用大模型。
python
复制代码pip install -U langchain-openai
1.2 通过LangChain的接口来调用OpenAI对话
python复制代码import os
# 加载 .env 到环境变量
from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv())
from langchain_openai import ChatOpenAI ## langchain封装的openai对话接口
llm = ChatOpenAI() # 默认是gpt-3.5-turbo
response = llm.invoke("你是谁") ## 通过 invoke 传入对话
print(response.content)
## 运行结果输出:我是一个AI助手,没有具体的身份。我是由OpenAI开发的,可以帮助回答问题和提供信息。
1.3 多轮对话的封装
python复制代码import os
# 加载 .env 到环境变量
from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv())
from langchain_openai import ChatOpenAI
llm = ChatOpenAI() # 默认是gpt-3.5-turbo
from langchain.schema import (
AIMessage, #等价于OpenAI接口中的assistant role
HumanMessage, #等价于OpenAI接口中的user role
SystemMessage #等价于OpenAI接口中的system role
)
messages = [
SystemMessage(content="你是[同学小张]的个人助理。你叫[小明]"),
HumanMessage(content="我叫[同学小张]"),
AIMessage(content="好的老板,你有什么吩咐?"),
HumanMessage(content="我是谁")
]
response = llm.invoke(messages)
print(response.content)
## 运行输出:您是同学小张。
通过以上代码可以看到:
- LangChain内封装了AIMessage、HumanMessage、SystemMessage等消息类型,区分消息来源。
- invoke对话接口接收一系列消息,可以实现多轮对话(上述代码中的多轮对话在哪:第一轮是“我叫[同学小张]”,第二轮我问它"我是谁"时,第一轮我的名字的信息带进去了,所以它才能回复:“您是同学小张”)。
这样模型封装的意义在哪?
- 可以实现不同模型间的无缝切换,
llm = ChatOpenAI()
是GPT模型,它可以换成llm = ErnieBotChat()
,其它代码都不用改,就可以切换到文心大模型。
好了,本文先写到这,算是对 LangChain 系列开了个头。后面咱们深入各个模块去学习和实战。
读者福利:如果大家对大模型感兴趣,这套大模型学习资料一定对你有用
对于0基础小白入门:
如果你是零基础小白,想快速入门大模型是可以考虑的。
一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以根据这些资料规划好学习计划和方向。
资源分享
大模型AGI学习包
资料目录
- 成长路线图&学习规划
- 配套视频教程
- 实战LLM
- 人工智能比赛资料
- AI人工智能必读书单
- 面试题合集
《人工智能\大模型入门学习大礼包》,可以扫描下方二维码免费领取!
![](https://img-blog.csdnimg.cn/img_convert/4ca50d67a7bfe4ed1e321a5fb66ccf58.png)
1.成长路线图&学习规划
要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
2.视频教程
很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,其中一共有21个章节,每个章节都是当前板块的精华浓缩。
3.LLM
大家最喜欢也是最关心的LLM(大语言模型)
《人工智能\大模型入门学习大礼包》,可以扫描下方二维码免费领取!
![](https://img-blog.csdnimg.cn/img_convert/4ca50d67a7bfe4ed1e321a5fb66ccf58.png)