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。如果没有发现问题,候选发布版将作为具有相同版本号的稳定版本发布。如果发现问题,我们将发布一个新的候选发布版,并将 N
值递增(例如,0.2.0rc2)。
langchain-community
langchain-community
目前的版本为 0.2.x
。
次要版本号增加的情况:
- 更新所需的
langchain-x
依赖项的主版本/次要版本。例如,将所需的langchain-core
版本从^0.2.x
更新到0.3.0
。
补丁版本号增加的情况:
- 错误修复,
- 新功能,
- 对私有接口的任何更改,
- 对
beta
功能的任何更改, - 为了反映第三方服务的重大更改,对集成进行的重大更改。
在可能的情况下,我们将避免在补丁版本中进行重大更改。但是,如果外部 API 进行了重大更改,则相应的 langchain-community
集成可能会在补丁版本中发生重大更改。
langchain-experimental
langchain-experimental
目前的版本为 0.0.x
。所有更改都将伴随补丁版本号的增加。
发布节奏
我们预计 langchain
和 langchain-core
的次要版本发布(例如,从 0.2.x 到 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 个月内被删除。
在某些情况下,如果该功能不会在软件包中引起问题,为了减轻用户的负担,我们可能会允许该功能在代码库中保留更长的时间。