本文来源公众号“CVHub”,仅用于学术分享,侵权删,干货满满。
原文链接:初识langchain
1 什么是langchain
langchain[1]是一个用于构建LLM-Based应用的框架,提供以下能力:
-
上下文感知:可以为LLM链接上下文(如知识库、prompt等)
-
推理:通过大模型的能力进行推理(推理、决策)
用计算机类比的话,在这套框架内,LLM扮演的是CPU的角色,langchain扮演的是主板,为其提供内存、磁盘等设备,使其完成更多复杂的功能。
langchain架构图
从架构图中可以看到,langchain提供了从协议、开发、部署到观测的一条龙服务。不过我们平时自己玩玩的话,主要用到的只有图中的LangChain、LangChain-Community和Langchain-Core部分。
2 langchain 四大模块
主要有Model I/O、Retrieval、Agents、Chains四个部分组成。
2.1 Chains
Chains可以说是最重要的模块了(不然你猜为啥它叫langchain)。Chains 顾名思义,它的作用是将不同的组件和功能串联起来,形成一个完整的处理流程,从而解决更复杂或多步骤的问题。
举个例子,我现在需要构建一个自动写文章的Agent,我们首先就会选择拆解问题然后再去解决:找素材、写文章。我们可以分别构建两个链去完成这个事情,然后再将其串起来完成整个流程。并且链已经封装好了一个能力,后续其他场景假如需要使用到查找素材的能力,直接就可以复用现有的链。
一个老生常谈的问题:Chains和Agents的区别是什么?我的理解,Chains提供的是解决特定子问题的能力,Agents是决策何时、如何适用Chains
2.2 Model I/O
Model I/O
这个模块主要包含了与LLM输入输出相关的实现。包括与各种大模型的交互接口、数据格式的formator。同时,也能用于chain中不同Runable对象之间数据的传输过程中的处理。
2.3 Retrieval
Retrieval
主要用于 Retrieval Augmented Generation(RAG) 。可以把这个模块理解为大模型应用的内存+数据库。通过对文本拆条+embedding的方式存储到向量数据库中,利用查询出的相关知识用于增强回答的质量,比较适合需要大模型理解特定领域知识的场景适用。
2.4 Agents
推荐看下这篇文章LLM Powered Autonomous Agents[2],对Agent系统又比较详细的阐述。Agents模块主要解决的是如何让LLM理解问题并能够正确地选择使用哪些工具、流程来解决一个复杂问题。其中就包括了如何根据观察结果选择和执行动作,并重复此过程直到完成任务。主要包含以下子模块:
-
Agents: 负责决策的执行和推理(比如ReAct)
-
Tools:用于执行特定任务的工具(比如一个查询天气的函数可以封装成一个tool)
3 写在最后
总的来说,Langchain就像是大语言模型的乐高积木。想象一下,如果LLM是大脑的话,Langchain就像是让大脑能跑起来的双脚、手臂还有眼睛,让一切变得可能。通过组合不同的Chains和Tools,可以构建出各种有趣的东西,感觉这才是真正的低代码平台...
目前也已经有不少公司在做Agents平台了,比如字节出的Coze,笔者已经玩了好一段时间了,感觉以后没有代码基础都能够轻松构造出一个自己的LLM 应用,我不会真的要失业了吧~哈哈哈
4 References
[1]: https://github.com/langchain-ai/langchain
[2]: https://lilianweng.github.io/posts/2023-06-23-agent/
THE END!
文章结束,感谢阅读。您的点赞,收藏,评论是我继续更新的动力。大家有推荐的公众号可以评论区留言,共同学习,一起进步。