贡献集成
首先,请确保您已经具备了代码贡献指南中列出的所有依赖项。
您可以在以下几个不同的地方为 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
的 monorepo 中,也可以托管在外部仓库中。
在 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/ # 初始化的文档笔记本,必须移动到 monorepo 根目录的 /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
中实现您的包。
默认情况下,这将包括聊天模型、LLM 和/或向量存储的存根。您应该删除您不打算使用的任何文件,并从 __init__.py
中删除它们。
编写单元测试和集成测试
一些基本测试位于 tests/
目录中。您应该添加更多的测试来覆盖您的包的功能。
有关运行和实现测试的信息,请参阅测试指南。
编写文档
文档是从 Jupyter 笔记本在 docs/
目录中生成的。您应该将带有示例的笔记本放到相关的 docs/docs/integrations
目录中,位于 monorepo 根目录下。
(如有必要)弃用社区集成
注意:只有在将现有的社区集成迁移到合作伙伴包中时才需要这样做。如果您要集成的组件是 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.<下一个社区版本>",
removal="0.2.0",
alternative_import="langchain_parrot_link.ChatParrotLink"
)
class ChatParrotLink(BaseChatModel):
...
您应该为每个要迁移到合作伙伴包的组件执行此操作。
附加步骤
贡献者步骤:
在
.github/workflows/_integration_test.yml
中的手动集成工作流程中添加秘密名称在
.github/workflows/_release.yml
中的发布工作流程中添加秘密(用于预发布测试)
维护者步骤(贡献者不应执行以下步骤):
设置 pypi 和测试 pypi 项目
将凭据秘密添加到 Github Actions
将包添加到 conda-forge
外部存储库中的合作伙伴包
外部存储库中的合作伙伴包必须在 LangChain 团队和合作伙伴组织之间协调,以确保它们得到维护和更新。
如果您有兴趣在外部存储库中创建合作伙伴包,请先在 LangChain 存储库中创建一个,然后与 LangChain 团队联系,讨论如何将其移至外部存储库。