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