当前位置:   article > 正文

LangChain:大模型框架的深度解析与应用探索_langchange 大模型

langchange 大模型

目录

LangChain总结

面向大模型的开发框架(SDK)

基于软件工程思维,要更关注接口变更

 AGI 时代软件工程的一个探索和原型,迭代速度快

与其他开发框架的对比

LangChain 的核心组件

模型 I/O 封装

数据连接封装

记忆封装

架构封装

Callbacks

主要用途

解决Chain的问题

构成智能体(Agent)

相关文档(以 Python 版为例)

主要几大核心文档

小试牛刀

安装最新LangChain依赖

OpenAI vs Langchain

多轮对话实现

OpenAI

Langchian

国产模型调用

OpenAi

Langchain


        在数字化的时代浪潮中,人工智能技术正以前所未有的速度蓬勃发展,而大模型作为其中的翘楚,以生成式对话技术逐渐成为推动行业乃至整个社会进步的核心力量。再近一点来说,在公司,不少产品都戴上了人工智能的帽子,各种高大上人工对话界面,作为一个工作7年的老程序员来说,一种压力感扑面而来,这使得我不得不去接受新的东西,在学习和使用Prompt、function-call和Rag后发现了一个对AI初学者极其友好的框架——Langchain,帮助我更好更快的使用大模型。

        在接下来的文章里,我将带着大家来分析和感受LangChain的发展和应用。通过深入了解,我们可以更好地利用LangChain的优势和避免它的不足之处。

LangChain总结

面向大模型的开发框架(SDK)

        LangChain是一套被设计成易于使用的软件工具集,专门为程序员提供了使用大型模型的能力。它的主要目的是帮助程序员减少开发工作量,并且将底层的复杂和重复性工作封装起来。使用LangChain,你可以简单方便地利用这些封装好的功能来开发软件。这个框架的初衷就是让你能够更加高效地开发,并且更加轻松地使用大型模型的能力。

基于软件工程思维,要更关注接口变更

        使用这套框架确实需要一定的代码能力,因为这个框架的设计本质是基于软件工程思路的,对编程基础有一定要求。另外,大模型技术和辅助工具正处于一个初级阶段,发展时间并不长,大模型诞生也就好一年多的时间。因此,在学习这些工具时,我们最好不要过于专注于每个接口的具体用法,例如像前端框架vue对于这个功能怎么实现,这类工具不能这么学,因为大模型技术目前还处于初级阶段,未来仍会有很多变化。我们更应该关注这些框架的设计思路和模块结构,因为它们的模块大部分可能不会改变,只是接口可能会有一些细微的调整。更应该关注它的设计思路在你的实际工作中能否得到参考,通过这些思考我到底是直接拿它来用,还是参考它来设计,还是完全做一个更新的设计,这些都会在实际开发中大有裨益。

 AGI 时代软件工程的一个探索和原型,迭代速度快

        LangChain的迭代速度明显快于Semantic Kernel,几乎每天都有一个新版本发布。LangChain的发展是一个学习和探索的过程,在早期存在许多不成熟的接口,以及一些设计过于复杂的函数或流程。但是通过这么多次的迭代,几乎所有的问题都得到了修复,可以说它的成熟度是与日俱增的,目前来看,LangChain已经具备了一定的可用性的。一些模块在设计上非常成熟,具备拿来就用的,甚至在生产机使用时没问题的,而有些模块设计的还是很粗糙,例如第三方功能实现的一些模块,不建议使用的。还有一些模块在设计上没有问题,但在实际工作中可能并不是必需的,完全取决于你的需求。接下来我将带着大家来分析和感受。

与其他开发框架的对比

数据来源:GitHub Star History

        Github的平行树的对比,LangChain的欢迎程度明显还是遥遥领先的,之所以会形成这个情况,是因为LangChain最早期设计是比较简单易懂,不像Semantic-kernel是有一套宏大的理念导致整个抽象程度太高,导致它的可读性或感受上很晦涩。所以Langchain比较方便大家知道怎么用,拿来就知道好不好用,都能很直接的评估出来。

LangChain 的核心组件

模型 I/O 封装

  • LLMs:大语言模型,因为它对模型、检索都做了统一的封装,调用llama或其他大模型实现本地的Rag会更加简单。
  • Chat Models:一般基于 LLMs,但按对话结构重新封装,
  • PromptTemple:提示词模板,对提示词模板的操作给以了封装。
  • OutputParser:解析输出,模型的输出结果,给了不同的解析工具,这个是Semantic-kernel所没有的,也是它方便使用的功能之一。

数据连接封装

  • Document Loaders:如何加载各种格式文档,集结了各种格式文件的加载器。
  • Document Transformers:封装了对文档的常用操作工具,如:split, filter, translate, extract metadata, etc
  • Text Embedding Models:对不同的embedding模型做了统一的封装,不管你底层是什么,基本都是统一的接口都可以去使用。然后对各种各样的三方的向量数据库做了封装,也就是说你不用太关心,背后向量数据库到底是啥,通过Langchain的统一的接口去调用。文本向量化表示,用于检索等操作。
  • Verctorstores: (面向检索的)向量的存储,就是将向量数据库的封装后转成一个检索器
  • Retrievers: 向量的检索,一个用于检索的工具。

记忆封装

  • Memory:这里不是物理内存,从文本的角度,可以理解为“上文”、“历史记录”或者说“记忆力”的管理。对上下文的管理做了一层封装或赋予了一组工具。

架构封装

        最核心的是在架构上做了一层封装,包括了调用一系列组合的pipeline。

  • Chain:实现一个功能或者一系列顺序功能组合,pipeline顺序调用。
  • Agent:智能体架构的封装,根据用户输入,自动规划执行步骤,自动选择每步需要的工具,最终完成用户指定的功能
    • Tools:调用外部功能的函数,例如:调 google 搜索、文件 I/O、Linux Shell 等等
    • Toolkits:操作某软件的一组工具集,例如:操作 DB、操作 Gmail 等等

Callbacks

      他每个模块内部到底发生了什么,它都给了你一些Callback事件。具体可参考官网,里面有更为详细的讲解。

        可参考官网:https://www.wpsshop.cn/w/秋刀鱼在做梦/article/detail/812665

推荐阅读
相关标签
  

闽ICP备14008679号