LangChain 发布政策
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。如果未发现问题,则 release candidate 将作为具有相同版本号的稳定版本发布。如果发现问题,我们将发布一个新的候选版本,其N值(例如,0.2.0rc2)。
langchain-community
langchain-community当前版本为0.2.x.
以下产品将发生次要版本增加:
- 更新到 required 的主要/次要版本
langchain-x依赖。例如,当更新所需的langchain-core从^0.2.x自0.3.0.
补丁版本将增加:
- 错误修复,
- 新功能、
- 对私有接口的任何更改,
- 对
beta特征 - 对集成的重大更改,以反映第三方服务中的重大更改。
我们将尽可能避免对补丁版本进行重大更改。
但是,如果外部 API 进行了重大更改,则对相应的langchain-community集成可以在修补程序版本中进行。
langchain-experimental
langchain-experimental当前版本为0.0.x.所有更改都将伴随着补丁版本的增加。
发布节奏
我们预计langchain和langchain-core至少 2-3 个月,因为此类版本可能包含重大更改。
补丁版本经常发布,每周最多发布几次,因为它们包含错误修复和新功能。
API 稳定性
LLM 应用程序的开发是一个快速发展的领域,我们不断向用户和社区学习。因此,我们希望langchain和langchain-core将继续发展以更好地满足我们用户的需求。
即使两者都langchain和langchain-core目前处于 1.0 之前的状态,我们致力于维护这些包中的 API 稳定性。
- 对公共 API 的中断性变更将导致次要版本升级(第二位数字)
- 任何错误修复或新功能都将导致补丁版本升级(第三位数字)
我们通常会尽量避免进行不必要的更改,并为正在删除的功能提供弃用策略。
其他软件包的稳定性
LangChain 生态中其他 package 的稳定性可能会有所不同:
langchain-community是社区维护的软件包,其中包含第三方集成。虽然我们尽最大努力审查和测试langchain-community,langchain-community预计会经历比langchain和langchain-core因为它包含许多社区贡献。- 合作伙伴包可能遵循不同的稳定性和版本控制策略,用户应参阅这些包的文档以了解更多信息;但是,通常这些软件包应该是稳定的。
什么是“API 稳定性”?
API 稳定性意味着:
- 所有公共 API(本文档中的所有内容)都不会被移动或重命名,除非提供向后兼容的别名。
- 如果向这些 API 添加新功能(这很有可能),它们不会破坏或更改现有方法的含义。换句话说,“稳定”并不意味着(不一定)意味着“完成”。
- 如果出于某种原因,必须删除或替换声明稳定的 API,则它将被声明为已弃用,但将在 API 中保留至少两个次要版本。调用 deprecated 方法时将发出警告。
标记为内部的 API
某些 API 通过以下几种方式显式标记为 “internal”:
- 一些文档引用了 internals 并提到了它们。如果文档说某些内容是内部的,则可能会更改。
- 函数、方法和其他对象,前缀为前导下划线 ()。这是指示某物是私有的标准 Python 约定;如果任何方法以 single 开头,则它是内部 API。
__- 例外:某些方法的前缀为 ,但不包含实现。这些方法旨在被提供实现的子类覆盖。此类方法通常是 LangChain 的 Public API 的一部分。
_
- 例外:某些方法的前缀为 ,但不包含实现。这些方法旨在被提供实现的子类覆盖。此类方法通常是 LangChain 的 Public API 的一部分。
弃用策略
在有更好的替代方案可用之前,我们通常会避免弃用功能。
弃用功能后,它将继续在 的当前和下一个次要版本中工作langchain和langchain-core.之后,该功能将被删除。
由于我们预计次要版本至少间隔 2-3 个月,这意味着功能可以在弃用后的 2-6 个月内删除。
在某些情况下,如果该功能不会导致包中出现问题,我们可能会允许该功能在代码库中保留更长的时间,以减轻用户的负担。