設定
本指南逐步說明如何在本地端執行儲存庫並提交您的第一個程式碼。關於開發容器,請參閱.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
測試
注意: 在 langchain
、langchain-community
和 langchain-experimental
中,某些測試依賴項是可選的。請參閱以下關於可選依賴項的章節。
單元測試涵蓋不需要呼叫外部 API 的模組化邏輯。如果您新增了新的邏輯,請新增單元測試。
要執行單元測試
make test
要在 Docker 中執行單元測試
make docker_tests
還有可用的整合測試和程式碼覆蓋率。
僅開發 langchain_core 或 langchain_community
如果您僅開發 langchain_core
或 langchain_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
當您僅對專案的子集進行更改,並希望確保您的更改格式正確,而不會影響程式碼庫的其餘部分時,這尤其有用。
程式碼檢查
此專案的程式碼檢查是透過 ruff 和 mypy 的組合完成的。
要為文件、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'
使用可選依賴項
langchain
、langchain-community
和 langchain-experimental
依賴可選依賴項來保持這些套件的輕量化。
langchain-core
和合作夥伴套件不以這種方式使用可選依賴項。
您會注意到,當您在下方新增可選依賴項時,pyproject.toml
和 uv.lock
不會被觸及。
如果您要將新的依賴項新增到 Langchain,請假設它將是一個可選依賴項,並且大多數使用者不會安裝它。
未安裝依賴項的使用者應該能夠導入您的程式碼,而不會產生任何副作用(沒有警告、沒有錯誤、沒有例外)。
要將依賴項引入程式庫,請執行以下操作
- 開啟 extended_testing_deps.txt 並新增依賴項
- 新增一個單元測試,至少嘗試導入新程式碼。理想情況下,單元測試會使用輕量級夾具來測試程式碼的邏輯。
- 對於任何需要依賴項的單元測試,請使用
@pytest.mark.requires(package_name)
裝飾器。
新增 Jupyter Notebook
如果您要新增 Jupyter Notebook 範例,您會希望使用 test
依賴項執行
uv run --group test jupyter notebook
當您執行 uv sync
時,langchain
套件會以可編輯的形式安裝在 virtualenv 中,因此您的新邏輯可以導入到 notebook 中。