LangChain和Hub的前世今生

作为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. 早期的LangChainHub

LangChain早期推出的各种组件中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-agentLangSmith),提示词写的还是有点复杂的,大致意思就是:告诉LLM,它可以使用一堆什么格式的工具,然后先推理,选择合适的工具,执行之后,进行观察,观察完了之后,继续推理,如果有答案了,就回复用户。

具体内容如下:

5.2. 使用LangChainHub

使用LangChainHub上的Prompt就2步:

  1. 导入LangChainHub库
  2. 从Hub上拉取对应的提示词

接下来举个例子,比如,LLM在直接计算浮点数加减时会出现错误,我要做一个基于reAct框架的AI Agent,让这个Agent帮我精准计算浮点数。这里使用LangChainHub里的structured-chat-agent来简化我的流程。

具体代码如下:

from langchain import hub
from langchain.agents import create_structured_chat_agent, AgentExecutor, tool
from langchain.memory import ConversationBufferMemory
from langchain.schema import HumanMessage
from langchain.tools import BaseTool
from langchain_openai import ChatOpenAI

model = ChatOpenAI(
    model="gpt-3.5-turbo",
    openai_api_key="sk-xxxxxxx",
    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")

# 创建Agent
agent = 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的使用,希望对你有帮助!

=====>>>>>> 关于我 <<<<<<=====

本篇完结!欢迎点赞 关注 收藏!!!

原文链接:LangChain和Hub的前世今生

  • 20
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员半支烟

你的鼓励是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值