首页 > 自考资讯 > 自考知识

前世今生真的存在吗,langchain和hub的前世今生哪个好

头条共创 2024-07-04

作为LLM(Large Model)开发框架的宠儿,浪链在短短几年内迅速崛起,成为开发者必备的工具。本文介绍了LangChain和LangChainHub的开发过程。

1. LLM开发框架的宠儿

人工智能领域这两年发展迅速,LLM(Large Models)的出现必不可少。 LLM的发展极大地推进了整个人工智能领域的发展,拓宽了人工智能的窄门,让我们这样的普通人现在有机会进入人工智能的发展。

普通开发人员在人工智能领域可以做什么?我目前从事的领域是基于我的法学硕士开发应用程序。开发LLM应用程序的实现方法有很多,但LangChain是最流行的一种。

随着人工智能的发展,浪链近两年发展迅速,GitHub star数暴涨,公司近期成功融资2亿美元,可见其受欢迎程度。

最初,LangChain 是一种将多个LLM 与各种外部组件(内存、搜索、向量数据库、工具集等)集成在一起的工具或粘合剂,使开发人员能够快速开发基于LLM 的应用程序。

我想当时浪链的创始人对浪链的定位还不是很清楚,他们只是觉得开发AI应用是一条不错的路,而且这也符合创业和商业的逻辑。

2. 现在的LangChain

随着LLM的发展,一切都在逐渐走向确定性(业界一致认为LLM应用是未来的方向),或许满足了商业化的要求,因此浪链的定位发生了一些变化。

由于LLM领域的工作重点是构建基于LLM的应用程序,LangChain也在快速调整其定位。

它不再被视为粘合剂或工具集合等概念。它是构建LLM应用程序的最大社区,进一步凸显了基于LangChain开发推理应用程序的能力。

重新定位之后,软件架构自然也发生了变化。例如,软件包以及核心和外围功能之间的界限已经发生了显着变化。社区生态日趋清晰。

同时还添加了LangSmith来监控LLM应用程序,并使用LangServe来部署LLM应用程序。一切都在走向商业化。

目前,浪链已调优了以下核心模块:

LangChain-Core:抽象LangChain核心和LangChain表达语言。 LangChain-Community:集成各种第三方组件。 LangChain:配置LLM应用程序所需的链、代理和检索。 LangSmith:基于LLM框架构建的开发者平台,与LangChain无缝集成,实现链调试、测试、评估和监控。 LangServe:用于将LangChain应用程序部署为REST API。这些点从官网的架构图上都清晰可见。 LangChain此时可以被认为是一个SAAS开发者平台。它提供的组件、工具、监控、部署等生态都是为了帮助开发者在这个平台上轻松开发和部署LLM应用程序。

虽然LangChain是一个很棒的LLM开源框架,但它不可避免地遵循了传统开源软件商业化的套路。

de67045904834c84a4d6f4fe23222bb7~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1720696134&x-signature=%2BimC2QjeD2bKoVl3yj8ZFhOsyYY%3D

3. 早期的LangChainHub

在浪链早期推出的各种组件中,LangChainHub是最令人感兴趣的项目之一。

LangChainHub早期的定位是这样的。受到Hugging Face Hub 的启发,LangChainHub 是一个用于发现和提交常用提示、链、代理等的平台。早期,LangChainHub以Prompt Collections起步,并迅速扩展到链和代理领域。

这个位置可以从github仓库上LangChainHub之前的目录看到。

9b6fa0701eef4585b147e90c884dd09a~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1720696134&x-signature=0NJ108B7q23f7FR7O40uKrP7Raw%3D 目前,LangChainHub可以理解为一个LangChain工具包或组件中心,提供开发者可以使用的高质量组件。事实上,它是一个分享和探索提示、链条和代理的地方。

比如你想实现一个基于reAct机制的Agent,自己写大量的提示会非常繁琐。目前,LangChainHub拥有大量即用型提示模板,使用起来简单无忧,因此LangChainHub很快就流行了起来。

4. 现在的LangChainHub

现在的LangChainHub在新的LangChain架构图中在哪里?我也觉得很奇怪,LangChainHub也是生态系统中比较重要的一部分,但是在架构图中却没有提到。

后来发现LangChainHub位于LangSmith。这个新版本的官方文档也清晰可见。

这并不奇怪。 LangSmith是一个基于LLM框架的用于调试、测试、评估和监控链的开发者平台,您可以在上面使用和创建提示。

64fc0ddd6d65443e9d6230a7b623606b~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1720696134&x-signature=zD0tL6cfwN0HFIy4IbtyEgjbFs4%3D 早期LangChainHub有提示、有链、有代理,现在只有提示。就我个人而言,我对LangChainHub的地位成为Prompt的模板仓库有点失望。

我认为这背后可能有两个原因。

或许是出于商业化的需求,常用的Prompt模板将被迁移到开发者平台LangSmith上。事实证明,LangSmith 有多种付费计划。官方可能已经减少了LangChainHub的内容,开始关注Prompt。 毕竟Prompt相对独立且易于分发。相对而言,链和代理的发行难度更大,稳定性也更差,所以官方直接将其注册到自己的核心库中。这使我们能够确保连锁店和代理商的质量,并确保我们自己的声誉。 LangChainHub实际上以提示开始和结束。当然,LangChainHub未来会如何发展还不清楚。

幸运的是,大多数场景我们仍然使用提示模板。 LangChainHub上仍然保留了领先公司提供的复杂且常用的提示模板,使ReAct和工具的使用更加方便。

5. LangChainHub的使用

我们以LangChainHub为例来看看如何使用。

5.1. 拆解LangChainHub的Prompt

示例:自己创建提示词来实现reAct机制太复杂。不过,LangChainHub上的一些专家已经定义了相关的提示词。

示例:Structured-chat-agent(https://smith.langchain.com/hub/hwchase17/structurd-chat-agent),提示中的话写法有点复杂,但大体意思是:可以用于LLM用告诉工具的格式,然后推理选择合适的工具,执行后继续观察继续推理,有答案就回复用户。

具体细节如下。

f4c858d8a2624783bb65a6a49d64e5da~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1720696134&x-signature=aVD50mVjKsdKYUwoCyAL0%2Bx8f7E%3D

5.2. 使用LangChainHub

使用LangChainHub的提示,只需两步:

导入LangChainHub库并从Hub中获取相应的提示词。例如浮点数的加减法,直接计算就会出现错误。使用reAct框架让该代理准确计算浮点数。这里,我们使用LangChainHub的结构化聊天代理来简化流程。

具体代码如下。

from langchain import Hubfrom langchain.agents import create_structed_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-xnAKVC6V0L ) zBw qGK9fE59cFcBc3f40DcBf96C135112dFb63 ', openai_api_base='https://api.aigc369.com/v1',)# 定义工具类SumNumberTool(BaseTool): name='数字加法计算工具' description='当要求两个数字相加时使用。 tool def _run(self, a, b): return a['title'] + b['title']# 添加到工具集合tools=[SumNumberTool()]# reAct=Hub 提示使用文字提示。 pull('hwchase17/structurd-chat-agent')#创建agent=create_structed_chat_agent(llm=model,tools=tools,prompt=prompt)#创建内存组件Memory=ConversationBufferMemory(memory_key='chat_history',return_messages=True)#创建代理执行请花3分钟)

6. 总结

本文主要讲解LangChain和LangChainHub的发展变化,同时也介绍了如何使用LangChainHub。

=====关于我=====

这篇文章就完结了!欢迎点赞、关注、收藏!

原文链接:https://mp.weixin.qq.com/s/lpv3q4y34m1VSmR0AEN6Rw

290c0748799e4e8b88d8b3f24f77ba58~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1720696134&x-signature=C7TZ6BYr3pUmONK8Aam%2F4e15ayU%3D

版权声明:本文由今日头条转载,如有侵犯您的版权,请联系本站编辑删除。

猜你喜欢