Skip to main content

设置

本指南介绍如何在本地运行该代码库并提交您的第一段代码。有关 开发容器,请参见 .devcontainer 文件夹

依赖管理:Poetry 和其他环境/依赖管理工具

本项目使用 Poetry v1.7.1+ 作为依赖管理工具。

❗注意:在安装 Poetry 之前,如果您使用 Conda,请创建并激活一个新的 Conda 环境(例如 conda create -n langchain python=3.9

安装 Poetry:有关如何安装的文档

❗注意:如果您使用 CondaPyenv 作为环境/包管理工具,在安装 Poetry 后,请告诉 Poetry 使用虚拟环境的 Python 环境(poetry config virtualenvs.prefer-active-python true

不同的包

此存储库包含多个包:

  • langchain-core: 关键抽象的基础接口以及将它们组合成链的逻辑(LangChain 表达式语言)。
  • langchain-community: 各种组件的第三方集成。
  • langchain: 构成您应用程序的认知架构的链、代理和检索逻辑。
  • langchain-experimental: 处于实验阶段的组件和链,或这些技术是新颖的,仍在测试中,或者它们需要给予 LLM 更多的访问权限,而这在大多数生产系统中是不可行的。
  • 合作伙伴集成:在 libs/partners 中的合作伙伴包,独立版本控制。

每个包都有自己的开发环境。文档从顶层的 makefile 运行,但开发分为单独的测试和发布流程。

对于这个快速入门,请从 langchain-community 开始:

cd libs/community

本地开发依赖

安装 langchain-community 开发要求(用于运行 langchain、运行示例、代码检查、格式化、测试和覆盖):

poetry install --with lint,typing,test,test_integration

然后验证依赖安装:

make test

如果在安装过程中收到 WheelFileValidationError 针对 debugpy,请确保您正在运行 Poetry v1.6.1+。此错误在旧版本的 Poetry(例如 1.4.1)中存在,并已在较新版本中解决。如果您在 v1.6.1+ 上仍然看到此错误,您也可以尝试禁用“现代安装”(poetry config installer.modern-installation false)并重新安装依赖项。有关更多详细信息,请参见 debugpy 问题

测试

注意:langchainlangchain-communitylangchain-experimental 中,一些测试依赖是可选的。有关可选依赖的详细信息,请参见以下部分。

单元测试涵盖不需要调用外部 API 的模块逻辑。 如果您添加了新逻辑,请添加单元测试。

运行单元测试:

make test

在 Docker 中运行单元测试:

make docker_tests

还有 集成测试和代码覆盖率 可用。

仅开发 langchain_core 或 langchain_experimental

如果您只开发 langchain_corelangchain_experimental,您可以简单地安装各自项目的依赖项并运行测试:

cd libs/core
poetry install --with test
make test

或者:

cd libs/experimental
poetry install --with test
make test

格式化和代码检查

在提交 PR 之前请在本地运行这些;CI 系统也会进行检查。

代码格式化

本项目的格式化通过 ruff 完成。

要对文档、食谱和模板进行格式化:

make format

要对库进行格式化,请从相关库目录运行相同的命令:

cd libs/{LIBRARY}
make format

此外,您可以使用 format_diff 命令,仅对当前分支中与主分支相比已修改的文件运行格式化:

make format_diff

当您对项目的某个子集进行了更改,并希望确保您的更改格式正确而不影响其余代码库时,这尤其有用。

代码检查

本项目的代码检查通过 ruffmypy 的组合进行。

要对文档、食谱和模板进行代码检查:

make lint

要对库进行代码检查,请从相关库目录运行相同的命令:

cd libs/{LIBRARY}
make lint

此外,您可以使用 lint_diff 命令,仅对当前分支中与主分支相比已修改的文件运行代码检查:

make lint_diff

当您仅对项目的某些部分进行了更改,并希望确保您的更改符合代码检查标准,而不必检查整个代码库时,这非常有帮助。

我们认识到代码检查可能会令人烦恼 - 如果您不想进行此操作,请联系项目维护者,他们可以帮助您。我们不希望这成为良好代码贡献的障碍。

拼写检查

本项目的拼写检查通过 codespell 完成。 请注意,codespell 查找常见的拼写错误,因此可能会出现假阳性(拼写正确但很少使用)和假阴性(未发现拼写错误)单词。

要检查本项目的拼写:

make spell_check

要在原地修复拼写错误:

make spell_fix

如果 codespell 错误地标记了一个单词,您可以通过将其添加到 pyproject.toml 文件中的 codespell 配置来跳过该单词的拼写检查。

[tool.codespell]
...
# 在此添加:
ignore-words-list = 'momento,collison,ned,foor,reworkd,parth,whats,aapply,mysogyny,unsecure'

使用可选依赖

langchainlangchain-communitylangchain-experimental 依赖可选依赖来保持这些包的轻量性。

langchain-core 和合作包 不使用 这种方式的可选依赖。

您会注意到,当您在下面添加可选依赖时,pyproject.tomlpoetry.lock 不会 被修改。

如果您要向 Langchain 添加一个新依赖,请假设它将是一个可选依赖,并且大多数用户不会安装它。

未安装该依赖的用户应该能够 导入 您的代码,而不会产生任何副作用(没有警告,没有错误,没有异常)。

要将依赖引入库,请执行以下操作:

  1. 打开 extended_testing_deps.txt 并添加依赖
  2. 添加一个单元测试,至少尝试导入新代码。理想情况下,单元测试使用轻量级的测试夹具来测试代码逻辑。
  3. 对于任何需要该依赖的单元测试,请使用 @pytest.mark.requires(package_name) 装饰器。

添加 Jupyter Notebook

如果您要添加 Jupyter Notebook 示例,您需要安装可选的 dev 依赖项。

安装 dev 依赖项:

poetry install --with dev

启动一个 notebook:

poetry run jupyter notebook

当您运行 poetry install 时,langchain 包会作为可编辑包安装在虚拟环境中,因此您的新逻辑可以导入到 notebook 中。


此页面是否有帮助?


您还可以留下详细的反馈 在 GitHub 上