贡献集成
首先,请确保您已安装贡献代码指南中列出的所有依赖项。
您可以在以下几个不同的地方为 LangChain 贡献集成:
- 社区:用于由 LangChain 和开源社区主要维护的轻量级集成。
- 合作伙伴包:用于由 LangChain 和合作伙伴共同维护的独立包。
在大多数情况下,新集成应添加到社区包中。合作伙伴包作为独立包需要更多的维护,因此在创建新的合作伙伴包之前,请与 LangChain 团队确认。
在接下来的部分中,我们将介绍如何从一家虚构公司 Parrot Link AI
为这些包贡献代码。
社区包
langchain-community
包位于 libs/community
,包含大多数集成。
可以通过 pip install langchain-community
安装,导出的成员可以通过如下代码导入:
from langchain_community.chat_models import ChatParrotLink
from langchain_community.llms import ParrotLinkLLM
from langchain_community.vectorstores import ParrotLinkVectorStore
community
包依赖于手动安装的依赖包,因此如果尝试导入未安装的包,会出现错误。在我们的假设示例中,如果尝试在未安装 parrot-link-sdk
的情况下导入 ParrotLinkLLM
,则会看到一个 ImportError
,提示您在尝试使用时安装它。
假设我们想为 Parrot Link AI 实现一个聊天模型。我们将在 libs/community/langchain_community/chat_models/parrot_link.py
中创建一个新文件,包含以下代码:
from langchain_core.language_models.chat_models import BaseChatModel
class ChatParrotLink(BaseChatModel):
"""ChatParrotLink 聊天模型。
示例:
.. code-block:: python
from langchain_community.chat_models import ChatParrotLink
model = ChatParrotLink()
"""
...
我们将在以下位置编写测试:
- 单元测试:
libs/community/tests/unit_tests/chat_models/test_parrot_link.py
- 集成测试:
libs/community/tests/integration_tests/chat_models/test_parrot_link.py
并添加文档到:
docs/docs/integrations/chat/parrot_link.ipynb
LangChain 仓库中的合作伙伴包
在开始一个 合作伙伴 包之前,请与 LangChain 团队确认您的意图。合作伙伴包作为单独的包需要更多的维护,因此我们将关闭在未事先讨论的情况下添加新合作伙伴包的 PR。有关如何添加社区集成,请参见上面的部分。
合作伙伴包可以托管在 LangChain
单体仓库中或外部仓库中。
LangChain
仓库中的合作伙伴包位于 libs/partners/{partner}
,包的源代码在 libs/partners/{partner}/langchain_{partner}
。
用户通过 pip install langchain-{partner}
安装包,包的成员可以通过如下代码导入:
from langchain_{partner} import X
设置新包
要设置一个新的合作伙伴包,请使用最新版本的 LangChain CLI。您可以使用以下命令安装或更新它:
pip install -U langchain-cli
假设您想为一家名为 Parrot Link AI 的公司创建一个新的合作伙伴包。
然后,运行以下命令以创建一个新的合作伙伴包:
cd libs/partners
langchain-cli integration new
> Name: parrot-link
> Name of integration in PascalCase [ParrotLink]: ParrotLink
这将会在 libs/partners/parrot-link
中创建一个新的包,结构如下:
libs/partners/parrot-link/
langchain_parrot_link/ # 包含您的包的文件夹
...
tests/
...
docs/ # 引导文档笔记本,必须移动到单一存储库根目录的 /docs 中
...
scripts/ # CI 的脚本
...
LICENSE
README.md # 填写有关您的包的信息
Makefile # CI 的默认命令
pyproject.toml # 包元数据,主要由 Poetry 管理
poetry.lock # 包锁定文件,由 Poetry 管理
.gitignore
实现您的包
首先,添加您的包所需的任何依赖项,例如您公司的 SDK:
poetry add parrot-link-sdk
如果您需要单独的依赖项用于类型检查,可以将它们添加到 typing
组中:
poetry add --group typing types-parrot-link-sdk
然后,在 libs/partners/parrot-link/langchain_parrot_link
中实现您的包。
默认情况下,这将包含 Chat Model、LLM 和/或 Vector Store 的存根。您应该删除任何不使用的文件,并从 __init__.py
中移除它们。
编写单元测试和集成测试
在 tests/
目录中提供了一些基本测试。您应该添加更多测试以覆盖您包的功能。
有关运行和实现测试的信息,请参阅 测试指南。
编写文档
文档是从 docs/
目录中的 Jupyter 笔记本生成的。您应该将包含示例的笔记本放置到单体库根目录下相关的 docs/docs/integrations
目录中。
(如有必要)弃用社区集成
注意:仅在您将现有社区集成迁移到合作伙伴包时才需要此步骤。如果您集成的组件是 LangChain 中全新的(即不在 community
包中),可以跳过此步骤。
假设我们将 ChatParrotLink
聊天模型从社区包迁移到合作伙伴包。我们需要在社区包中弃用旧模型。
我们可以通过在 libs/community/langchain_community/chat_models/parrot_link.py
中添加 @deprecated
装饰器来实现。
在我们更改之前,聊天模型可能如下所示:
class ChatParrotLink(BaseChatModel):
...
在我们更改之后,它将如下所示:
from langchain_core._api.deprecation import deprecated
@deprecated(
since="0.0.<next community version>",
removal="0.2.0",
alternative_import="langchain_parrot_link.ChatParrotLink"
)
class ChatParrotLink(BaseChatModel):
...
您应该对每个迁移到合作伙伴包的组件执行此操作。
附加步骤
贡献者步骤:
- 在
.github/workflows/_integration_test.yml
中添加手动集成工作流的密钥名称 - 在
.github/workflows/_release.yml
中添加发布工作流的密钥(用于预发布测试)
维护者步骤(贡献者不应执行这些):
- 设置 pypi 和 test pypi 项目
- 将凭证密钥添加到 Github Actions
- 将软件包添加到 conda-forge
外部仓库中的合作伙伴包
外部仓库中的合作伙伴包必须在LangChain团队和合作伙伴组织之间进行协调,以确保它们得到维护和更新。
如果您有兴趣在外部仓库中创建一个合作伙伴包,请先从LangChain仓库中的一个开始,然后联系LangChain团队讨论如何将其移动到外部仓库。