LangChain和Hub的前世今生

langchain,hub · 浏览次数 : 0

小编点评

LangChain和LangChainHub作为LLM(大型语言模型)开发框架的重要组成部分,近年来得到了广泛关注和发展。LangChain自诞生以来,经历了从一个简单的工具集成为一个功能丰富的开源平台,再到商业化生态的转变。 **1. LLM开发框架的宠儿** LangChain最初作为一个集成多个LLM和外部组件的工具,帮助开发者快速构建基于LLM的应用。随着LLM领域的快速发展,LangChain逐渐明确了自身定位,致力于构建基于LLM的App,并提供一套完整的开发工具和生态。 **2. 现在的LangChain** 如今的LangChain已经从一个简单的工具集发展成为了一个专注于构建LLM App的SaaS平台。它提供了LangChain-Core、LangChain-Community、LangChain和LangSmith等多个核心模块,以满足不同开发者的需求。此外,LangChain还强调了监控和部署的重要性,推出了LangServe用于部署LLM应用。 **3. 早期的LangChainHub** LangChainHub作为早期推出的组件之一,旨在提供一个发现和提交常用提示、链、代理的平台。它不仅方便了开发者使用,还汇聚了大量高质量的资源,成为了一个受欢迎的组件中心。 **4. 现在的LangChainHub** 尽管LangChainHub在最新的官方文档中被归类到了LangSmith中,但它仍然是一个独立的平台,提供了丰富的Prompt模板供开发者使用。不过,从LangChain的发展趋势来看,LangChainHub可能会逐渐被整合到LangChain的核心生态中。 **5. LangChainHub的使用** 本文通过一个示例,展示了如何使用LangChainHub来简化开发流程。通过导入LangChainHub库并使用其中的Prompt模板,开发者可以轻松地创建一个基于reAct框架的AI Agent,从而提高开发效率。 总之,LangChain和LangChainHub作为LLM开发的重要工具,经历了不断发展和完善的过程。它们不仅提供了丰富的功能和资源,还为开发者提供了一个便捷的开发环境。随着LLM领域的持续发展,我们有理由相信这两个平台将继续发挥重要作用。

正文

作为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-agenthttps://smith.langchain.com/hub/hwchase17/structured-chat-agent),提示词写的还是有点复杂的,大致意思就是:告诉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-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")

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

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

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

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

与LangChain和Hub的前世今生相似的内容:

LangChain和Hub的前世今生

作为LLM(大模型)开发框架的宠儿,LangChain在短短几年内迅速崛起,成为开发者们不可或缺的工具。本文将带你探讨LangChain和LangChainHub的发展历程。

一文教你基于LangChain和ChatGLM3搭建本地知识库问答

借助ModelArts提供的AI开发能力,实现基于LangChain+ChatGLM3的本地知识库问答,通过具体案例让开发者更加清晰的了解大模型AI应用开发过程。

使用 MRKL 系统跨越神经符号鸿沟

本文展示了自然语言处理的下一步发展——模块化推理、知识和语言( the Modular Reasoning, Knowledge and Language,简称为MRKL)系统以及LangChain和Semantic Kernel的实现。 MRKL 系统包括一个或多个语言模型,并通过外部知识源和符号

Hugging Face x LangChain: 全新 LangChain 合作伙伴包

我们很高兴官宣发布 langchain_huggingface ,这是一个由 Hugging Face 和 LangChain 共同维护的 LangChain 合作伙伴包。这个新的 Python 包旨在将 Hugging Face 最新功能引入 LangChain 并保持同步。 源自社区,服务社区

使用SemanticKernel 进行智能应用开发(2023-10更新)

以OpenAI 的ChatGPT 所掀起的GenAI 快速创新浪潮,其中连接LLM 和 应用之间的桥梁的两大开源项目:LangChain[1]和Semantic Kernel[2] ,在半年前写过一篇文章 LangChain vs Semantic Kernel [3],这半年以来Semantic

5分钟明白LangChain 的输出解析器和链

本文介绍 LangChain 的输出解析器OutputParser的使用,和基于LangChain的LCEL构建链。 1. 输出解析器OutputParser 1.1、为什么需要OutputParser 常规的使用LangChain构建LLM应用的流程是:Prompt 输入、调用LLM 、LLM输出

Langchain-Chatchat项目:3-Langchain计算器工具Agent思路和实现

本文主要讨论Langchain-Chatchat项目中自定义Agent问答的思路和实现。以"计算器工具"为例,简单理解就是通过LLM识别应该使用的工具类型,然后交给相应的工具(也是LLM模型)来解决问题。一个LLM模型可以充当不同的角色,要把结构化的Prompt模板写好,充分利用LLM的Zero/O

大语言模型的开发利器langchain

[toc] # 简介 最近随着chatgpt的兴起,人工智能和大语言模型又再次进入了人们的视野,不同的是这一次像是来真的,各大公司都在拼命投入,希望能在未来的AI赛道上占有一席之地。因为AI需要大规模的算力,尤其是对于大语言模型来说。大规模的算力就意味着需要大量金钱的投入。那么对于小公司或者个人来说

Langchain-Chatchat项目:1.2-Baichuan2项目整体介绍

由百川智能推出的新一代开源大语言模型,采用2.6万亿Tokens的高质量语料训练,在多个权威的中文、英文和多语言的通用、领域benchmark上取得同尺寸最佳的效果,发布包含有7B、13B的Base和经过PPO训练的Chat版本,并提供了Chat版本的4bits量化。 一.Baichuan2模型 B

Langchain-Chatchat项目:2.1-通过GPT2模型来检索NebulaGraph

在官方例子中给出了通过chain = NebulaGraphQAChain.from_llm(ChatOpenAI(temperature=0), graph=graph, verbose=True)来检索NebulaGraph图数据库。本文介绍了通过GPT2替换ChatOpenAI的思路和实现,暂