贡献集成
首先,请确保你已安装 贡献代码 指南中概述的所有依赖项。
你可以通过几种不同的方式为 LangChain 贡献集成
- 社区:对于主要由 LangChain 和开源社区维护的轻量级集成。
- 合作伙伴包:对于由 LangChain 和合作伙伴共同维护的独立包。
在大多数情况下,新集成应添加到社区包中。合作伙伴包需要更多维护作为独立包,因此请在创建新的合作伙伴包之前与 LangChain 团队确认。
在以下部分中,我们将介绍如何从一家名为 Parrot Link AI
的虚构公司为这些包中的每一个做出贡献。
社区包
@langchain/community
包位于 libs/langchain-community
中,包含大多数集成。
它可以通过例如 npm install @langchain/community
安装,导出的成员可以通过以下代码导入
import { ChatParrotLink } from "@langchain/community/chat_models/parrot_link";
import { ParrotLinkLLM } from "@langchain/community/llms/parrot_link";
import { ParrotLinkVectorStore } from "@langchain/community/vectorstores/parrot_link";
@langchain/community
包依赖于手动安装的依赖包,因此如果你尝试导入未安装的包,你将看到错误。在我们这个虚构的例子中,如果你尝试导入 ParrotLinkLLM
而没有安装 parrot-link-sdk
,你会看到一个错误,提示你该包导入失败。
假设我们想要为 Parrot Link AI 实现一个聊天模型。我们将在 libs/langchain-community/src/chat_models/parrot_link.ts
中创建一个新文件,其中包含以下代码
import {
SimpleChatModel,
} from "@langchain/core/language_models/chat_models";
export class ChatParrotLink extends SimpleChatModel {
...
测试位于 src/
目录中,因此你可以在以下文件中编写它们
- 单元测试:
libs/langchain-community/src/chat_models/tests/parrot_link.test.ts
- 集成测试:
libs/langchain-community/src/chat_models/tests/parrot_link.int.test.ts
单元测试不应该有任何外部 API 调用或需要任何环境变量。
你应该将文档添加到
docs/core_docs/docs/integrations/chat/parrot_link.mdx
LangChain 仓库中的合作伙伴包
合作伙伴包可以托管在 LangChain
单仓库中。
LangChain
仓库中的合作伙伴包应放置在 libs/langchain-{partner}
下
用户可以通过 npm install @langchain/{partner}
安装包,包成员可以通过以下代码导入
import { X } from "@langchain/{partner}";
设置一个新的包
要设置一个新的合作伙伴包,你可以使用 create-langchain-integration
,这是一个实用工具,可以自动为支持 ESM + CJS 入口点的仓库构建脚手架。你可以在 libs/
文件夹中运行它
cd libs/
npx create-langchain-integration
然后,按照提示命名你的包。默认包将包含聊天模型、LLM 和/或向量存储的存根。你应该删除任何不使用的文件并将它们从 index.ts
中删除。
依赖项
如果你的包需要依赖项,例如你的公司的 SDK,你可以在包的 package.json
文件中像往常一样添加它们
npm install parrot-link-sdk
编写单元测试和集成测试
src/tests/
目录中提供了一些基本测试。你应该添加更多测试来涵盖包的功能。
有关运行和实现测试的信息,请参阅 测试指南。
编写文档
请复制并使用以下位置的适当模板
https://github.com/langchain-ai/langchainjs/tree/main/libs/langchain-scripts/src/cli/docs/templates
你应该将包含示例的笔记本放置在单仓库根目录中的相关 docs/core_docs/docs/integrations
目录中。
(如有必要)弃用社区集成
注意:这只有在你将现有的社区集成迁移到合作伙伴包时才需要。如果你集成的组件是 LangChain 中的新内容(即不在 community
包中),你可以跳过此步骤。
假设我们将 ChatParrotLink
聊天模型从社区包迁移到合作伙伴包。我们需要在社区包中弃用旧模型。我们可以使用 @deprecated
TSDoc 注释来做到这一点。
在我们进行更改之前,我们的聊天模型可能如下所示
class ChatParrotLink extends SimpleChatModel {
...
在我们进行更改之后,它将如下所示
/** @deprecated Install and import from `@langchain/parrot-link` instead. */
class ChatParrotLink extends SimpleChatModel {
...
你应该对每个要迁移到合作伙伴包的组件执行此操作。