ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

LangChain 快速上手指南:monorepo 结构、开发环境搭建与首个 PR 完整工作流

LangChain 快速上手指南:monorepo 结构、开发环境搭建与首个 PR 完整工作流 人工智能大模型AI AgentAgent 框架RAG【免费下载链接】langchainThe agent engineering platform.项目地址https://gitcode.com/GitHub_Trending/la/langchain点击查看免费下载导读LangChain 是一个 Agent 工程平台为构建 LLM 驱动的应用提供可组合的抽象Runnable、BaseChatModel、工具、提示词、消息、多厂商模型集成与编排原语。本指南基于仓库内 openwiki/quickstart.md 整理而成面向首次接触该仓库的工程师你将掌握libs/三层 monorepo 的组织方式与各层职责边界用uv完成依赖安装与 pre-commit 钩子配置熟练运行单元测试、集成测试、格式检查与 lint 命令并走完从选任务 → 改代码 → 本地校验 → 提交 PR的完整开发流程。读完本文你可以独立定位要修改的包、跑通本地校验并提交合规的 Pull Request。Monorepo 总览三层架构与各层职责LangChain 仓库在/libs/目录下采用三层架构组织代码/libs/ ├── core/ # langchain-core基础抽象Runnable、BaseChatModel、tools、prompts、messages ├── langchain_v1/ # langchainAgent 编排、工厂、中间件 ├── partners/ # 厂商集成OpenAI、Anthropic、Ollama 等 ├── standard-tests/ # 面向组件的共享一致性测试套件 ├── text-splitters/ # 文本切分工具 ├── model-profiles/ # LLM 元数据与能力画像 └── Makefile # monorepo 级构建目标三层之间依赖方向清晰core 定义接口、langchain_v1 做编排、partners 提供实现。从源码看libs/core/langchain_core/init.py 明确写道langchain-core定义 LangChain 生态的基础抽象……这里不定义任何第三方集成依赖被刻意保持非常轻量这印证了 core 层的纯净定位。而 libs/langchain_v1/langchain/init.py 是主包入口当前版本为1.4.2。何时编辑哪一层层当你需要……关键文件core新增或修改基础抽象与核心接口Runnable、BaseChatModel、messages、tools、prompts、callbacks、output parserslibs/core/langchain_core/langchain_v1构建 agent 工厂能力create_agent、中间件组合、模型初始化init_chat_model、高层编排libs/langchain_v1/langchain/agents/factory.py、libs/langchain_v1/langchain/chat_models/base.pypartners/{name}新增 LLM 厂商OpenAI、Anthropic 等实现ChatModel、处理消息转换、增加厂商特性流式、工具调用、结构化输出libs/partners/{provider}/langchain_{provider}/chat_models/base.pystandard-tests定义跨厂商复用的测试套件与 fixture用于评估 chat models、embeddings、toolslibs/standard-tests/langchain_tests/model-profiles发布模型元数据、能力画像、上下文窗口与支持特性供init_chat_model发现libs/model-profiles/langchain_model_profiles/以langchain_v1层为例libs/langchain_v1/langchain/agents/factory.py 中create_agent的签名见 factory.py#L823-L840暴露了该层编排能力的核心参数面model字符串或BaseChatModel、tools、system_prompt、middleware、response_format、state_schema、context_schema、checkpointer、store、interrupt_before/after、debug等返回一个编译好的CompiledStateGraph——这正是Agent 编排层的落点。安装与设置克隆仓库git clone https://gitcode.com/GitHub_Trending/la/langchain.git cd langchain用uv安装依赖整个 monorepo 使用uv做快速、确定性的依赖解析。先安装uv# macOS / Linux curl -LsSf https://astral.sh/uv/install.sh | sh # Windows powershell -c irm https://astral.sh/uv/install.ps1 | iex # 或者通过 Homebrew brew install uv然后在任意libs/子目录中同步依赖各包依赖分组以对应 pyproject.toml 为准# 从任意 libs/ 子目录安装全部分组test、lint、type、typing、dev uv sync --all-groups # 或者只装你需要的分组 uv sync --group test # 运行测试 uv sync --group test_integration # 运行带 VCR cassettes 的集成测试 uv sync --group lint # ruff 格式化 uv sync --group typing # mypy 类型检查 uv sync --group dev # 开发工具Jupyter、setuptools 等需要说明的是各包的make test目标实际以uv run --group test方式执行且通过.EXPORT_ALL_VARIABLES导出了UV_FROZEN true见 libs/core/Makefile即在锁定文件约束下运行保证依赖版本可复现。配置 Pre-Commit 钩子pre-commit install # 手动运行全部钩子 pre-commit run --all-files # 运行指定钩子 pre-commit run ruff --all-files钩子定义在仓库根目录 .pre-commit-config.yaml 中主要执行YAML/TOML 语法校验check-yaml --unsafe、check-toml文本规范化与尾随空格修复end-of-file-fixer、trailing-whitespace、fix-smartquotes、fix-spaces逐包格式化与 lintruff、mypy每个包core、langchain、standard-tests、text-splitters 及全部 partners都有独立的 local hook例如make -C libs/core format lint只针对^libs/core/路径下的改动触发版本一致性检查check_version钩子对每个包的pyproject.toml与版本文件如libs/core/version.py、libs/langchain_v1/langchain/__init__.py做同步校验防止包版本号漂移此外钩子还包含no-commit-to-branch禁止直接向master提交。常见开发任务运行单元测试# 在任意包目录libs/core、libs/langchain_v1 等 make test # 运行指定测试文件 make test TEST_FILEtests/unit_tests/agents/test_factory.py # 监视模式文件变更自动重跑 make test_watch # 运行扩展测试标记 pytest.mark.requires make extended_tests从 libs/core/Makefile 可以确认这些关键细节测试默认带socket 限制--disable-socket --allow-unix-socket防止意外网络调用单元测试因此是完全离线的测试通过pytest-xdist 并行运行-n auto运行前会unset 掉 LangSmith 相关环境变量LANGCHAIN_TRACING_V2、LANGCHAIN_API_KEY、LANGSMITH_API_KEY、LANGSMITH_TRACING、LANGCHAIN_PROJECT保证测试隔离测试路径镜像源码路径langchain_core/runnables/base.py→tests/unit_tests/runnables/test_base.py注意libs/langchain_v1的make test需要先通过make start_services拉起 Docker 服务Postgres、Redis定义见tests/unit_tests/agents/compose-*.yml跑完make stop_services清理make test_fast则通过LANGGRAPH_TEST_FAST1跳过这些外部服务依赖见 libs/langchain_v1/Makefile。格式化与 Lint# 格式化所有 Python 文件ruff make format # 检查 lint 问题ruff、mypy make lint # 仅做类型检查mypy make type # 只格式化改动过的文件与 main 的 git diff make format_diff工具链ruff高性能 Python linter 与 formatter统一取代 black、isort、flake8通过uv run --group lint运行。make format内部执行ruff format后再ruff check --fix见 libs/core/Makefilemypy静态类型检查器通过uv run --group typing运行使用独立缓存目录.mypy_cache两者同时集成进 pre-commit 钩子与 make 目标此外各包还提供lint_package只查包体与lint_tests只查测试等细分目标并统一先执行scripts/lint_imports.sh校验导入规范。运行集成测试集成测试会调用真实模型 API并将响应录制为 VCR cassettes# 在任意包目录 make integration_tests # 运行指定集成测试 make integration_tests TEST_FILEtests/integration_tests/test_specific.py # 录制新的 cassettes需要 .env 中的 API 凭证 make integration_tests RECORDtrue详细的 cassette 管理方式参见 Integration Testing 指南。cassettes 通常存放在各包的tests/cassettes/如 libs/langchain_v1/tests/cassettes。提交前完整本地校验# 在包目录内 make format make lint make test或者一步到位cd libs/core make format lint test集成测试也一起跑cd libs/langchain_v1 make format lint test integration_tests快速导航按任务路由到深度文档下表覆盖了常见的开发任务可直接路由到对应的 wiki 深度文档任务起点关键概念构建 AgentAgent Factorycreate_agent、AgentState、middleware 组合、图执行新增 LLM 厂商Adding a Chat Model ProviderChatModel 实现、消息转换、厂商注册、standard tests集成 OpenAIChatGPT、o1 等OpenAI IntegrationChatOpenAI、Responses API、视觉、流式、工具调用、Azure理解架构Architecture Overview三层设计、依赖流向、core vs 编排 vs partners使用 Chat 模型Chat Model InterfaceBaseChatModel 协议、流式、工具绑定、结构化输出动态初始化模型Model Initializationinit_chat_model 工厂、provider:model 语法、fallback 链组合组件链、流水线Runnables Composability、ComposabilityRunnable 协议、| 运算符、分支、重试、fallback使用工具ToolsBaseTool、schema 生成、工具调用、结果处理流式响应Streaming逐 token 输出、跨组件流式强制响应格式Structured OutputJSON schemas、响应校验、类型化输出编写中间件Agent Middleware中间件类型、组合、自定义钩子追踪 Agent 执行Agent Execution Flow运行时生命周期、循环控制、状态迁移添加可观测性Callbacks TracingCallback manager、LangSmith 集成、日志编写单元/集成测试Unit Testing、Integration Testing测试结构、fixtures、mock、VCR cassettes使用提示词Prompts模板、few-shot、变量、图像处理理解消息类型MessagesAIMessage、ToolMessage、content blocks、厂商转换使用 MCPMCP IntegrationMCP servers、工具适配器查询所有文件路径Source Map概念到路径的查找表、目录结构查看 CI/CD 流程CI/CD WorkflowsGitHub Actions、测试、lint、发布流程开发命令参考Dev Commands详细 make 目标、uv 语法、环境变量设置导航背后的源码支撑快速导航表中提到的核心概念都能在源码中找到落点Runnable / LCELRunnable协议与 LangChain Expression Language 定义在 libs/core/langchain_core/runnables/init.py其模块 docstring 说明 LCEL 构建的程序天然支持同步/异步、批量与流式四种调用形态异步支持让服务端在更高并发下弹性扩展BaseChatModel定义于 libs/core/langchain_core/language_models/chat_models.py是厂商ChatModel实现必须继承的抽象基类同时聚合了消息归一化、输出解析、回调与模型画像等基础设施init_chat_model位于 libs/langchain_v1/langchain/chat_models/base.py其_BUILTIN_PROVIDERS注册表见 base.py#L56-L97把provider名称映射到(模块路径, 类名, 创建函数)三元组——例如openai → langchain_openai.ChatOpenAI、anthropic → langchain_anthropic.ChatAnthropic并采用lru_cache缓存创建函数以避免重复导入注册表未覆盖的厂商只要安装了对应集成包也可通过显式model_provider参数使用仓库结构速览根目录/ ├── .github/ # GitHub Actions 工作流CI/CD ├── .pre-commit-config.yaml # pre-commit 钩子定义 ├── .vscode/ # VS Code 设置 ├── libs/ # monorepo 主工作区 ├── AGENTS.md # 贡献指南提 PR 前必读 └── README.md # 顶层项目概览/libs/内部core/— 基础抽象langchain-core 包core/ ├── langchain_core/ │ ├── language_models/ # BaseChatModel 与语言模型契约 │ ├── messages/ # 消息类型与 content blocks │ ├── runnables/ # Runnable 协议与运算符 │ ├── tools/ # BaseTool 与工具工具函数 │ ├── prompts/ # 提示词模板与 few-shot │ ├── callbacks/ # Callback manager 与 handlers │ └── output_parsers/ # 输出解析与校验 ├── tests/unit_tests/ # 单元测试无网络 ├── tests/integration_tests/ # 集成测试真实 API ├── Makefile # 构建目标test、lint、format └── pyproject.toml # 包依赖与元数据langchain_v1/— Agent 编排langchain 包langchain_v1/ ├── langchain/ │ ├── agents/ │ │ ├── factory.py # create_agent 函数 │ │ ├── middleware/ # 可插拔中间件钩子 │ │ └── structured_output.py # 响应 schema │ ├── chat_models/ │ │ └── base.py # init_chat_model 工厂 │ ├── mcp/ # Model Context Protocol │ └── ... ├── tests/unit_tests/ ├── tests/integration_tests/ ├── tests/cassettes/ # 用于 HTTP mock 的 VCR cassettes ├── Makefile └── pyproject.tomlpartners/— 厂商集成partners/ ├── openai/ # ChatOpenAIChat Completions 与 Responses API、embeddings ├── anthropic/ # ChatAnthropicClaude ├── ollama/ # ChatOllama本地模型 ├── groq/ # ChatGroq ├── mistralai/ # ChatMistralAI ├── huggingface/ # HuggingFace 模型/embeddings ├── deepseek/ # ChatDeepSeek └── ...20 个厂商每个 partner 采用相同的内部结构provider/ ├── langchain_{provider}/ │ ├── __init__.py # 导出 ChatModel 类 │ ├── chat_models/ │ │ └── base.py # ChatModel 实现 │ └── data/ # 模型画像 ├── tests/ │ ├── unit_tests/ # 标准测试 自定义测试 │ └── integration_tests/ ├── pyproject.toml ├── Makefile └── uv.lock部分厂商如 OpenAI支持高级 API 模式——Responses API 与结构化输出流式等细节参见 OpenAI Integration。你的第一个 PR完整工作流第 1 步挑选任务参考上面的快速导航表决定要做什么。首次贡献者参考难度分级简单补一个测试、修一个类型错误、改进文档中等新增一个中间件钩子、扩展工具接口困难新增一个厂商集成遵循 Adding a Chat Model Provider第 2 步阅读贡献指南动手写代码之前先读AGENTS.md— 约定、风格与 PR 期望相关的 wiki 页面— 你所在领域的深度上下文见上方导航表第 3 步设置你的包环境cd libs/{core|langchain_v1|partners/provider} uv sync --all-groups pre-commit install第 4 步做出修改遵循代码库中已有的风格与模式使用类型注解并与代码同步编写测试。注意 langchain_v1 包的make test需要 Docker 服务make start_services拉起 Postgres/Redis而 core 包测试完全离线。第 5 步运行本地检查make format lint test推送前所有检查必须通过。第 6 步提交与推送遵循带 scope 的 Conventional Commits 格式必填git add . # 格式type(scope): description # 示例feat(core): add streaming support to BaseChatModel # 示例fix(openai): handle timeout errors gracefully git commit -m type(scope): description git push origin your-branch分支命名遵循username/scope/description约定详见 AGENTS.md。pre-commit 钩子会自动运行若失败修复后重新提交。第 7 步打开 Pull Request将 PR 关联到相关 issue并在描述中引用你读过的 wiki 页面。LangChain 团队会 review 并给出反馈。必须了解的关键文件文件用途AGENTS.md贡献指南、风格与约定libs/Makefilemonorepo 级 make 目标lock、check-locklibs/{core,langchain_v1,partners/*}/Makefile各包的 test、lint、format 目标.pre-commit-config.yaml代码质量 git 钩子pyproject.toml逐包包元数据、依赖、构建配置其中libs/Makefile的lock目标会遍历 core、text-splitters、langchain、langchain_v1、model-profiles 五个包逐个执行uv lockcheck-lock则逐个执行uv lock --check校验锁定文件是否过期见 libs/Makefile。故障排查测试报 Socket 错误测试默认启用 socket 限制。若确实需要网络访问将用例写入tests/integration_tests/见 Integration Testing或者本地临时关闭 socket 限制uv run --group test pytest --disable-socketfalse ...导入错误或版本不一致重新生成 lockfilecd libs make lock或仅针对单个包cd libs/core uv lock版本一致性由 pre-commit 的check_version钩子守护若钩子拦截说明pyproject.toml与版本文件不同步用上述命令重新锁定即可。类型检查失败运行 mypy 查看详细错误make type参考 Chat Models 或 Runnables 页面了解类型签名模式。Pre-Commit 钩子阻止提交pre-commit 会自动修复格式与部分问题重新暂存并提交git add . git commit -m ... # 再试一次若 lint 仍失败运行make lint查看细节并手动修复。快速命令参考# 设置 uv sync --all-groups # 安装全部依赖 pre-commit install # 配置 git 钩子 # 测试 make test # 运行单元测试 make test TEST_FILEpath/ # 运行指定测试文件 make test_watch # 监视模式自动重跑 make integration_tests # 运行集成测试 # 代码质量 make format # 格式化代码ruff make lint # 检查 lintruff、mypy make type # 仅类型检查mypy # Lockfile 管理 cd libs make lock # 重新生成全部 lockfile cd libs make check-lock # 校验 lockfile 是否最新 # 提 PR 前全部检查 make format make lint make test下一步阅读AGENTS.md了解贡献约定从快速导航表中挑选与你任务匹配的 wiki 页面克隆仓库、完成环境设置做出第一个改动本地运行make format lint test校验打开 PR 并与团队交流欢迎加入 LangChain 开发赞分享人工智能大模型AI AgentAgent 框架RAG【免费下载链接】langchainThe agent engineering platform.项目地址https://gitcode.com/GitHub_Trending/la/langchain点击查看免费下载相关推荐Rematch 贡献指南从 monorepo 环境搭建到 PR 提交与文档开发的完整工作流Rematch 贡献指南从 monorepo 环境搭建到 PR 提交与文档开发的完整工作流 本篇指南基于 CONTRIBUTING.md https://li前端Budibase 贡献指南理解 Monorepo 架构、搭建本地开发环境并提交首个 PRBudibase 贡献指南理解 Monorepo 架构、搭建本地开发环境并提交首个 PR Budibase 是一个开源的 low code Web 应用构建平低代码人工智能AI Agent工作流自动化后端前端GrowthBook 本地开发环境搭建指南从 Monorepo 结构到测试、构建与 SDK 发布的完整贡献工作流GrowthBook 本地开发环境搭建指南从 Monorepo 结构到测试、构建与 SDK 发布的完整贡献工作流 本文基于 GrowthBook 官方贡献指南后端前端数据分析数据可视化上一篇developerFolio完全指南从零开始打造完美技术简历下一篇告别网络卡顿Flutter Server Box一站式Ping与iPerf网络诊断方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表