LangChain 发布规则
LangChain 生态系统由不同的组件包组成(例如 langchain-core
、langchain
、langchain-community
、langgraph
、langserve
、合作伙伴包等)。
版本控制
langchain
和 langchain-core
langchain
和 langchain-core
遵循 语义化版本控制,版本格式为 0.Y.Z。这些包正在快速开发中,因此当前版本号的主版本号为 0。
次要版本号将会因以下情况增加:
- 对任何标记为
beta
的公共接口进行重大更改。
补丁版本号将会因以下情况增加:
修复错误
新功能
对私有接口的任何更改
对
beta
功能的任何更改
在升级次要版本号时,用户应该查看重大更改和弃用列表。
我们会不时将包版本化为发布候选版。这些版本旨在作为稳定版本发布,但在发布之前我们希望从社区获得反馈。发布候选版的版本号为 0.Y.ZrcN。例如,0.2.0rc1。如果没有发现问题,发布候选版将以相同版本号发布为稳定版本。如果发现问题,我们将发布一个新的发布候选版,版本号中的 N
值会递增(例如,0.2.0rc2)。
LangChain 生态系统中的其他包
生态系统中的其他包(包括用户包)可以采用不同的版本控制方案,但通常应该固定到特定的 langchain
和 langchain-core
次要版本。
发布频率
我们预计将 langchain
和 langchain-core
的次要版本(例如,从 0.2.0 到 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个月内被移除。
在某些情况下,如果一个功能在软件包中没有引起问题,我们可能会允许该功能在代码库中保留更长的时间,以减轻用户的负担。