作为LLM(大模型)开发框架的宠儿,LangChAIn在短短几年内迅速崛起,成为开发者们不可或缺的工具。
本文将带你探讨LangChain和LangChainHub的发展历程。
1. LLM开发框架的宠儿这两年人工智能领域发展迅猛,LLM(大模型)的出现功不可没。
LLM的发展将整个人工智能领域往前推进了一大步,将人工智能这道狭窄的门撑宽了不少,让我们这些平凡的普通人也有机会挤进人工智能的发展中。
普通开发者在人工智能领域能做什么呢?目前可以发力的领域是:开发基于LLM的App。
开发LLM的App有多种实现方式,LangChain是比较流行的一种。
伴随着人工智能的发展,这两年LangChain发展迅猛,GitHub上的star数飙升,近期更是成功融资2亿美刀,足见其受欢迎程度。
早期的LangChain只是作为一个工具或者胶水,集成了多个LLM和多种外部组件(比如记忆、检索、向量数据库、工具集等等),方便开发者快速开发基于LLM的App。
我估计,当时LangChain的创始人对LangChain的定位也不是很清晰,只是觉得AI应用开发是个不错的风口,先搞了再说,这也很符合创业和商业逻辑。
2. 现在的LangChain随着LLM的发展,一切逐步走向确定性(业内一致认为LLM App是未来的方向),而且可能伴随着商业化的要求,LangChain对自己的定位发生了一些改变。
早期的LangChain可能只是想抓住一波LLM的风口,对于自身的定位也不是很清晰,随着LLM领域更多的发力点在构建基于LLM的App上,LangChain也赶紧调整了自身的定位。
不再定位在:胶水、工具集合等等理念了。
更多的强调自己是:构建LLM App的最大社区,基于LangChain可以开发出可推理的应用程序。
调整了定位,生态也自然做了调整,同时软件架构也随之变化,比如:软件包上做了很多重构和重组,核心能力 和 周边社区生态 的边界越发清晰。
同时,还加入了LangSmith用于监控LLM应用,还有LangServe用于部署LLM应用。
一切的步伐都在朝着商业化发展。
至此LangChain调整为以下几个核心模块:LangChain-Core:抽象LangChain的内核 和 LangChain 表达式语言。
LangChain-Community:集成的各种第三方部件。
LangChain:构成LLM应用程序需要的 链、代理和检索等。
LangSmith:开发者平台,可让 调试、测试、评估和监控 基于任何 LLM 框架上构建的链,并与 LangChain 无缝集成。
LangServe:用于将 LangChain 的应用 部署为 REST API。
这几点我们从官网的架构图清晰可见。
也可以认为此时的LangChain变成了一个SAAS化的开发者平台。
而它提供的组件、工具、监控、部署等生态,也都是为了让开发者方便的开发出LLM App,然后部署到这个平台上。
LangChain是一个优秀的LLM开源框架,也无法避免走上常规的开源软件商业化的套路。
3. 早期的LangChainHubLangChain早期推出的各种组件中LangChainHub是其中一个比较有意思的项目。
早期LangChainHub对自己的定位如下:LangChainHub 受 Hugging Face Hub 启发,是一个用于发现和提交常用的 提示、链、代理等的平台。
早期,LangChainHub以prompt集合为起点,然后很快扩展到 链 和 代理。
这个定位我们从之前的LangChainHub在github仓库上的目录可见一斑。
此时的LangChainHub 可以理解为LangChain 工具包 或者说 组件中心,里面提供了高质量的组件方便开发者使用。
确确实实是一个分享和探索prompt、链 和Agent的地方。
比如,我们要基于ReAct机制实现一个Agent,如果自己写一堆prompt(提示词)那就太费劲了。
此时,在LangChainHub就有许多现成可用的prompt模板,使用简单又省事,所以LangChainHub迅速流行开。
4. 现在的LangChainHub那现在的LangChainHub在新的LangChain架构图的哪里呢?我也觉得挺奇怪的,LangChainHub也是算生态里较为重要的版块,架构图里居然没提。
后来发现,LangChainHub被放到了LangSmith里。
这个从新版的官方文档也是清晰可见。
这也算合情合理吧,毕竟LangSmith是一个开发者平台,用于调试、测试、评估、监控基于LLM框架的链,在这个平台上,可以使用和创建prompt。
早期的时候LangChainHub有prompt、Chain、Agent,现在也只有prompt了。
我个人对LangChainHub的定位多少觉得有些悲凉了,LangChainHub沦为了prompt模板仓库。
我认为这背后存在两种可能的原因:可能是商业化的要求吧,将常用的prompt模板挪到开发者平台LangSmith里,毕竟LangSmith是有各种付费计划的。
可能是官方对于LangChainHub里的内容开始做收缩,聚焦于prompt,毕竟prompt比较独立 而且易于交付。
而Chains 和 Agents 相对来说,交付难度高一些,变动性也低,所以官方直接将 Chains 和 Agents 沉淀到自己的核心库里,这样也能保证Chains 和 Agents 的质量,保证自己的口碑。
LangChainHub真的是始于prompt,终于prompt!!!当然啦,以后的LangChainHub怎么发展就不得而知了。
庆幸的是,我们大部分场景还是使用prompt模板居多,此时的LangChainHub里依旧能找到大咖们贡献的复杂常用的prompt模板,降低了我们使用ReAct、Tool的门槛。
5. LangChainHub的使用下面我们通过一个示例,来看看如何使用LangChainHub。
5.1. 拆解LangChainHub的prompt比如:要实现一个reAct机制,如果我们自己写提示词,那太复杂了。
但是LangChainHub上已经有大佬定义好了相关提示词。
比如:structured-chat-agent(https://smith.langchain.com/hub/hwchase17/structured-chat-agent),提示词写的还是有点复杂的,大致意思就是:告诉LLM,它可以使用一堆什么格式的工具,然后先推理,选择合适的工具,执行之后,进行观察,观察完了之后,继续推理,如果有答案了,就回复用户。
具体内容如下:5.2. 使用LangChainHub使用LangChainHub上的prompt就2步:导入LangChainHub库从Hub上拉取对应的提示词接下来举个例子,比如,LLM在直接计算浮点数加减时会出现错误,我要做一个基于reAct框架的AI Agent,让这个Agent帮我精准计算浮点数。
这里使用LangChainHub里的structured-chat-agent来简化我的流程。
具体代码如下:from langchain import hubfrom langchain.agents import create_structured_chat_agent, AgentExecutor, toolfrom langchain.memory import ConversationBufferMemoryfrom langchain.schema import HumanMessagefrom langchain.tools import baseToolfrom langchain_openai import Chatopenaimodel = ChatOpenAI( model="gpt-3.5-turbo", openai_api_key="sk-xnAKVC6V0LzBwqGK9fE59cFcBc3f40DcBf96C135112dFb63", openai_api_base="https://api.aigc369.com/v1",)# 定义工具class SumNumberTool(baseTool): name = "数字相加计算工具" description = "当你被要求计算2个数字相加时,使用此工具" def _run(self, a, b): return a["title"] + b["title"]# 加入到工具合集tools = [SumNumberTool()]# 使用reAct的提示词prompt = hub.pull("hwchase17/structured-chat-agent")# 创建Agentagent = create_structured_chat_agent(llm=model, tools=tools, prompt=prompt)# 创建记忆组件memory = ConversationBufferMemory(memory_key="chat_history", return_messages=True)# 创建Agent执行器agent_executor = AgentExecutor.from_agent_and_tools( agent=agent, tools=tools, memory=memory, verbose=True, handle_parsing_errors=True)agent_executor.invoke({"input": "你帮我算下 3.941592623412424 + 4.3434532535353的结果"})6. 总结本文主要聊了LangChain和LangChainHub的发展变迁,还介绍了LangChainHub的使用,希望对你有帮助!=====>>>>>> 关于我 <<<<<<=====本篇完结!欢迎点赞 关注 收藏!!!原文链接:https://mp.weixin.qq.com/s/lpv3q4y34m1VSmR0AEN6Rw