跳到主要內容
Open on GitHub

設定

本指南逐步說明如何在本地端執行儲存庫並提交您的第一個程式碼。關於開發容器,請參閱.devcontainer 資料夾

依賴管理:uv 和其他 env/依賴管理器

此專案使用 uv v0.5+ 作為依賴管理器。

安裝 uv關於如何安裝的說明文件

不同的套件

此儲存庫包含多個套件

  • langchain-core:關鍵抽象的基本介面,以及將它們組合成鏈的邏輯(LangChain 運算式語言)。
  • langchain-community:各種組件的第三方整合。
  • langchain:構成應用程式認知架構的鏈、代理和檢索邏輯。
  • langchain-experimental:實驗性的組件和鏈,無論是技術新穎且仍在測試中,還是它們需要給予 LLM 比大多數生產系統中可能更多的存取權限。
  • 合作夥伴整合:libs/partners 中的合作夥伴套件,它們是獨立的版本控制。

每個套件都有自己的開發環境。文件從頂層的 makefile 執行,但開發分散在不同的測試和發布流程中。

對於此快速入門,請從 langchain-community 開始

cd libs/community

本地開發依賴項

安裝 langchain-community 開發需求(用於執行 langchain、執行範例、程式碼檢查、格式化、測試和覆蓋率)

uv sync

然後驗證依賴項安裝

make test

測試

注意:langchainlangchain-communitylangchain-experimental 中,某些測試依賴項是可選的。請參閱以下關於可選依賴項的章節。

單元測試涵蓋不需要呼叫外部 API 的模組化邏輯。如果您新增了新的邏輯,請新增單元測試。

要執行單元測試

make test

要在 Docker 中執行單元測試

make docker_tests

還有可用的整合測試和程式碼覆蓋率

僅開發 langchain_core 或 langchain_community

如果您僅開發 langchain_corelangchain_community,您可以簡單地安裝各個專案的依賴項並執行測試

cd libs/core
make test

cd libs/community
make test

格式化和程式碼檢查

在提交 PR 之前在本地端執行這些;CI 系統也會檢查。

程式碼格式化

此專案的格式化是透過 ruff 完成的。

要為文件、cookbook 和範本執行格式化

make format

要為程式庫執行格式化,請從相關的程式庫目錄執行相同的命令

cd libs/{LIBRARY}
make format

此外,您可以僅對目前分支中相較於 master 分支已修改的文件執行格式化程式,使用 format_diff 命令

make format_diff

當您僅對專案的子集進行更改,並希望確保您的更改格式正確,而不會影響程式碼庫的其餘部分時,這尤其有用。

程式碼檢查

此專案的程式碼檢查是透過 ruffmypy 的組合完成的。

要為文件、cookbook 和範本執行程式碼檢查

make lint

要為程式庫執行程式碼檢查,請從相關的程式庫目錄執行相同的命令

cd libs/{LIBRARY}
make lint

此外,您可以僅對目前分支中相較於 master 分支已修改的文件執行 linter,使用 lint_diff 命令

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'

使用可選依賴項

langchainlangchain-communitylangchain-experimental 依賴可選依賴項來保持這些套件的輕量化。

langchain-core 和合作夥伴套件不以這種方式使用可選依賴項。

您會注意到,當您在下方新增可選依賴項時,pyproject.tomluv.lock 不會被觸及。

如果您要將新的依賴項新增到 Langchain,請假設它將是一個可選依賴項,並且大多數使用者不會安裝它。

未安裝依賴項的使用者應該能夠導入您的程式碼,而不會產生任何副作用(沒有警告、沒有錯誤、沒有例外)。

要將依賴項引入程式庫,請執行以下操作

  1. 開啟 extended_testing_deps.txt 並新增依賴項
  2. 新增一個單元測試,至少嘗試導入新程式碼。理想情況下,單元測試會使用輕量級夾具來測試程式碼的邏輯。
  3. 對於任何需要依賴項的單元測試,請使用 @pytest.mark.requires(package_name) 裝飾器。

新增 Jupyter Notebook

如果您要新增 Jupyter Notebook 範例,您會希望使用 test 依賴項執行

uv run --group test jupyter notebook

當您執行 uv sync 時,langchain 套件會以可編輯的形式安裝在 virtualenv 中,因此您的新邏輯可以導入到 notebook 中。


此頁面是否對您有所幫助?