跳到主要內容
Open on GitHub

總覽

LangChain 的新功能?

以下功能已在 0.1.x 的開發期間新增

LangChain 即將推出的功能?

  • 我們一直努力開發 langgraph。我們將在其之上建置更多功能,並專注於使其成為代理架構的首選框架。
  • Vectorstores V2!我們將重新審視我們的向量儲存抽象概念,以協助提高可用性和可靠性。
  • 更好的文件和版本化文件!
  • 我們計劃在 7 月至 9 月之間的某個時間發布重大版本 (0.3.0),以升級到完全支援 Pydantic 2,並將停止支援 Pydantic 1(包括源自 Pydantic 2 的 v1 命名空間的物件)。

變更了什麼?

由於該領域的快速發展,LangChain 也發展迅速。

本文檔旨在概述已變更的內容以及原因。

TLDR

截至 0.2.0

  • 此版本完成了我們在 0.1.0 版本中開始的工作,即刪除了 langchainlangchain-community 的依賴。
  • langchain 套件不再需要 langchain-community。相反,langchain-community 現在將依賴 langchain-corelangchain
  • 只要安裝了 langchain_community,仍然依賴 langchain 中已棄用匯入的使用者程式碼將繼續運作。這些匯入將在 0.4.x 版本中開始引發錯誤。

截至 0.1.0

  • langchain 被拆分為以下組件套件:langchain-corelangchainlangchain-communitylangchain-[合作夥伴],以提高 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-openailangchain-anthropic 等)。專用套件通常受益於更好的可靠性和支援。
  • langgraph:透過將步驟建模為圖形中的邊緣和節點,使用 LLM 建置穩健且具狀態的多參與者應用程式。
  • langserve:將 LangChain 鏈部署為 REST API。

在 0.1.0 版本中,langchain-community 被保留為 langchain 的必要依賴項。

這允許向量儲存、聊天模型和其他整合的匯入繼續透過 langchain 工作,而不是強制使用者將所有匯入更新為 langchain-community

對於 0.2.0 版本,我們正在刪除 langchainlangchain-community 的依賴。這是我們自 0.1 版本以來一直計劃做的事情,因為我們認為這是正確的套件架構。

只要安裝了 langchain-community,舊的匯入將繼續運作。這些匯入將在 0.4.0 版本中刪除。

為了理解為什麼我們認為打破 langchainlangchain-community 的依賴是最好的,我們應該理解每個套件的用途。

langchain 旨在包含高階鏈和代理架構。這些邏輯應在 ChatModelRetriever 等抽象層級指定,而不應特定於任何一個整合。這有兩個主要好處

  1. 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"
  2. 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/


此頁面是否有幫助?