Skip to main content
Open on GitHub

LangChain 发布政策

LangChain 生态系统由不同的组件包组成(例如,langchain-corelangchainlangchain-communitylanggraphlangserve、合作伙伴包等)

版本控制

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)的 langchainlangchain-core 之间至少间隔 2-3 个月,因为这些版本可能包含破坏性变更。

补丁版本发布频繁,每周可达数次,因为它们包含错误修复和新功能。

API 稳定性

大语言模型(LLM)应用的开发是一个快速发展的领域,我们不断从用户和社区中学习。因此,我们预计langchainlangchain-core中的API将持续演进,以更好地满足用户的需求。

尽管 langchainlangchain-core 目前仍处于 1.0 版本之前状态,但我们致力于保持这些包的 API 稳定性。

  • 公共 API 的破坏性更改将导致次要版本号(第二位数字)的升级
  • 任何错误修复或新功能将导致补丁版本升级(第三位数字)

我们通常会尽量避免进行不必要的更改,并会为被移除的功能提供弃用策略。

其他包的稳定性

LangChain 生态系统中其他包的稳定性可能有所不同:

  • langchain-community 是一个由社区维护的软件包,包含第三方集成。尽管我们尽力审查和测试 langchain-community 中的更改,但 langchain-community 预计会比 langchainlangchain-core 经历更多的破坏性更改,因为它包含许多社区贡献。
  • 合作伙伴包可能遵循不同的稳定性和版本控制策略,用户应参考这些包的文档以获取更多信息;但一般来说,这些包预期是稳定的。

什么是"API 稳定性"?

API 稳定性意味着:

  • 所有公共 API(本文档中的所有内容)在不会向后兼容的别名提供之前,都不会被移动或重命名。
  • 如果这些 API 中添加了新功能——这很有可能发生——它们也不会破坏或改变现有方法的含义。换句话说,“稳定”并不(必然)意味着“完整”。
  • 如果由于某种原因,某个被声明为稳定的API必须被移除或替换,它将被标记为已弃用,但在该API中至少保留两个次要版本。当调用已弃用的方法时,将发出警告。

标记为内部的 APIs

某些 API 在多个方面被明确标记为“内部”:

  • 某些文档会引用内部机制并明确说明其为内部内容。如果文档指出某内容是内部的,则其可能会发生变更。
  • 函数、方法和其他以前置下划线开头的对象(_)。这是指示某内容为私有的标准 Python 约定;如果任何方法以单个_开头,则它属于内部 API。
    • 例外:某些方法以_开头,但不包含实现。这些方法旨在由提供实现的子类进行重写。此类方法通常属于 LangChain 的公共 API

弃用策略

我们通常会在有更优替代方案之前,避免弃用任何功能。

当一个功能被弃用时,它将在langchainlangchain-core的当前及下一个次要版本中继续工作。之后,该功能将被移除。

由于我们预计将次要版本的发布间隔至少延长至2-3个月,这意味着一个功能在被弃用后的2-6个月内可能会被移除。

在某些情况下,如果该功能未在包中引发问题,我们可能会允许其在代码库中保留更长时间,以减轻用户的负担。