隨著OpenAI在2020年發(fā)布了開(kāi)創(chuàng)性的GPT-3,我們見(jiàn)證了LLM的普及度穩(wěn)步攀升,如今還在逐漸升溫發(fā)酵。這些強(qiáng)大的人工智能模型為自然語(yǔ)言處理應(yīng)用帶來(lái)了新的可能性,使開(kāi)發(fā)人員能夠創(chuàng)建更為復(fù)雜、類(lèi)似于人類(lèi)交互的聊天機(jī)器人、問(wèn)答系統(tǒng)、摘要工具等產(chǎn)品。
LangChain作為一個(gè)多功能框架應(yīng)運(yùn)而生,旨在幫助開(kāi)發(fā)人員充分發(fā)揮LLMs在各種應(yīng)用中的潛力。基于“鏈?zhǔn)健辈煌M件的核心概念,LangChain簡(jiǎn)化了與GPT-3/4,Bloom、Huggingface等LLM的工作過(guò)程,允許開(kāi)發(fā)者無(wú)縫地構(gòu)建基于LLM的高級(jí)應(yīng)用程序。
圖片
1. Langchain 是什么
LangChain是一種創(chuàng)新性的框架,是語(yǔ)言模型驅(qū)動(dòng)的應(yīng)用程序的開(kāi)發(fā)方式,關(guān)于應(yīng)用框架的概念和使用可以參考《全棧認(rèn)知:應(yīng)用框架》和《探索嵌入式應(yīng)用框架(EAF)》。LangChain 是基于大模型的應(yīng)用開(kāi)發(fā)框架,是一個(gè)開(kāi)源的Python庫(kù),旨在通過(guò)以下方式更輕松地構(gòu)建基于LLM的應(yīng)用程序:
- 向多種不同的基礎(chǔ)模型提供通用接口,
- 提供管理Prompt提示的框架,以及
- 提供長(zhǎng)期記憶能力、外部數(shù)據(jù)以及其他代理程序的中央接口,用于處理LLM無(wú)法處理的任務(wù)(例如計(jì)算或搜索)。
通過(guò)融合先進(jìn)原則,LangChain正在重新定義通過(guò)傳統(tǒng)API可以實(shí)現(xiàn)的極限。此外,LangChain應(yīng)用程序是主動(dòng)的,使語(yǔ)言模型能夠輕松地與其環(huán)境交互和適應(yīng)。Langchain由幾個(gè)模塊組成。正如其名稱(chēng)所示,連接不同的模塊在一起是Langchain的主要目的。這里的想法是將每個(gè)模塊鏈接在一個(gè)鏈中,并最終使用該鏈一次性調(diào)用所有模塊。
圖片
2. LangChain 中的核心概念
LangChain簡(jiǎn)化了Prompt提示詞的管理,提供提供了優(yōu)化能力,為所有LLM提供了通用接口,并包括用于處理LLM的常用程序。LangChain為鏈?zhǔn)秸{(diào)用提供了標(biāo)準(zhǔn)接口,使開(kāi)發(fā)人員能夠創(chuàng)建超出單個(gè)LLM調(diào)用的調(diào)用序列。LangChain 還為開(kāi)發(fā)人員提供了創(chuàng)建與外部數(shù)據(jù)源集成的鏈的能力,此功能使基于特定數(shù)據(jù)而不是用于訓(xùn)練語(yǔ)言模型的通用數(shù)據(jù)生成文本成為可能。而且,LangChain為開(kāi)發(fā)人員提供了一個(gè)標(biāo)準(zhǔn)接口,使LLM能夠根據(jù)LLM的輸出做出明智的決策,確定采取哪些行動(dòng)以及何時(shí)采取這些行動(dòng)。記憶能力是LangChain中的一個(gè)關(guān)鍵概念,因?yàn)樗婕霸阪?代理的調(diào)用之間保留狀態(tài)。LangChain還提供了一個(gè)標(biāo)準(zhǔn)的記憶接口、一系列的記憶實(shí)現(xiàn)以及使用記憶的鏈/代理的示例。
圖片
2.1. 模型
大型語(yǔ)言模型(LLM)是指由具有眾多參數(shù)的神經(jīng)網(wǎng)絡(luò)組成并在大量未標(biāo)記的文本上進(jìn)行訓(xùn)練的模型。有許多技術(shù)巨頭和學(xué)術(shù)組織都有著自己的LLM,例如:OpenAI的GPT-3/4,Google的LaMDA/PaLM,Meta AI的LLaMA,百度的文心,阿里的千問(wèn),訊飛的星火,清華的GLM等等。借助Langchain,應(yīng)用成效與大型語(yǔ)言模型的交互變得更容易。
LangChain輕松地集成和使用不同的語(yǔ)言模型,用于增強(qiáng)應(yīng)用程序的功能,可連接到大多數(shù)第三方LLM可用的API。它具有與公共LLM、聊天和embedding模型的 ~40 個(gè)API連接。LangChain還通過(guò)asyncio庫(kù)為L(zhǎng)LM提供異步支持,還為同時(shí)調(diào)用多個(gè)LLMs的情況提供了異步支持。我們可以使用agenerate方法異步調(diào)用LLM,還可以編寫(xiě)自定義的LLM包裝器。每個(gè)大模型都有自己的優(yōu)點(diǎn)、令牌的使用次數(shù)和用例。更多的細(xì)節(jié),可以到相關(guān)大模型的官網(wǎng)去閱讀更多信息。
2.2. Prompt提示
LangChain允許有效地管理、優(yōu)化和序列化Prompt提示,允許開(kāi)發(fā)者使用模板構(gòu)建動(dòng)態(tài)提示。它可以根據(jù)上下文窗口大小和用作上下文(對(duì)話(huà)歷史記錄,搜索結(jié)果,以前的答案等)的輸入變量適應(yīng)不同的LLM類(lèi)型。這有助于從語(yǔ)言模型生成更準(zhǔn)確且具有上下文相關(guān)性的響應(yīng)。
Prompt提示是我們向LLM系統(tǒng)提供的輸入,以改進(jìn)我們的答案,使其更準(zhǔn)確或更能夠適應(yīng)我們的具體用例。很多時(shí)候,我們可能希望獲得比純文本更具體結(jié)構(gòu)化的信息。許多基于對(duì)比預(yù)訓(xùn)練和零樣本學(xué)習(xí)的目標(biāo)檢測(cè)和分類(lèi)算法都將Prompt作為有效的結(jié)果輸入。例如,OpenAI的CLIP和META的Grounding DINO都使用Prompt作為預(yù)測(cè)的輸入。
圖片
在Langchain中,可以根據(jù)我們想要的答案設(shè)置Prompt模板,然后將其鏈接到主鏈以進(jìn)行輸出預(yù)測(cè),還有一個(gè)用于結(jié)果精煉的輸出解析器的功能。輸出解析器負(fù)責(zé)指示模型輸出的格式,并將輸出解析為所需的格式,必要時(shí)需要重試。模板是指我們希望回答的特定格式或藍(lán)圖。LangChain提供了預(yù)先設(shè)計(jì)的Prompt模板,可以為不同類(lèi)型的任務(wù)生成Prompt。然而,在某些情況下,預(yù)設(shè)模板可能無(wú)法滿(mǎn)足要求,可以使用自定義的提示模板。
2.3. 記憶能力
LangChain為記憶能力提供了標(biāo)準(zhǔn)接口和一系列實(shí)現(xiàn),為L(zhǎng)LM提供了訪(fǎng)問(wèn)對(duì)話(huà)歷史記錄的權(quán)限。它促進(jìn)了在鏈或代理的調(diào)用之間保持狀態(tài)的持久性,增強(qiáng)了模型的知識(shí)召回能力。
LangChain在默認(rèn)情況下以無(wú)狀態(tài)模式運(yùn)行,這意味著獨(dú)立處理每個(gè)傳入的查詢(xún)。然而,對(duì)于某些應(yīng)用程序,如聊天機(jī)器人,無(wú)論是短期還是長(zhǎng)期,保留前面的交互非常重要。這就是“記憶能力”概念發(fā)揮作用的地方。為了跟蹤用戶(hù)與語(yǔ)言模型的交互,LangChain的記憶能力涉及將聊天消息序列轉(zhuǎn)化為ChatMessages,并從中攝取、捕獲、轉(zhuǎn)換和提取知識(shí)。在LangChain中有許多不同的記憶類(lèi)型,每一種都有其處理消息序列的獨(dú)特方式。在使用記憶能力時(shí),一種是獨(dú)立的函數(shù),它們從消息序列中提取信息,另一種是如何在鏈中使用這種類(lèi)型的記憶。LangChain的記憶能力可以返回多個(gè)信息,例如最近的N個(gè)消息或所有先前消息的摘要,返回的信息可以是一個(gè)字符串或一個(gè)消息列表。
LangChain提供了兩種形式的記憶能力組件。首先,提供了管理和操作以前聊天消息的輔助工具,這些工具被設(shè)計(jì)為模塊化和可用的,適應(yīng)于各種用例。其次,LangChain提供了將這些常用程序集成到鏈中的簡(jiǎn)便方法,使它們具有高度的適應(yīng)性。
2.4. 索引
索引是指以L(fǎng)LM最佳地與它們交互的方式來(lái)構(gòu)造文檔的方法。為了增強(qiáng)語(yǔ)言模型的能力,LangChain有效地將LLM與用戶(hù)的文本數(shù)據(jù)結(jié)合使用,包含用于處理文檔、不同類(lèi)型的索引的實(shí)用函數(shù)以及使用這些索引在鏈中的示例,提供了索引和搜索數(shù)據(jù)源的最佳實(shí)踐。
LangChain提供了三種文檔加載器:
- 轉(zhuǎn)換加載器
- 公共數(shù)據(jù)集或服務(wù)加載器
- 專(zhuān)有數(shù)據(jù)集或服務(wù)加載器
轉(zhuǎn)換加載器將數(shù)據(jù)從特定格式轉(zhuǎn)換為文檔格式,例如有用于CSV和SQL的轉(zhuǎn)換器。大多數(shù)情況下,這些加載器從文件中輸入數(shù)據(jù),有時(shí)也可以從URL中輸入數(shù)據(jù)。許多這些轉(zhuǎn)換器的主要驅(qū)動(dòng)程序是Unstructured模塊。該包可以將許多類(lèi)型的文件(文本、PowerPoint、圖像、HTML、PDF 等)轉(zhuǎn)換為文本數(shù)據(jù)。對(duì)于在公共領(lǐng)域創(chuàng)建的數(shù)據(jù)集和數(shù)據(jù)源,對(duì)于這些數(shù)據(jù)集和服務(wù),我們不需要任何訪(fǎng)問(wèn)權(quán)限可以使用查詢(xún)來(lái)搜索并下載所需的文檔。對(duì)于不屬于公共領(lǐng)域的數(shù)據(jù)集和服務(wù),專(zhuān)有數(shù)據(jù)集或服務(wù)加載器主要用于轉(zhuǎn)換特定格式的應(yīng)用程序或云服務(wù)的數(shù)據(jù),我們需要訪(fǎng)問(wèn)令牌和其他參數(shù)才能訪(fǎng)問(wèn)這些數(shù)據(jù)集和服務(wù)。
圖片
一般地,這些文檔會(huì)以 embedding 的形式存儲(chǔ)在向量數(shù)據(jù)庫(kù)中,從而建立索引并實(shí)現(xiàn)搜索。
2.5. 鏈
鏈?zhǔn)且幌盗姓{(diào)用,可以是語(yǔ)言模型或其他常用程序。LangChain提供了鏈的標(biāo)準(zhǔn)接口,以及許多與常見(jiàn)應(yīng)用程序集成好的鏈。
鏈?zhǔn)菍⒁粋€(gè)或多個(gè)大型語(yǔ)言模型(LLM)以邏輯方式連接起來(lái)得到的結(jié)果,提供了將各種組件合并成一個(gè)統(tǒng)一應(yīng)用的方法。例如,可以創(chuàng)建一個(gè)鏈,從用戶(hù)那里接收輸入,使用Prompt提示模版進(jìn)行格式化,然后將格式化后的回復(fù)發(fā)送給LLM中,還可以通過(guò)將多個(gè)鏈條與其他組件集成來(lái)生成更復(fù)雜的鏈。LLMChain被認(rèn)為是查詢(xún)LLM對(duì)象最廣泛使用的方法之一。它根據(jù)提示模板格式化提供的輸入鍵值和需要記憶的鍵值,然后將格式化的字符串發(fā)送給LLM,LLM會(huì)生成返回的輸出。在調(diào)用語(yǔ)言模型之后,可以采取一系列的步驟,并進(jìn)行一系列對(duì)模型的調(diào)用。當(dāng)希望將一個(gè)調(diào)用的輸出用作另一個(gè)調(diào)用的輸入時(shí),這種做法的價(jià)值更大。在這一系列的鏈中,每個(gè)單獨(dú)的鏈都有一個(gè)輸入和一個(gè)輸出,一個(gè)步驟的輸出被用作下一個(gè)步驟的輸入。
2.6. 代理
代理使語(yǔ)言模型能夠做出決策、采取行動(dòng)、觀(guān)察結(jié)果并重復(fù)這個(gè)過(guò)程,直到完成目標(biāo)。LangChain為代理提供了標(biāo)準(zhǔn)接口、可供選擇的代理以及端到端代理的示例。
某些應(yīng)用程序可能不僅需要LLM/其他工具調(diào)用的預(yù)定序列,而且需要依賴(lài)于用戶(hù)輸入的不確定序列。這類(lèi)序列包括一個(gè)可以訪(fǎng)問(wèn)一系列工具的“代理”?;谟脩?hù)輸入,代理可以確定應(yīng)該調(diào)用這些工具中的哪一個(gè),以及該工具的輸入應(yīng)該是什么。然后使用這個(gè)輸入調(diào)用該工具,并記錄一個(gè)觀(guān)察結(jié)果。工具、工具輸入和觀(guān)察的歷史記錄會(huì)傳回代理,代理決定下一步要采取什么步驟。重復(fù)此過(guò)程,直到代理決定不再需要使用工具,然后直接響應(yīng)用戶(hù)。
3. 使用LangChain 構(gòu)建應(yīng)用
我們或許正在經(jīng)歷著“AI的Linux時(shí)刻”,開(kāi)發(fā)人員必須根據(jù)性能和成本之間的權(quán)衡選擇專(zhuān)有或開(kāi)源基礎(chǔ)大模型。
圖片
3.1 構(gòu)建開(kāi)發(fā)環(huán)境
首先,創(chuàng)建基于Python 的虛擬環(huán)境,虛擬環(huán)境是一個(gè)隔離的Python環(huán)境,允許您安裝特定于特定項(xiàng)目的軟件包和依賴(lài)項(xiàng),而不會(huì)干擾系統(tǒng)范圍的Python安裝或其他項(xiàng)目。這種隔離有助于保持一致性并避免不同項(xiàng)目要求之間的潛在沖突。
然后,安裝LangChain,例如: pip install langchain。
最后,選擇一個(gè)或多大模型,并安裝相應(yīng)的軟件包, 以openai 為例,pip install openai。進(jìn)一步,還要配置訪(fǎng)問(wèn)權(quán)限,例如需要從OpenAI獲取API密鑰。
3.2 大模型的使用
LangChain 提供了一個(gè) LLM 類(lèi),專(zhuān)門(mén)用于與各種語(yǔ)言模型提供者(如 OpenAI 和 Hugging Face等等)進(jìn)行交互。該類(lèi)為所有 LLM 類(lèi)型提供了標(biāo)準(zhǔn)接口。在使用大模型的基本能力時(shí),可以先導(dǎo)入包,直接調(diào)用LLM實(shí)例即可根據(jù)問(wèn)題的輸入生成文本。
import os
from langchain.llms import OpenAI
os.environ["OPENAI_API_KEY"] = ""
llm = OpenAI(model_name="text-ada-001", n=2, best_of=2)
result = llm("給我講個(gè)笑話(huà)")
print(result)
如果希望獲取包括多個(gè)響應(yīng),可以調(diào)用LLM實(shí)例的generate()方法,generate()方法需要一個(gè)提示列表作為輸入,LLM為列表中的每個(gè)提示生成響應(yīng)。
在使用OpenAI LLM的場(chǎng)景下,llm.generate的返回結(jié)果中包含了程序特定信息,尤其是token 的使用狀況,例如completion_tokens,total_tokens,prompt_tokens的統(tǒng)計(jì)數(shù)據(jù)。
3.3 構(gòu)建鏈?zhǔn)椒?wù)
構(gòu)建一個(gè)典型的鏈?zhǔn)椒?wù)主要包括如下4個(gè)部分:- 將LLM與提示模板結(jié)合- 通過(guò)將第一個(gè)LLM的輸出作為第二個(gè)LLM的輸入,將多個(gè)LLM按順序結(jié)合在一起(請(qǐng)參見(jiàn)本節(jié))- 將LLM與外部數(shù)據(jù)結(jié)合,例如用于問(wèn)答- 將LLM與長(zhǎng)期記憶結(jié)合,例如用于聊天歷史記錄
如果已經(jīng)創(chuàng)建了Prompt 模板,可以通過(guò)LangChain 將 Prompt 模板 應(yīng)用于大模型:
from langchain.chains import LLMChain
chain = LLMChain(llm = llm,
prompt = prompt)
chain.run(my_query)
如果我們想要將第一個(gè)LLM的輸出作為第二個(gè)LLM的輸入,可以使用SimpleSequentialChain:
from langchain.chains import LLMChain, SimpleSequentialChain
# Define the first chain as in the previous example
# ...
# Create a second chain with a prompt template and an LLM
second_prompt = PromptTemplate(
input_variables=["company_name"],
template="Write a business domain for the following company: {company_name}",
)
chain_two = LLMChain(llm=llm, prompt=second_prompt)
# Combine the first and the second chain
overall_chain = SimpleSequentialChain(chains=[chain, chain_two], verbose=True)
# Run the chain specifying only the input variable for the first chain.
catchphrase = overall_chain.run(my_query)
LLM的一個(gè)限制是它們?nèi)狈ι舷挛男畔ⅲɡ?,無(wú)法訪(fǎng)問(wèn)某些特定的文檔或電子郵件),我們可以通過(guò)讓LLM訪(fǎng)問(wèn)特定的外部數(shù)據(jù)來(lái)解決這個(gè)問(wèn)題。LangChain提供了各種加載程序,用于不同類(lèi)型的文檔。例如,加載我本地某一路徑下的所有PDF文件——
from langchain.document_loaders import DirectoryLoader
loader = DirectoryLoader(
'./Abel/ePapers/llm',# my local directory
glob='**/*.pdf',# only get pdfs
show_progress=True
)
papers_llm = loader.load()
papers_llm
在準(zhǔn)備好將外部數(shù)據(jù)作為“文檔”之后,可以使用文本嵌入模型在向量數(shù)據(jù)庫(kù)中進(jìn)行索引 。流行的向量數(shù)據(jù)庫(kù)包括Pinecone、Weaviate和Milvus,已經(jīng)無(wú)需API密鑰的Faiss等等。
# pip install faiss-cpu
from langchain.vectorstores import FAISS
# create the vectorestore to use as the index
db = FAISS.from_documents(documents, embeddings)
將文檔以嵌入形式存儲(chǔ)在了向量數(shù)據(jù)庫(kù)中之后,我們可以對(duì)此外部數(shù)據(jù)進(jìn)行各種操作,例如使用信息檢索器將其用于問(wèn)答任務(wù):
from langchain.chains import RetrievalQA
retriever = db.as_retriever()
qa = RetrievalQA.from_chain_type(
llm=llm,
chain_type="stuff",
retriever=retriever,
return_source_documents=True)
query = "What am I never going to do?"
result = qa({"query": query})
print(result['result'])
對(duì)于像聊天機(jī)器人這樣的應(yīng)用,能夠記住以前的對(duì)話(huà)信息是至關(guān)重要的。但是默認(rèn)情況下,LLM沒(méi)有任何長(zhǎng)期記憶,除非用戶(hù)手工輸入聊天歷史記錄。LangChain通過(guò)提供了幾種處理聊天歷史記錄的方式:
- 保留所有對(duì)話(huà),
- 保留最新的 k 條對(duì)話(huà),
- 總結(jié)對(duì)話(huà)。例如,我們使用ConversationChain來(lái)為這個(gè)應(yīng)用程序提供對(duì)話(huà)的歷史信息。
from langchain import ConversationChain
conversation = ConversationChain(llm=llm, verbose=True)
conversation.predict(input="Alice has a parrot.")
conversation.predict(input="Bob has two cats.")
conversation.predict(input="How many pets do Alice and Bob have?")
除了歷史信息之外,LLM仍存在一些限制,例如,無(wú)法訪(fǎng)問(wèn)未包含在訓(xùn)練數(shù)據(jù)中的特定知識(shí),數(shù)據(jù)還可能很快過(guò)時(shí)(例如,GPT-4是在2021年9月之前的數(shù)據(jù)上進(jìn)行訓(xùn)練的),而且它們不擅長(zhǎng)數(shù)學(xué)計(jì)算。因此,我們需要使用代理根據(jù)LLM的輸出做出決策,決定使用哪些工具來(lái)完成任務(wù)。例如,通過(guò)建立代理,使用Wikipedia查找Barack Obama的出生日期,然后使用計(jì)算器計(jì)算他在2022年的年齡。
# pip install wikipedia
from langchain.agents import load_tools
from langchain.agents import initialize_agent
from langchain.agents import AgentType
tools = load_tools(["wikipedia", "llm-math"], llm=llm)
agent = initialize_agent(tools,
llm,
agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
verbose=True)
agent.run("When was Barack Obama born? How old was he in 2022?")
在使用LangChain的過(guò)程中,有一些鏈不需要LLM,主要是Prompt提示的預(yù)處理轉(zhuǎn)換鏈,例如在將其輸入LLM之前刪除額外的空格,另一參考https://python.langchain.com/en/latest/modules/chains/generic/transformation.html。
4. 基于LangChain 的典型用例
圖片
LangChain 作為一款先進(jìn)的語(yǔ)言模型應(yīng)用開(kāi)發(fā)框架,它賦能開(kāi)發(fā)者基于底層語(yǔ)言模型打造出各種智能語(yǔ)言應(yīng)用。常見(jiàn)用例如下:
- 自治的代理:LangChain支持自治代理的開(kāi)發(fā),如AutoGPT和BabyAGI,它們是長(zhǎng)時(shí)間運(yùn)行的代理,執(zhí)行多個(gè)步驟以實(shí)現(xiàn)目標(biāo)。
- 代理模擬:LangChain促進(jìn)了創(chuàng)建沙盒環(huán)境,其中代理可以相互交互或?qū)κ录龀龇磻?yīng),提供對(duì)其長(zhǎng)期記憶能力的洞察。
- 個(gè)人助理:LangChain非常適合構(gòu)建個(gè)人助理,它可以執(zhí)行操作、記住交互并訪(fǎng)問(wèn)您的數(shù)據(jù),提供個(gè)性化的幫助。
- 問(wèn)答:LangChain在回答特定文檔中的問(wèn)題方面表現(xiàn)出色,利用這些文檔中的信息構(gòu)建準(zhǔn)確和相關(guān)的答案。
- 聊天機(jī)器人:利用語(yǔ)言模型的文本生成能力,LangChain賦予了創(chuàng)造引人入勝的聊天機(jī)器人的能力。
- 查詢(xún)表格數(shù)據(jù):LangChain提供了使用語(yǔ)言模型查詢(xún)存儲(chǔ)在表格格式中的數(shù)據(jù)(如CSV文件、SQL數(shù)據(jù)庫(kù)或數(shù)據(jù)框)的指南。
- 代碼理解:LangChain協(xié)助使用語(yǔ)言模型查詢(xún)和理解來(lái)自GitHub等平臺(tái)的源代碼。
- 與API交互:LangChain使語(yǔ)言模型能夠與API交互,為它們提供最新信息,并能夠根據(jù)實(shí)時(shí)數(shù)據(jù)采取行動(dòng)。
- 提?。篖angChain幫助從非結(jié)構(gòu)化文本中提取結(jié)構(gòu)化信息,簡(jiǎn)化數(shù)據(jù)分析和解釋。
- 摘要:LangChain支持將較長(zhǎng)的文檔摘要成簡(jiǎn)潔、易于消化的信息塊,使其成為數(shù)據(jù)增強(qiáng)的強(qiáng)大工具。
- 評(píng)估:由于生成模型難以使用傳統(tǒng)指標(biāo)進(jìn)行評(píng)估,LangChain提供提示和鏈來(lái)輔助使用語(yǔ)言模型本身進(jìn)行評(píng)估過(guò)程。
5. 小結(jié)
LangChain賦予了開(kāi)發(fā)人員將LLM與其他計(jì)算和知識(shí)來(lái)源相結(jié)合以構(gòu)建應(yīng)用程序的能力。使用LangChain,開(kāi)發(fā)人員可以使用一個(gè)抽象LLM應(yīng)用程序的核心構(gòu)建塊的框架。探索LangChain的能力并嘗試其各個(gè)組件,會(huì)發(fā)現(xiàn)可能性幾乎無(wú)限。LangChain框架提供了一種靈活和模塊化的語(yǔ)言生成方法,允許創(chuàng)建根據(jù)用戶(hù)特定需要量身定制的定制解決方案。
但是, LangChain有著把簡(jiǎn)單問(wèn)題復(fù)雜化的嫌疑,或許還存在著更好的選擇等待我們?nèi)グl(fā)現(xiàn)和探索。因此,保持好奇心并繼續(xù)學(xué)習(xí),LLM和生成式AI的世界還在快速發(fā)展,是機(jī)會(huì),也是挑戰(zhàn)。
【參考資料與關(guān)聯(lián)閱讀】
- LangChain 中文網(wǎng):https://www.langchain.asia/
- LangChain 文檔:https://python.langchain.com/docs/get_started/introduction
- LangChain 博客:https://blog.langchain.dev/
- https://minimaxir.com/2023/07/langchain-problem/