

























一、LangChain到底是什么
LangChain是一个开源框架,用于开发由大语言模型(LLMs)驱动的应用程序,比如,搭建智能体(Agent)、问答系统(QA)、对话机器人、文档搜索系统、企业私有化知识库等
简单概括:
LangChain中的Lang指language,即大预言模型,Chain 即 链,也就是将大模型与外部数据&各种组件链接成链,以此构建AI应用程序
1、LangChain的使用场景
| 项目名称 | 技术点 | 难度 |
| 文档问答助手 |
Prompt + Embedding +RetrievalQA |
⭐⭐ |
| 智能日程助手 |
Agent + Tool + Memory |
⭐⭐⭐ |
| LLM+数据库问答 |
SQLDatabaseToolkit + Agent |
⭐⭐⭐⭐ |
| 多模型路由对话系统 |
RouterChain + 多 LLM |
⭐⭐⭐⭐ |
| 互联网智能客服 |
ConversationChain + RAG +Agent |
⭐⭐⭐⭐⭐ |
| 企业知识助手(RAG+本地模型) |
VectorDB + LLM + Streamlit |
⭐⭐⭐⭐⭐ |
比如:知识库的架构

2、LangChain的资料介绍
3、LangChain内部结构

图中展示了LangChain生态系统的主要组件及其分类,分为三个层次:架构(Architecture)、组件(Components)和部署(Deployment)。
结构1:LangChain --就是AI应用组装套件,封装了一堆API。整体框架不大,但是内部琐碎的知识点特别多
结构2:LangGraph --基于langchain的api进一步的封装,能够协调多个Chain、Agent、Tools完成更复杂的任务,实现更高级的功能
结构3:LangSmith ---链路追踪;提供了6大功能,与langchain无缝对接,帮组从原型阶段过度到生成阶段
结构4:LangServe -- 将langchain的可运行项和链部署为REST API,使得它们可以通过网络进行调用;java怎么调用langchain呢?就通过langserve,将langchain应用包装成一个rest api,对外暴露服务。同时支持更高的并发,稳定性更好。
总结:langchain当中,最有前途的两个模块是:LangGraph、LangSmith
二、LangChain安装
1、相关环境安装
官网下载python进行安装,或者使用包管理工具(Anaconda)进行安装,通过Anaconda创建和管理虚拟环境,为项目提供独立的依赖空间,避免不同项目之间的依赖关系
1)conda的安装 --官网下载地址:https://www.anaconda.com/download/success 安装是勾选在用户环境变量的Path中添加相应路径
2)验证安装是否成功,cmd--输入 conda info
3)Conda常用命令
conda -help # 查看帮助 conda info # 查看 conda 信息 conda --version # 查看 conda 版本 conda update conda # 更新 Conda (慎用) conda clean -all # 清理不再需要的包 conda <指令> --help # 查看某一个指令的详细帮助 conda config --show # 查看 conda 的环境配置 conda clean -p # 清理没有用, 没有安装的包 conda clean -t # 清理 tarball conda clean --all # 清理所有包和 conda 的缓存文件
4)环境管理
|-- 创建conda环境
使用conda可以在电脑上创建很多套相互隔离的python环境,命令:
# 创建一个名为 myenv 的环境, python 版本为3.10 conda create --name myenv python=3.10 # --name 可以简写为 -n
|-- 切换conda环境
#语法 可以切换不同的环境 conda activate env_name #样例 切换到 my_env环境 conda activate my_env
|-- 如果要退出当前环境
conda env list 命令查看所有已创建的 Conda环境。# 查看当前电脑上所有的 conda环境
conda env list
# 语法
conda remove --name <env_name> --all
# 样例
conda remove --name learn --all
# 语法
conda create --name <new_evn_name> --clone <old_env_name>#样例
conda create --name myclone --clone myenv
一旦激活了环境,你就可以使用 conda和 pip在当前环境下安装你所需要的包。在conda环境中, 不建议使用 pip。
在激活的环境中安装包,例如安装NumPy:
conda install numpy
可以使用以下命令安装特定版本的包:
conda install numpy=1.18
更新某个包到最新版本:
conda update numpy
#更新所有包到最新版本 (慎用)
conda update --all
执行命令后,conda将会对版本进行比较并列出可以升级的版本。同时,也会告知用户其他相关包也会升级到相应版本。当较新的版本可以用于升级时,终端会显示Proceed([y]/n)? , 此时输入y 即可进行升级。
如果不再需要某个包,可以将其卸载:
conda remove numpy
查看当前环境中已安装的所有包:
conda list
查看当前虚拟环境中已安装的某个包的信息
conda list pip
搜索可用的包及其版本信息:
conda search package-name
2、安装langchain包
可以使用pip进行安装 -->pip install langchain
也可以使用conda进行安装
# 安装包(默认仓库) conda install langchain # 指定频道(如 conda-forge) conda install -c conda-forge langchain==0.3.7 # 更新包 conda update langchain # 卸载包 conda uninstall langchain # 查看已安装包 conda 安装的包显示频道,pip安装的显示 pypi conda list -c :是 --channel 的缩写,conda⽤于指定包的安装来源渠道。 conda-forge :该源⽐官⽅默认渠道更新更快、包更全 #建议: 二者最好不好混用,推荐先conda装基础包,后 pip补充的顺序。
二、大模型RAG&Agent开发知识
1、基于RAG架构的开发
RAG主要是为了解决大模型幻觉和知识冻结
何为RAG? Retrieval-Augmented Generation(检索增强生成)

细节图:

强调一下难点的步骤:

整体在开发过程中蓝色部分是难点:1、文件解析 2、文件切割 3、知识检索 4、知识重排序(Reranker)
Reranker的使用场景:
RAG有三处涉及到大模型的使用:
2、基于Agent架构的开发
利用LLM的推理决策能力,通过增强规划、记忆和工具调用的能力,构造一个能够独立思考逐步完成给定目标的智能体
Agent的架构:Agent = LLM +Memory+Tools+Planning+Action

智能体的核心要素:
3、大模型应用开发的四个场景
场景1:纯Prompt
场景2:Agent+Function Calling
场景3:RAG(Retrieval-Augmented Generation)
RAG:需要补充领域知识时使用
举例:考试答题时,到书上找相关内容,在结合题目组成答案

场景4:Fine-tuning(精调/微调)
举例:努力学习考试内容,长期记住,活学活用

特点:成本最高;在前面的方式解决不了问题的情况下,在使用
如何选择:
面对一个需求,如何开始,如何选择技术方案?下面是个常用思路:

三、LangChain核心组件
langchain的核心组件涉及到六大模块,这六大模块提供了一个全面且强大的框架,使开发者能够创建复杂,高效且用户友好的基于大模型的应用

核心组件1:Model I/O
model I/O:标准化各个大模型的输入和输出,包含输入模版,模型本身和格式化输出。 --->这个模块使用最多,也最简单

核心组件2:Chains
Chain:“链条”,用于将对个模块串联起来组成一个完整的流程,是langchain框架中最重要的模块。-->例如:一个Chain可能包括一个Prompt模版、一个语言模型和一个输出解析器,他们一起工作以处理用户输入,生成响应并处理输出。
常见的Chain类型:
核心组件3:Memory
Memory:记忆模块,用户保存对话历史或上下文信息,以便在后续对话中使用
常见的Memory类型:
核心组件4:Agent
Agents对应智能体,是langchain的高阶能力,ta可以自主选择工具并规划执行步骤
关键组成部分:
核心组件5:Retrieval
Retrieval:对应着RAG,检索外部数据,然后在执行生成步骤时将其传递到LLM。步骤包括文档加载、切割、Embedding等

上图绿色部分是让入库存储前的操作
核心组件6:Callbacks
Callbacks:回调机制,允许连接到LLM应用程序的各个阶段,可以监控和分析LangChain的运行情况,比如日志记录、监控、流传输等等,以优化性能
回调函数允许我们在LLM的各个阶段使用各种各样的“钩子”,从而达实现日志的记录、监控以及流式传输等功能
小结:

在这个基础上,其它组件要么是它们的辅助(比如:向量数据库的分块和嵌入),要么只是完成常规应用程序的任务
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。