LangChain v0.2:向穩(wěn)定性邁進(jìn)的一大步
還記得四個(gè)月前我們發(fā)布的LangChain首個(gè)穩(wěn)定版嗎?今天,我們繼續(xù)這一進(jìn)步,帶來了langchain v0.2的預(yù)發(fā)布版。這個(gè)新版本不僅在v0.1的基礎(chǔ)上進(jìn)行了改進(jìn),還吸納了社區(qū)的反饋。以下是v0.2版本的主要亮點(diǎn):
- 實(shí)現(xiàn)了社區(qū)熱切期待的langchain與langchain-community的完全分離。
- 引入了新版(而且是有版本控制的!)文檔。
- 提供了一個(gè)更加成熟和可控的代理框架。
- 對(duì)大型語言模型(LLM)的接口進(jìn)行了標(biāo)準(zhǔn)化改進(jìn),特別是在工具調(diào)用方面。
- 增強(qiáng)了對(duì)流媒體的支持。
- 新增了30多個(gè)合作伙伴的集成包。
請(qǐng)注意,這只是一個(gè)預(yù)發(fā)布版本,正式的v0.2版本將在幾周后與大家見面。下面,讓我們一起來看看langchain v0.2版本將帶來哪些新特性。
擁抱穩(wěn)定性:LangChain架構(gòu)的演進(jìn)
在langchain? v0.2中,最引人注目的改進(jìn)之一是對(duì)langchain?包和langchain-community?進(jìn)行了徹底的解耦。這意味著langchain-community?現(xiàn)在將依賴于langchain-core和langchain?。這是我們自langchain v0.1.0以來一直在努力的方向,目的是為了構(gòu)建一個(gè)更加健壯和獨(dú)立的軟件包。
作為提醒,langchain? v0.1.0將langchain?軟件包分解為多個(gè)組件包,這樣做的目的是為了提高LangChain在生產(chǎn)環(huán)境中的易用性。這些組件包括langchain-core、langchain、langchain-community以及合作伙伴的集成包。想要了解更多,可以點(diǎn)擊這里。
langchain-community?包含了許多第三方集成,這不僅意味著它有許多(可選的)依賴項(xiàng)和文件,而且由于集成的特性,它有時(shí)也會(huì)受到公共漏洞和曝光(CVE)的影響。因此,我們?nèi)コ齦angchain對(duì)langchain-community?的依賴,使得langchain更加輕量、專注和安全。
我們盡可能以一種非破壞性的方式進(jìn)行這次重組,繼續(xù)保留了現(xiàn)有的入口點(diǎn),例如可以通過langchain.chat_models import ChatOpenAI?訪問。在內(nèi)部,這涉及到從langchain_community?進(jìn)行條件導(dǎo)入;簡(jiǎn)單來說,就是檢查是否安裝了langchain-community?,如果安裝了,就執(zhí)行導(dǎo)入。這意味著如果您已經(jīng)安裝了langchain-community,那么不會(huì)有任何破壞性的變化。
這個(gè)改進(jìn)的想法來自于我們的社區(qū)成員——感謝Jacob!
提升可發(fā)現(xiàn)性:更優(yōu)質(zhì)的版本化文檔
我們還根據(jù)社區(qū)的反饋對(duì)文檔進(jìn)行了全面翻新。這項(xiàng)工作從一個(gè)多月前就開始了,我們主要從以下兩個(gè)方面進(jìn)行了改進(jìn):
首先,我們的文檔現(xiàn)在有了版本控制。這是社區(qū)長(zhǎng)期以來的一個(gè)需求,我們?yōu)榇烁冻隽撕芏嗯?。我們將保持現(xiàn)有的文檔作為v0.1版本,并開始構(gòu)建一個(gè)獨(dú)立的v0.2版本。目前,文檔默認(rèn)為v0.1版本,但一旦完整的v0.2版本發(fā)布,我們將開始使用新的文檔作為默認(rèn)。我們希望我們的版本化文檔能更好地反映軟件包的狀態(tài),并且我們相信,從這里開始,一切都將越來越好。
其次,我們的文檔結(jié)構(gòu)變得更為扁平和簡(jiǎn)潔?,F(xiàn)在主要分為四個(gè)部分:教程、操作指南、概念指南和API參考。這樣的結(jié)構(gòu)將使查找文檔變得更加容易,也使我們能夠維護(hù)一組精簡(jiǎn)且一致的指南。
Reddit上關(guān)于LangChain文檔的建議
我們還正在制作一個(gè)“隨時(shí)間演變的LangChain”文檔頁面,以更好地突出LangChain的變更。我們希望這能幫助大家更好地理解和關(guān)聯(lián)不同版本之間的概念。
增強(qiáng)能力:LangGraph代理
從LangChain的早期開始,社區(qū)最大的反饋之一就是定制預(yù)構(gòu)建鏈和代理的內(nèi)部結(jié)構(gòu)非常困難。為了解決這個(gè)問題,我們?nèi)ツ晗奶煲肓薒CEL,使得創(chuàng)建任意可組合序列變得容易。
直到現(xiàn)在,LangChain中的代理都是基于AgentExecutor這個(gè)單一的類,它有固定的邏輯來運(yùn)行代理。為了支持越來越高級(jí)的代理,我們不斷地為這個(gè)類添加了更多的參數(shù),但它仍然不是真正的可組合。
幾個(gè)月前,我們推出了LangGraph,這是LangChain的一個(gè)擴(kuò)展,專門用于創(chuàng)建代理工作負(fù)載。你可以把它看作是“代理的LCEL”。它在LCEL的基礎(chǔ)上增加了兩個(gè)重要的組件:能夠輕松定義循環(huán)(這對(duì)于代理來說很重要,但對(duì)于鏈來說不是必需的)和內(nèi)置的內(nèi)存功能。
在langchain v0.2中,我們保留了舊的AgentExecutor,但LangGraph正在成為構(gòu)建代理的推薦方式。我們?cè)黾恿艘粋€(gè)預(yù)構(gòu)建的LangGraph對(duì)象,它相當(dāng)于AgentExecutor,由于它是基于LangGraph構(gòu)建的,因此更容易定制和修改。想要了解如何遷移的詳細(xì)信息,可以查看這里。
從v0.1.0發(fā)展:改進(jìn)對(duì)流媒體的支持、標(biāo)準(zhǔn)化工具調(diào)用等
自今年1月發(fā)布langchain v0.1.0以來,我們?cè)谝韵聨讉€(gè)方面取得了顯著的進(jìn)步:
- 標(biāo)準(zhǔn)化聊天模型接口:我們希望盡可能輕松地在不同的大型語言模型(LLM)之間進(jìn)行無縫切換。為此,我們已經(jīng)標(biāo)準(zhǔn)化了工具調(diào)用支持,并為結(jié)構(gòu)化輸出添加了一個(gè)標(biāo)準(zhǔn)化的接口。
- 異步支持:我們改進(jìn)了許多核心抽象的異步支持。這里有一個(gè)例子和另一個(gè)例子。特別感謝@cbornet幫助我們實(shí)現(xiàn)了這一點(diǎn)!
- 流媒體支持:流媒體對(duì)于LLM應(yīng)用至關(guān)重要,我們通過引入事件流媒體API來增強(qiáng)我們的流媒體支持。
- 合作伙伴包:擁有穩(wěn)定和可靠的集成是我們的首要任務(wù)。我們與生態(tài)系統(tǒng)合作伙伴緊密合作,在Python中為20多個(gè)供應(yīng)商添加了專用包,包括MongoDB、Miracle和Together AI,以及在JavaScript中為17個(gè)供應(yīng)商添加了專用包,包括Google VertexAI、Weaviate和Cloudflare。
如何升級(jí)
v0.2包含了許多改進(jìn),我們?cè)O(shè)計(jì)它以保持向后兼容,并盡量減少破壞性更改。我們還提供了一個(gè)遷移命令行界面(CLI)來幫助解決任何問題,并提供了突出版本間變化的文檔。
想要了解如何測(cè)試CLI并安裝v0.2預(yù)發(fā)布版,請(qǐng)查看我們的GitHub討論串。同時(shí),請(qǐng)期待在5月20日這一周發(fā)布的完整遷移指南。
為什么穩(wěn)定性對(duì)我們?nèi)绱酥匾?/h2>
我們非常重視超過100萬依賴LangChain的開發(fā)者的信任。隨著LangChain的不斷發(fā)展,我們致力于提供行業(yè)領(lǐng)先的解決方案,同時(shí)確保一個(gè)堅(jiān)實(shí)的基礎(chǔ)框架,讓工程團(tuán)隊(duì)可以自信地在生產(chǎn)環(huán)境中使用。
盡管langchain和langchain-core目前還未達(dá)到1.0版本,但我們努力最小化破壞性更改,并至少提前一個(gè)完整的破壞性發(fā)布周期(3-6個(gè)月)棄用類。我們的發(fā)布節(jié)奏也確保了定期的更新和錯(cuò)誤修復(fù),保持LangChain平臺(tái)的可靠性和生產(chǎn)就緒狀態(tài)。我們還將繼續(xù)維護(hù)0.1版本,并在未來3個(gè)月內(nèi)推送關(guān)鍵的錯(cuò)誤修復(fù)。點(diǎn)擊這里 了解更多關(guān)于我們的發(fā)布和棄用政策。
