想要构建自己的Agent,你一定无法避免和LangChain打交道。
所以这篇文章将给大家介绍一下LangChain,知道它是什么,怎么用,基于LangChain能做了,并且它有什么问题。
LangChain的文字资料和视频资料挺多的,我就不重复了,我会在文末添加相关的资料,有兴趣的朋友自行学习。
我相信很多人是因为不了解LangChain,不了解Agent,才来看我的文章,而且大部分人时间也很宝贵,没有这么时间花几天时间来系统化学习,而且主要也不确定学习LangChain对自己的工作有没有帮助。
所以我尽量用最简单的语言把事情说情况。
我们要构建一个自己的AI系统(Agent)
假设我们要构建一个自己的问答系统,问答系统需要使用我们私有的数据库。
我们应该怎么做,我们可以先考虑一个成本最低的POC方案。
- 使用最强的大语言模型ChatGPT的openapi
- 自己用Python写一个代码,基于openai为基础,然后自己做知识库问答,自己多文件切片和向量化,自己做RAG
思路是这个思路,但是全都自己写,除非你是大牛,还是有些吃力的,而且随着项目的复杂度增加,整个项目的架构将会非常关键。
这时候可能有杠精要说,老师你就用GPTs或其他的一些Agent平台就可以无代码完成一个自己知识库的问答系统了。
没错,但是这里只是想大家都懂的问答系统作为案例进行举例,因为你用友LangChain可以构建比这个复杂的多的系统,比如你可以基于LangChain构建自己的Agent平台。
这里给出一个例子,使用可以本地部署的大语言模型ChatGLM-6b,和本地知识库test.txt,简单的十几行代码就完成了我们要做的问答系统,分别是加载文件、文件内容切割、向量化,然后根据向量化的内容和Query进行Prompt组装,就是这么简单。
当然引入LangChain也有带来很多副作用,开发过低代码的朋友肯定知道,虽然使用图形化的方式可以降低系统开发的复杂度,但是同时也降低了系统的性能,原来最精简的代码只要3分钟的执行时长可能会被拉长到数倍。
LangChain核心功能
好了,有了信心之后,我们学习一下LangChain有哪些能力。
模板 PromptTemplate
1from langchain.prompts import PromptTemplate 2 3prompt = PromptTemplate( 4 input_variables=["product"], 5 template="What is a good name for a company that makes {product}?", 6) 7print(prompt.format(product="colorful socks"))
输出:What is a good name for a company that makes colorful socks?
通过PromptTempla