總覽
LangChain 的新功能?
以下功能已在 0.1.x 的開發期間新增
- 透過 事件串流 API 獲得更好的串流支援。
- 標準化工具呼叫支援
- 用於結構化輸出的標準化介面
- @chain 裝飾器,可更輕鬆地建立 RunnableLambdas
- https://langchain-python.dev.org.tw/docs/expression_language/how_to/inspect/
- 在 Python 中,許多核心抽象概念都獲得更好的非同步支援(感謝 @cbornet!!)
- 在
AIMessage
中包含回應中繼資料,以便輕鬆存取來自底層模型的原始輸出 - 用於視覺化 您的 runnable 或 您的 langgraph 應用程式的工具
- 跨大多數提供者的聊天訊息歷史記錄的互通性
- Python 中超過 20 個合作夥伴套件,用於熱門整合
LangChain 即將推出的功能?
- 我們一直努力開發 langgraph。我們將在其之上建置更多功能,並專注於使其成為代理架構的首選框架。
- Vectorstores V2!我們將重新審視我們的向量儲存抽象概念,以協助提高可用性和可靠性。
- 更好的文件和版本化文件!
- 我們計劃在 7 月至 9 月之間的某個時間發布重大版本 (0.3.0),以升級到完全支援 Pydantic 2,並將停止支援 Pydantic 1(包括源自 Pydantic 2 的
v1
命名空間的物件)。
變更了什麼?
由於該領域的快速發展,LangChain 也發展迅速。
本文檔旨在概述已變更的內容以及原因。
TLDR
截至 0.2.0
- 此版本完成了我們在 0.1.0 版本中開始的工作,即刪除了
langchain
對langchain-community
的依賴。 langchain
套件不再需要langchain-community
。相反,langchain-community
現在將依賴langchain-core
和langchain
。- 只要安裝了
langchain_community
,仍然依賴langchain
中已棄用匯入的使用者程式碼將繼續運作。這些匯入將在 0.4.x 版本中開始引發錯誤。
截至 0.1.0
langchain
被拆分為以下組件套件:langchain-core
、langchain
、langchain-community
、langchain-[合作夥伴]
,以提高 langchain 程式碼在生產環境中的可用性。您可以在我們的部落格上閱讀更多相關資訊。
生態系統組織
到 0.1.0 版本發布時,LangChain 已成長為一個龐大的生態系統,具有許多整合和龐大的社群。
為了提高 LangChain 在生產環境中的可用性,我們將單個 langchain
套件拆分為多個套件。這使我們能夠為 LangChain 生態系統建立良好的基礎架構,並提高 langchain
在生產環境中的可用性。
以下是生態系統的高層次細分
- langchain-core:包含核心抽象概念,包括 LangChain Runnables、用於可觀察性的工具,以及重要抽象概念的基本實作(例如,聊天模型)。
- langchain: 包含使用
langchain-core
中定義的介面建置的通用程式碼。此套件適用於在特定介面的不同實作之間可以很好地通用的程式碼。例如,create_tool_calling_agent
適用於支援工具呼叫功能的聊天模型。 - langchain-community:社群維護的第三方整合。包含基於 langchain-core 中定義的介面的整合。由 LangChain 社群維護。
- 合作夥伴套件(例如,langchain-[合作夥伴]):合作夥伴套件是專用於特別熱門的整合的套件(例如,
langchain-openai
、langchain-anthropic
等)。專用套件通常受益於更好的可靠性和支援。 langgraph
:透過將步驟建模為圖形中的邊緣和節點,使用 LLM 建置穩健且具狀態的多參與者應用程式。langserve
:將 LangChain 鏈部署為 REST API。
在 0.1.0 版本中,langchain-community
被保留為 langchain
的必要依賴項。
這允許向量儲存、聊天模型和其他整合的匯入繼續透過 langchain
工作,而不是強制使用者將所有匯入更新為 langchain-community
。
對於 0.2.0 版本,我們正在刪除 langchain
對 langchain-community
的依賴。這是我們自 0.1 版本以來一直計劃做的事情,因為我們認為這是正確的套件架構。
只要安裝了 langchain-community
,舊的匯入將繼續運作。這些匯入將在 0.4.0 版本中刪除。
為了理解為什麼我們認為打破 langchain
對 langchain-community
的依賴是最好的,我們應該理解每個套件的用途。
langchain
旨在包含高階鏈和代理架構。這些邏輯應在 ChatModel
和 Retriever
等抽象層級指定,而不應特定於任何一個整合。這有兩個主要好處
-
langchain
非常輕巧。以下是所需依賴項的完整列表(拆分後)python = ">=3.8.1,<4.0"
langchain-core = "^0.2.0"
langchain-text-splitters = ">=0.0.1,<0.1"
langsmith = "^0.1.17"
pydantic = ">=1,<3"
SQLAlchemy = ">=1.4,<3"
requests = "^2"
PyYAML = ">=5.3"
numpy = "^1"
aiohttp = "^3.8.3"
tenacity = "^8.1.0"
jsonpatch = "^1.33" -
langchain
鏈/代理在很大程度上與整合無關,這使得試驗不同的整合變得容易,並且在某個特定整合出現問題時,可以為您的程式碼提供未來保障。
還有第三個不太明顯的好處,那就是與整合無關迫使我們僅找到那些非常通用的抽象概念和架構,這些概念和架構可以在整合之間很好地通用。鑑於基礎技術的普遍能力以及空間的快速發展,擁有通用架構是為您的應用程式提供未來保障的好方法。
langchain-community
旨在擁有所有尚未在單獨的 langchain-{partner}
套件中維護的特定於整合的組件。今天,這仍然是大多數整合和大量程式碼。此程式碼主要由社群貢獻,而 langchain
主要由核心維護人員編寫。所有這些整合都使用可選依賴項和條件匯入,這可以防止依賴項膨脹和衝突,但意味著相容的依賴項版本不明確。鑑於 langchain-community
中整合的數量以及整合變更的速度,很難遵循語義版本控制,而且我們目前沒有這樣做。
所有這些都表明,langchain
依賴 langchain-community
沒有很大的好處,並且有一些明顯的缺點:langchain
中的功能無論如何都應該與整合無關,langchain-community
無法正確版本化,並且依賴 langchain-community
會增加 langchain
的 漏洞介面。
有關組織原因的更多背景資訊,請參閱我們的部落格:https://blog.langchain.dev/langchain-v0-1-0/