设置
本指南介绍了如何在本地运行仓库并签入您的第一段代码。有关 开发容器,请参阅 .devcontainer 文件夹。
依赖管理:Poetry 和其他环境/依赖管理工具
该项目使用 Poetry v1.7.1+ 作为依赖管理工具。
❗注意:在安装 Poetry 之前,如果您使用 Conda
,请创建一个新的 Conda 环境并激活它(例如,conda create -n langchain python=3.9
)。
安装 Poetry:有关如何安装它的文档。
❗注意:如果您使用 Conda
或 Pyenv
作为您的环境/包管理器,在安装 Poetry 后,请告诉 Poetry 使用 virtualenv 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
如果在安装过程中您收到针对 debugpy
的 WheelFileValidationError
,请确保您运行的是 Poetry v1.6.1+。此错误存在于旧版本的 Poetry(例如 1.4.1)中,并在更新版本中已解决。如果您在 v1.6.1+ 上仍然看到此错误,您也可以尝试禁用“现代安装”(poetry config installer.modern-installation false
)并重新安装需求。有关更多详细信息,请参阅 此 debugpy
问题。
测试
注意:在 langchain
、langchain-community
和 langchain-experimental
中,某些测试依赖项是可选的。请参阅下一节关于可选依赖项的内容。
单元测试涵盖了不需要调用外部 API 的模块化逻辑。如果您添加了新的逻辑,请添加一个单元测试。
要运行单元测试
make test
要在 Docker 中运行单元测试
make docker_tests
还有 集成测试和代码覆盖率 可用。
仅开发 langchain_core 或 langchain_community
如果您只开发 langchain_core
或 langchain_community
,您可以简单地安装相应项目的依赖项并运行测试
cd libs/core
poetry install --with test
make test
或
cd libs/community
poetry install --with test
make test
格式化和代码风格检查
在提交 PR 之前在本地运行这些命令;CI 系统也会进行检查。
代码格式化
此项目的格式化通过 ruff 完成。
要运行文档、食谱和模板的格式化
make format
要运行库的格式化,请从相关的库目录运行相同的命令
cd libs/{LIBRARY}
make format
此外,您可以使用 format_diff 命令仅对与 master 分支相比在当前分支中已修改的文件运行格式化程序
make format_diff
这在您对项目的一部分进行了更改,并希望确保您的更改已正确格式化而不会影响代码库的其余部分时尤其有用。
代码风格检查
此项目的代码风格检查通过结合使用 ruff 和 mypy 完成。
要运行文档、食谱和模板的代码风格检查
make lint
要运行库的代码风格检查,请从相关的库目录运行相同的命令
cd libs/{LIBRARY}
make lint
此外,您可以使用 lint_diff 命令仅对与 master 分支相比在当前分支中已修改的文件运行代码风格检查程序
make lint_diff
当您只对项目的某些部分进行了更改,并希望确保您的更改符合代码风格检查标准而无需检查整个代码库时,这非常有用。
我们认识到代码风格检查可能会很烦人 - 如果您不想进行代码风格检查,请联系项目维护者,他们可以帮助您进行代码风格检查。我们不希望这成为贡献优秀代码的障碍。
拼写检查
此项目的拼写检查通过 codespell 完成。请注意,codespell
会查找常见的错别字,因此它可能会出现误报(正确拼写但很少使用的单词)和漏报(未找到拼写错误的单词)。
要检查此项目的拼写
make spell_check
要修复拼写
make spell_fix
如果 codespell 错误地标记了一个单词,您可以通过将其添加到 pyproject.toml
文件中的 codespell 配置中来跳过该单词的拼写检查。
[tool.codespell]
...
# Add here:
ignore-words-list = 'momento,collison,ned,foor,reworkd,parth,whats,aapply,mysogyny,unsecure'
使用可选依赖项
langchain
、langchain-community
和 langchain-experimental
依赖于可选依赖项来保持这些包的轻量级。
langchain-core
和合作伙伴包不使用此方式的可选依赖项。
您会注意到,当您在下面添加可选依赖项时,不会触及 pyproject.toml
和 poetry.lock
。
如果您要向 Langchain 添加新的依赖项,请假设它将是可选依赖项,并且大多数用户不会安装它。
没有安装该依赖项的用户应该能够导入您的代码而没有任何副作用(没有警告、没有错误、没有异常)。
要将依赖项引入库,请执行以下操作
- 打开 extended_testing_deps.txt 并添加依赖项
- 添加一个单元测试,至少尝试导入新代码。理想情况下,单元测试会使用轻量级夹具来测试代码的逻辑。
- 请对任何需要依赖项的单元测试使用
@pytest.mark.requires(package_name)
装饰器。
添加 Jupyter Notebook
如果您要添加 Jupyter Notebook 示例,则需要安装可选的 dev
依赖项。
要安装 dev 依赖项
poetry install --with dev
启动笔记本
poetry run jupyter notebook
当您运行 poetry install
时,langchain
包会在 virtualenv 中作为可编辑包安装,因此您的新逻辑可以导入到笔记本中。