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稳定性
大型语言模型应用程序的开发是一个快速发展的领域,我们一直在从用户和社区中不断学习。因此,我们预计 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
某些API以几种方式明确标记为“内部”:
- 一些文档会提到内部实现,并明确指出这一点。如果文档中说明某部分内容为内部使用,请注意它可能会发生变化。
- 以单下划线开头的函数、方法和其他对象
_)。这是标准的Python约定,用于表示某个内容是私有的;如果任何方法以单个下划线开头,则表示该方法为私有方法。_,这是一个内部API。- 异常: 某些方法以
_为前缀,但未包含实现。这些方法 旨在 由提供实现的子类重写。此类方法通常属于 LangChain 的 公共 API。
- 异常: 某些方法以
弃用策略
我们通常会避免弃用功能,直到有更优的替代方案出现为止。
当一个功能被弃用时,它将在 langchain 和 langchain-core 的当前版本和下一个次要版本中继续正常工作。之后,该功能将被移除。
由于我们计划将小版本发布之间的时间间隔至少拉长到2-3个月,这意味着一个功能可以在被弃用后的2-6个月内被移除。
在某些情况下,如果该功能在包中未引发问题,我们可能会允许其在代码库中保留更长时间,以减轻用户的负担。