大数跨境

Langchain1.x的设计哲学

Langchain1.x的设计哲学 AI探索时代
2026-01-18
1
导读:框架的发展存在其局限性,因此我们千万不能缚手缚脚,钻牛角尖

 框架的发展存在其局限性,因此我们千万不能缚手缚脚,钻牛角尖。



学习一个框架,学会怎么使用只是第一步,更重要的是要理解其背后的设计哲学,这样才能更好的使用框架,理解其背后的原理,并吸收其好的设计思想并融入到自己的系统中。




Langchain1.x的设计哲学




Langchain顾名思义,其核心在于chain也就是链,其原理是把多个环节通过一条链串联起来执行,具体来说就是一个sequence或者pipeline


在老版本的Langchain中,链式调用是通过LLMChain对象实现的,这种方式虽然能实现链式的思想,但由于其是基于指令式编程的思想,使其扩展性不太好,对输入和输出的格式有特定的要求。


而在0.3版本之后,Langchain引入了管道符|和runnable的思想,也就是LCEL表达式,其本质其实还是链式调用的思想,但其在实现上却有了很大的优化;相比于传统的LLMChain,runnable的灵活性更强,扩展性也更强,而且只需要使用管道符串联起来即可,操作方便。


因此,其在生成式模型应用中,具有良好的表现,如下代码:

chain = prompt | llm | output_parser


但是在langchain1.x版本中,我们发现在官方文档中很难找到LCEL或者管道符的说明,原因是Langchain1.x把runnable内化到整个Langchain体系中,其好像不在了,但又好像无处不在。


在Langchain1.x中,整体被分为三个类型,Langchain,Langgraph和deepagents。


其区别是Langchain是对原生接口的封装,使得开发更加简单方便,优点是灵活性强,缺点是学习曲线高,特别是在Langchain1.x之后,面对传统的生成式任务,其学习难度直线上升。


而Langgraph是为了复杂智能体场景开发的框架,其在复杂应用中有更好的设计理念和实现方法;但同样不易于理解。


至于deepagents就是一个高度封装的智能体开发框架,提供了在复杂场景中开箱即用的脚手架;但同样,由于其高度封装的特性,其在快速测试和开发阶段很有用。但也正因此,其灵活性不足,不利用定制扩展。


当然,虽然Langchain家族针对不同的场景开发了不同的框架,但并不代表这三者是完全独立的;而应该说它们是一个递进的过程,想快速开发就用deepagents,想学习就用Langchain原生开发。


并且并不是说Langchain专门针对智能体开发进行了优化和封装,就不能进行简单生成式任务开发了;简单的多轮对话功能,使用runnable可以实现,使用Langchain的create_agent也可以实现,同样使用Langgraph也可以实现。只不过,使用runnable做起来最简单,也更容易理解。


总之,从技术发展的角度来看,大模型应用场景和技术还在快速迭代,同样Langchain版本也在快速迭代,其设计理念有时并不完全符合我们的业务需求;因此,在当前大模型应用快速发展的时刻,我们不应该被框架限制住手脚,应该理解其底层逻辑,在框架的基础上完善我们的系统,查漏补缺。








【声明】内容源于网络
0
0
AI探索时代
专注AI工程化落地,让你的技术不再纸上谈兵
内容 0
粉丝 0
AI探索时代 专注AI工程化落地,让你的技术不再纸上谈兵
总阅读0
粉丝0
内容0