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
。所有更改都将伴随着补丁版本的增加。
发布节奏
我们预计将次要版本(例如,从0.2.x到0.3.0)的langchain
和langchain-core
发布间隔至少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个月内可能会被移除。
在某些情况下,如果该功能在包中没有引起问题,我们可能会允许该功能在代码库中保留更长时间,以减少用户的负担。