該框架由幾個(gè)部分組成。
- LangChain 庫(kù):Python 和 JavaScript 庫(kù)。包含無數(shù)組件的接口和集成、將這些組件組合成鏈和代理的基本運(yùn)行時(shí),以及鏈和代理的現(xiàn)成實(shí)現(xiàn)。
- LangChain 模板:一系列易于部署的參考架構(gòu),適用于各種任務(wù)。
- LangServe:用于將 LangChain 鏈部署為 REST API 的庫(kù)。
- LangSmith:一個(gè)開發(fā)者平臺(tái),可讓您調(diào)試、測(cè)試、評(píng)估和監(jiān)控基于任何 LLM 框架構(gòu)建的鏈,并與 LangChain 無縫集成。
LangChain能干什么?
LangChain的產(chǎn)品共同簡(jiǎn)化了整個(gè)應(yīng)用程序生命周期:
- 開發(fā):在 LangChain/LangChain.js 中編寫您的應(yīng)用程序。使用模板作為參考開始運(yùn)行。
- Productionize:使用 LangSmith 檢查、測(cè)試和監(jiān)控您的鏈,以便您可以充滿信心地不斷改進(jìn)和部署。
- 部署:使用 LangServe 將任何鏈轉(zhuǎn)換為 API。
LangChain 幾乎可以作為所有 LLM 的通用接口,為構(gòu)建 LLM 應(yīng)用程序并將其與外部數(shù)據(jù)源和軟件工作流程集成提供集中式開發(fā)環(huán)境。LangChain可以簡(jiǎn)單理解為是 LLM 領(lǐng)域的 Spring。
LangChain的主要價(jià)值:
- 組件(Components):用于處理語(yǔ)言模型的可組合工具和集成。無論您是否使用 LangChain 框架的其余部分,組件都是模塊化且易于使用的。
- 現(xiàn)成的鏈(Off-the-shelf chains):用于完成更高級(jí)別任務(wù)的內(nèi)置組件組合,約定大于配置,讓您可以輕松上手。
二、LangChain的原理
LangChain的工作流程:通過分塊和向量化數(shù)據(jù)源,優(yōu)化LLM的檢索與生成過程,實(shí)現(xiàn)高效、智能的文本處理。
- 數(shù)據(jù)分塊與向量化:
- LangChain首先將大型數(shù)據(jù)源(如50頁(yè)的PDF文件)分解成小塊信息。
- 這些信息塊隨后被轉(zhuǎn)換成向量形式,并存儲(chǔ)在一個(gè)向量存儲(chǔ)(Vector Store)中。這個(gè)過程稱為向量化,它允許信息以數(shù)學(xué)上可比較和檢索的形式存在。
- 與LLM的集成:
- 當(dāng)用戶向基于LangChain的聊天機(jī)器人輸入提示(prompt)時(shí),系統(tǒng)會(huì)在向量存儲(chǔ)中查詢與提示相關(guān)的信息塊。
- 這個(gè)查詢過程類似于在搜索引擎中搜索關(guān)鍵詞,但在這里,它是基于向量的相似度來進(jìn)行的。
- 生成答案:
- 一旦找到相關(guān)信息塊,LangChain會(huì)將這些信息與原始提示一起提供給LLM。
- LLM隨后利用這些信息來生成針對(duì)用戶輸入的回答或完成文本。
LangChain的核心組件:LangChain提供標(biāo)準(zhǔn)的、可擴(kuò)展的接口和外部集成。
主要包括以下六個(gè)部分:
- 模型I/O(Model I/O):負(fù)責(zé)與語(yǔ)言模型進(jìn)行交互,處理輸入和輸出數(shù)據(jù)。
- 檢索(Retrieval):從特定數(shù)據(jù)源檢索信息,如數(shù)據(jù)庫(kù)或API,為應(yīng)用提供所需內(nèi)容。
- 代理(Agents):根據(jù)高級(jí)指令決定使用哪些工具或組件,協(xié)調(diào)應(yīng)用內(nèi)的操作和信息流。
- 鏈(Chains):定義一系列有序步驟以完成特定任務(wù)。
- 內(nèi)存(Memory):在LangChain運(yùn)行間保持應(yīng)用狀態(tài)。
- 回調(diào)(Callbacks):在LangChain的特定步驟觸發(fā)額外動(dòng)作,如日志記錄或中間步驟的流式傳輸。
三、LangChain的應(yīng)用
工具使用(Tool use):LLM 的一個(gè)令人興奮的應(yīng)用是為其他“工具”構(gòu)建自然語(yǔ)言接口,無論是 API、函數(shù)、數(shù)據(jù)庫(kù)等。
LangChain 非常適合構(gòu)建此類接口,因?yàn)樗哂校?/strong>
- 良好的模型輸出解析,可以輕松從模型輸出中提取 JSON、XML、OpenAI 函數(shù)調(diào)用等。
- 大量?jī)?nèi)置工具。
- 為您如何調(diào)用這些工具提供了很大的靈活性。
工具的使用方式主要有兩種:chains 和 agents。
方式一:chains?創(chuàng)建預(yù)定義的工具使用順序。
方式二:agents?讓模型循環(huán)使用工具,這樣它就可以決定使用工具的次數(shù)。
萃取(Extraction):LLM 的另一個(gè)令人興奮的應(yīng)用是從原始的 LLM 生成中獲得結(jié)構(gòu)化的輸出。
假設(shè)需要 LLM 使用特定架構(gòu)進(jìn)行結(jié)構(gòu)化輸出:
- 提取結(jié)構(gòu)化行以插入數(shù)據(jù)庫(kù)
- 提取API參數(shù)
- 提取用戶查詢的不同部分(例如,語(yǔ)義搜索與關(guān)鍵字搜索)
文章轉(zhuǎn)自微信公眾號(hào)@架構(gòu)師帶你玩轉(zhuǎn)AI
我們有何不同?
API服務(wù)商零注冊(cè)
多API并行試用
數(shù)據(jù)驅(qū)動(dòng)選型,提升決策效率
查看全部API→
??
熱門場(chǎng)景實(shí)測(cè),選對(duì)API