LangChain release policy
LangChain 生态系统由不同的组件包组成(例如 langchain-core、langchain、langchain-community、langgraph、langserve、合作伙伴包等)。
版本控制
langchain、langchain-core 和集成包
langchain、langchain-core、langchain-text-splitters 和集成包(langchain-openai、langchain-anthropic 等)遵循格式为 0.Y.Z 的 语义化版本控制。这些包正处于快速开发阶段,目前包的版本号主版本号为 0。
次版本号增加将应用于:
- 对任何未标记为
beta的公共接口的重大更改。
补丁版本号增加将应用于:
- 错误修复,
- 新功能,
- 对私有接口的任何更改,
- 对
beta功能的任何更改。
在次版本之间升级时,用户应查看重大更改和弃用列表。
我们会不时地将包版本化为候选发布版。这些版本旨在作为稳定版本发布,但我们希望在发 布前获得社区的反馈。候选发布版的版本号将为 0.Y.ZrcN。例如,0.2.0rc1。如果没有发现问题,候选发布版将以相同的版本号发布为稳定版本。如果发现问题,我们将发布一个具有递增 N 值的新候选发布版(例如 0.2.0rc2)。
langchain-community
次版本号增加将应用于:
- 更新所需
langchain-x依赖项的主/次版本号。例如,当将langchain-core的所需版本从^0.2.x更新到0.3.0时。
补丁版本号增加将应用于:
- 错误修复,
- 新功能,
- 对私有接口的任何更改,
- 对
beta功能的任何更改, - 集成的重大更改,以反映第三方服务的重大更改。
在可能的情况下,我们将避免在补丁版本中进行重大更改。
但是,如果外部 API 进行了重大更改,则相应的 langchain-community 集成可能会在补丁版本中出现重大更改。
langchain-experimental
所有更改都将伴随补丁版本号的增加。
发布周期
我们预计 langchain 和 langchain-core 的次版本发布(例如,从 0.2.x 到 0.3.0)将间隔至少 2-3 个月,因为此类发布可能包含重大更改。
补丁版本将频繁发布,每周最多发布几次,因为它们包含错误修复和新功能。
API 稳定性
语言模型应用程序开发是一个快速发展的领域,我们不断从用户和社区那里学习。因此,我们预计 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 个月内可能会被删除。
在某些情况下,如果该功能不会对包造成问题,我们可能会允许该功能在更长的时间内保留在代码库中,以减轻用户的负担。