自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

LangChain 和 Hub 的前世今生

人工智能
本文主要聊了LangChain和LangChainHub的發(fā)展變遷,還介紹了LangChainHub的使用,希望對你有幫助!

作為LLM(大模型)開發(fā)框架的寵兒,LangChain在短短幾年內(nèi)迅速崛起,成為開發(fā)者們不可或缺的工具。本文將帶你探討LangChain和LangChainHub的發(fā)展歷程。

一、LLM開發(fā)框架的寵兒

這兩年人工智能領(lǐng)域發(fā)展迅猛,LLM(大模型)的出現(xiàn)功不可沒。LLM的發(fā)展將整個人工智能領(lǐng)域往前推進(jìn)了一大步,將人工智能這道狹窄的門撐寬了不少,讓我們這些平凡的普通人也有機(jī)會擠進(jìn)人工智能的發(fā)展中。

普通開發(fā)者在人工智能領(lǐng)域能做什么呢?目前可以發(fā)力的領(lǐng)域是:開發(fā)基于LLM的App。開發(fā)LLM的App有多種實現(xiàn)方式,LangChain是比較流行的一種。

伴隨著人工智能的發(fā)展,這兩年LangChain發(fā)展迅猛,GitHub上的star數(shù)飆升,近期更是成功融資2億美刀,足見其受歡迎程度。

早期的LangChain只是作為一個工具或者膠水,集成了多個LLM和多種外部組件(比如記憶、檢索、向量數(shù)據(jù)庫、工具集等等),方便開發(fā)者快速開發(fā)基于LLM的App。

我估計,當(dāng)時LangChain的創(chuàng)始人對LangChain的定位也不是很清晰,只是覺得AI應(yīng)用開發(fā)是個不錯的風(fēng)口,先搞了再說,這也很符合創(chuàng)業(yè)和商業(yè)邏輯。

二、現(xiàn)在的LangChain

隨著LLM的發(fā)展,一切逐步走向確定性(業(yè)內(nèi)一致認(rèn)為LLM App是未來的方向),而且可能伴隨著商業(yè)化的要求,LangChain對自己的定位發(fā)生了一些改變。

早期的LangChain可能只是想抓住一波LLM的風(fēng)口,對于自身的定位也不是很清晰,隨著LLM領(lǐng)域更多的發(fā)力點在構(gòu)建基于LLM的App上,LangChain也趕緊調(diào)整了自身的定位。

不再定位在:膠水、工具集合等等理念了。更多的強(qiáng)調(diào)自己是:構(gòu)建LLM App的最大社區(qū),基于LangChain可以開發(fā)出可推理的應(yīng)用程序。

調(diào)整了定位,生態(tài)也自然做了調(diào)整,同時軟件架構(gòu)也隨之變化,比如:軟件包上做了很多重構(gòu)和重組,核心能力 和 周邊社區(qū)生態(tài) 的邊界越發(fā)清晰。

同時,還加入了LangSmith用于監(jiān)控LLM應(yīng)用,還有LangServe用于部署LLM應(yīng)用。一切的步伐都在朝著商業(yè)化發(fā)展。

至此LangChain調(diào)整為以下幾個核心模塊:

  • LangChain-Core:抽象LangChain的內(nèi)核 和 LangChain 表達(dá)式語言。
  • LangChain-Community:集成的各種第三方部件。
  • LangChain:構(gòu)成LLM應(yīng)用程序需要的 鏈、代理和檢索等。
  • LangSmith:開發(fā)者平臺,可讓 調(diào)試、測試、評估和監(jiān)控 基于任何 LLM 框架上構(gòu)建的鏈,并與 LangChain 無縫集成。
  • LangServe:用于將 LangChain 的應(yīng)用 部署為 REST API。

這幾點我們從官網(wǎng)的架構(gòu)圖清晰可見。也可以認(rèn)為此時的LangChain變成了一個SAAS化的開發(fā)者平臺。而它提供的組件、工具、監(jiān)控、部署等生態(tài),也都是為了讓開發(fā)者方便的開發(fā)出LLM App,然后部署到這個平臺上。

LangChain是一個優(yōu)秀的LLM開源框架,也無法避免走上常規(guī)的開源軟件商業(yè)化的套路。

三、早期的LangChainHub

LangChain早期推出的各種組件中LangChainHub是其中一個比較有意思的項目。

早期LangChainHub對自己的定位如下:LangChainHub 受 Hugging Face Hub 啟發(fā),是一個用于發(fā)現(xiàn)和提交常用的 提示、鏈、代理等的平臺。早期,LangChainHub以Prompt集合為起點,然后很快擴(kuò)展到 鏈 和 代理。

這個定位我們從之前的LangChainHub在github倉庫上的目錄可見一斑。

此時的LangChainHub 可以理解為LangChain 工具包 或者說 組件中心,里面提供了高質(zhì)量的組件方便開發(fā)者使用。確確實實是一個分享和探索Prompt、鏈 和Agent的地方。

比如,我們要基于reAct機(jī)制實現(xiàn)一個Agent,如果自己寫一堆Prompt(提示詞)那就太費勁了。此時,在LangChainHub就有許多現(xiàn)成可用的Prompt模板,使用簡單又省事,所以LangChainHub迅速流行開。

四、現(xiàn)在的LangChainHub

那現(xiàn)在的LangChainHub在新的LangChain架構(gòu)圖的哪里呢?我也覺得挺奇怪的,LangChainHub也是算生態(tài)里較為重要的版塊,架構(gòu)圖里居然沒提。

后來發(fā)現(xiàn),LangChainHub被放到了LangSmith里。這個從新版的官方文檔也是清晰可見。

這也算合情合理吧,畢竟LangSmith是一個開發(fā)者平臺,用于調(diào)試、測試、評估、監(jiān)控基于LLM框架的鏈,在這個平臺上,可以使用和創(chuàng)建Prompt。

早期的時候LangChainHub有Prompt、Chain、Agent,現(xiàn)在也只有Prompt了。我個人對LangChainHub的定位多少覺得有些悲涼了,LangChainHub淪為了Prompt模板倉庫。

我認(rèn)為這背后存在兩種可能的原因:

  • 可能是商業(yè)化的要求吧,將常用的Prompt模板挪到開發(fā)者平臺LangSmith里,畢竟LangSmith是有各種付費計劃的。
  • 可能是官方對于LangChainHub里的內(nèi)容開始做收縮,聚焦于Prompt,畢竟Prompt比較獨立 而且易于交付。而Chains 和 Agents 相對來說,交付難度高一些,變動性也低,所以官方直接將 Chains 和 Agents 沉淀到自己的核心庫里,這樣也能保證Chains 和 Agents 的質(zhì)量,保證自己的口碑。

LangChainHub真的是始于Prompt,終于Prompt?。?!當(dāng)然啦,以后的LangChainHub怎么發(fā)展就不得而知了。

慶幸的是,我們大部分場景還是使用Prompt模板居多,此時的LangChainHub里依舊能找到大咖們貢獻(xiàn)的復(fù)雜常用的Prompt模板,降低了我們使用ReAct、Tool的門檻。

五、LangChainHub的使用

下面我們通過一個示例,來看看如何使用LangChainHub。

1.拆解LangChainHub的Prompt

比如:要實現(xiàn)一個reAct機(jī)制,如果我們自己寫提示詞,那太復(fù)雜了。但是LangChainHub上已經(jīng)有大佬定義好了相關(guān)提示詞。

比如:structured-chat-agent(https://smith.langchain.com/hub/hwchase17/structured-chat-agent),提示詞寫的還是有點復(fù)雜的,大致意思就是:告訴LLM,它可以使用一堆什么格式的工具,然后先推理,選擇合適的工具,執(zhí)行之后,進(jìn)行觀察,觀察完了之后,繼續(xù)推理,如果有答案了,就回復(fù)用戶。

具體內(nèi)容如下:

2.使用LangChainHub

使用LangChainHub上的Prompt就2步:

  • 導(dǎo)入LangChainHub庫
  • 從Hub上拉取對應(yīng)的提示詞

接下來舉個例子,比如,LLM在直接計算浮點數(shù)加減時會出現(xiàn)錯誤,我要做一個基于reAct框架的AI Agent,讓這個Agent幫我精準(zhǔn)計算浮點數(shù)。這里使用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 = "數(shù)字相加計算工具"
    description = "當(dāng)你被要求計算2個數(shù)字相加時,使用此工具"

    def _run(self, a, b):
        return a["title"] + b["title"]


# 加入到工具合集
tools = [SumNumberTool()]

# 使用reAct的提示詞
prompt = hub.pull("hwchase17/structured-chat-agent")

# 創(chuàng)建Agent
agent = create_structured_chat_agent(llm=model, tools=tools, prompt=prompt)

# 創(chuàng)建記憶組件
memory = ConversationBufferMemory(memory_key="chat_history", return_messages=True)

# 創(chuàng)建Agent執(zhí)行器
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的結(jié)果"})

六、總結(jié)

本文主要聊了LangChain和LangChainHub的發(fā)展變遷,還介紹了LangChainHub的使用,希望對你有幫助!

責(zé)任編輯:趙寧寧 來源: 程序員半支煙
相關(guān)推薦

2011-08-23 09:52:31

CSS

2014-07-30 10:55:27

2025-02-12 11:25:39

2015-11-18 14:14:11

OPNFVNFV

2010-10-25 12:10:39

SQL注入

2016-12-29 13:34:04

阿爾法狗圍棋計算機(jī)

2013-05-23 16:23:42

Windows Azu微軟公有云

2014-07-15 10:31:07

asyncawait

2021-06-17 07:08:19

Tapablewebpack JavaScript

2012-05-18 16:54:21

FedoraFedora 17

2014-07-21 12:57:25

諾基亞微軟裁員

2016-12-29 18:21:01

2019-06-04 09:00:07

Jenkins X開源開發(fā)人員

2016-11-08 19:19:06

2016-11-03 13:33:31

2013-11-14 16:03:23

Android設(shè)計Android Des

2011-05-13 09:43:27

產(chǎn)品經(jīng)理PM

2019-08-05 10:08:25

軟件操作系統(tǒng)程序員

2019-04-28 09:34:06

2015-06-11 11:10:09

對象存儲云存儲
點贊
收藏

51CTO技術(shù)棧公眾號