LangChain 发布
LangChain 生态系统由不同的组件包组成(例如,langchain-core
,langchain
,langchain-community
,langgraph
,langserve
,合作伙伴包等。)
版本控制
langchain
和 langchain-core
langchain
和 langchain-core
遵循 语义版本控制 格式为 0.Y.Z。这些包正在快速开发中,因此当前的主要版本为 0。
次要版本的增加将发生在:
- 对任何标记为
beta
的公共接口的破坏性更改。
补丁版本的增加将发生在:
- Bug 修复
- 新功能
- 对私有接口的任何更改
- 对
beta
功能的任何更改
在次要版本之间升级时,用户应查看破坏性更改和弃用的列表。
我们会不时将包版本化为 发布候选。这些版本旨在作为稳定版本发布,但我们希望在此之前从社区获取反馈。发布候选将版本化为 0.Y.ZrcN。例如,0.2.0rc1。如果没有发现问题,发布候选将作为具有相同版本号的稳定版本发布。如果发现问题,我们将发布一个新的发布候选,并增加 N
值(例如,0.2.0rc2)。
langchain生态系统中的其他包
生态系统中的其他包(包括用户包)可以采用不同的版本控制方案,但通常期望固定到langchain
和langchain-core
的特定小版本。
发布节奏
我们预计将 小版本 的发布(例如,从 0.2.0 到 0.3.0)间隔至少 2-3 个月,因为这些版本可能包含重大更改。
补丁版本会频繁发布,因为它们包含错误修复和新功能。
API 稳定性
LLM 应用程序的开发是一个快速发展的领域,我们不断从用户和社区中学习。因此,我们预计 langchain
和 langchain-core
中的 API 将继续演变,以更好地满足用户的需求。
尽管 langchain
和 langchain-core
目前都处于 1.0 之前的状态,但我们致力于保持这些软件包的 API 稳定性。
- 对公共 API 的重大更改将导致次版本号增加(第二位数字)
- 任何错误修复或新功能将导致补丁版本号增加(第三位数字)
我们通常会尽量避免不必要的更改,并将为被移除的功能提供弃用政策。
其他包的稳定性
LangChain 生态系统中其他包的稳定性可能有所不同:
langchain-community
是一个由社区维护的包,包含第三方集成。虽然我们尽力审查和测试langchain-community
中的更改,但预计langchain-community
会经历比langchain
和langchain-core
更多的破坏性更改,因为它包含许多社区贡献。- 合作伙伴包可能遵循不同的稳定性和版本控制政策,用户应参考这些包的文档以获取更多信息;然而,通常这些包预计是稳定的。
什么是“API 稳定性”?
API 稳定性意味着:
- 所有公共 API(本文档中的所有内容)在没有提供向后兼容的别名的情况下,不会被移动或重命名。
- 如果这些 API 添加了新特性——这很有可能——它们不会破坏或改变现有方法的含义。换句话说,“稳定”并不(一定)意味着“完整”。
- 如果由于某种原因,声明为稳定的 API 必须被移除或替换,它将被声明为弃用,但在至少两个小版本中仍然保留在 API 中。当调用被弃用的方法时,将发出警告。
标记为内部的API
某些API被明确标记为“内部”,有几种方式:
- 一些文档提到内部内容,并将其称为内部。如果文档说明某个内容是内部的,则可能会发生变化。
- 以前导下划线(
_
)开头的函数、方法和其他对象。这是Python标准的私有性指示约定;如果任何方法以单个_
开头,则它是内部API。- 例外: 某些方法以
_
开头,但不包含实现。这些方法是旨在被提供实现的子类重写的。这些方法通常是LangChain的公共API的一部分。
- 例外: 某些方法以
废弃政策
我们通常会避免废弃功能,直到有更好的替代方案可用。
当某个功能被废弃时,它将在当前和下一个次要版本的 langchain
和 langchain-core
中继续有效。之后,该功能将被移除。
由于我们预计次要版本的发布间隔至少为 2-3 个月,这意味着某个功能在被废弃后可能会在 2-6 个月内被移除。
在某些情况下,如果该功能没有对软件包造成问题,我们可能会允许它在代码库中保留更长时间,以减轻用户的负担。