langchain

基本情報

項目 内容
モジュールパス .
種別 モノレポルート(LLM アプリケーション開発フレームワーク)
ファイル数 3
サブモジュール数 3

概要

LangChain は LLM(大規模言語モデル)を活用したアプリケーション開発のためのオープンソースフレームワークであり、本リポジトリはそのモノレポルートである。libs/ 配下に LangChain エコシステムを構成する全 Python パッケージ(コアライブラリ langchain-core、メインディストリビューション langchain、15 のパートナー統合パッケージ、テキストスプリッター、標準テストフレームワーク、モデルプロファイル CLI)を格納し、.github/ が CI/CD パイプライン・Issue/PR 管理・リリース自動化を提供する。リポジトリルートにはコード品質管理(.pre-commit-config.yaml.markdownlint.json)、開発環境標準化(.devcontainer/)、AI アシスタント向け MCP サーバー定義(.mcp.json)といったプロジェクトインフラを配置し、エコシステム全体の開発・品質・運用を一元管理する構成となっている。

設計パターン

パターン名 適用範囲 説明
Monorepo リポジトリ全体 全パッケージ・CI/CD・開発環境設定を単一リポジトリで管理し、パッケージ間の整合性を保証
Abstract Base Class (ABC) libs/core(22+ クラス) BaseChatModel、BaseRetriever、VectorStore 等の抽象インターフェースをコア層で一元定義し、パートナーパッケージが具象実装を提供
Adapter libs/partners(全 15 パッケージ) プロバイダ固有 API を LangChain 統一インターフェースに変換
Factory libs/langchain_v1 init_chat_model() / init_embeddings() / create_agent() によるモデル名文字列からのインスタンス動的生成
Facade libs/langchain_v1 langchain_core / langgraph のシンボルを langchain 名前空間に集約し統一インポートパスを提供
Template Method libs/core, libs/standard-tests sync メソッドをサブクラスが実装し async はデフォルトフォールバック。テスト基底クラスがテストロジック骨格を定義
Chain of Responsibility libs/core(RunnableSequence) パイプ \| 演算子で Runnable を直列接続する LCEL パイプライン
Observer libs/core(callbacks, tracers) LLM・チェーン・ツール実行のライフサイクルイベント通知
Reusable Workflow .github/workflows/_*.yml workflow_call トリガーで再利用可能な共通 CI 処理を集約
Dynamic Matrix / Fan-out Fan-in .github/workflows/check_diffs.yml 変更検出結果からマトリクスを動的構成し ci_success ゲートで結果集約
Convention over Configuration .pre-commit-config.yaml 各パッケージの Makefile が format lint / check_version という統一ターゲット名を提供する規約に依存
File-path Routing .pre-commit-config.yaml 変更ファイルのパスに基づいて該当パッケージのフックのみを実行
宣言的設定 .devcontainer, .markdownlint.json, .mcp.json 設定ファイルによるインフラ定義・開発環境構成・ツール接続の宣言的記述
Lazy Import libs/core(18 サブパッケージ)、libs/langchain(800+ shim) PEP 562 __getattr__ による遅延インポートで起動時間を最適化
Deprecation Gateway libs/langchain(create_importer) 旧インポートパスを維持しながら非推奨警告を発行

アーキテクチャ

モジュール構成

langchain/
├── .devcontainer/  - VS Code Dev Containers および GitHub Codespaces で使用される LangChain プロジェクトの開発コンテナ環境を定義する設定モジュール。
├── .github/  - LangChain モノレポの CI/CD パイプライン、Issue/PR 管理、依存関係自動更新を包括的に提供するプロジェクト運用インフラモジュール。
├── libs/  - `libs` は LangChain フレームワークのモノレポにおける全 Python パッケージのルートディレクトリであり、LLM アプリケーション開発エコシステム全体を構成する 7 つのサブモジュールを格納する。
├── .markdownlint.json  - markdownlint(Markdown の静的解析ツール)のプロジェクトレベル設定ファイル。
├── .mcp.json  - LangChain プロジェクトにおける MCP(Model Context Protocol)サーバーの接続定義ファイル。
└── .pre-commit-config.yaml  - LangChain モノレポ全体の pre-commit フック設定ファイル。

コンポーネント関連図

Mermaid形式:

graph TD
    subgraph root["langchain monorepo"]
        subgraph libs["libs/ (Python パッケージ群)"]
            Core["core/<br/>langchain-core<br/>抽象基底・LCEL"]
            V1["langchain_v1/<br/>langchain 現行版"]
            Classic["langchain/<br/>langchain-classic<br/>レガシー"]
            Partners["partners/<br/>15 パートナー"]
            TS["text-splitters/"]
            ST["standard-tests/"]
            MP["model-profiles/"]
        end

        subgraph infra["プロジェクトインフラ"]
            GH[".github/<br/>CI/CD・運用"]
            PreCommit[".pre-commit-config.yaml"]
            DevC[".devcontainer/"]
            MLint[".markdownlint.json"]
            MCP[".mcp.json"]
        end
    end

    V1 --> Core
    Classic --> Core
    Partners --> Core
    TS --> Core
    ST --> Core
    Partners --> ST
    V1 --> Partners

    GH -->|テスト・リント・リリース| libs
    PreCommit -->|format / lint / check_version| libs
    DevC -->|ビルド・同期| libs

機能一覧

機能名 説明 主要ファイル / サブモジュール
LCEL パイプライン構築 \| 演算子による Runnable チェーンの宣言的構築と統一実行インターフェース(invoke / stream / batch / async) libs/core
言語モデル抽象化 BaseChatModel / BaseLLM による統一インターフェース、構造化出力、キャッシュ、レート制限 libs/core
エージェントグラフ生成 create_agent() によるツール呼び出しループ、17 種ミドルウェア(PII 墨消し、サンドボックス、HITL 等) libs/langchain_v1
チャットモデル統一初期化 init_chat_model() による 28 プロバイダ対応の統一モデル初期化 libs/langchain_v1
埋め込みモデル統一初期化 init_embeddings() による 10 プロバイダ対応の統一埋め込み初期化 libs/langchain_v1
AI プロバイダ統合 15 パートナーパッケージによるチャットモデル・LLM・埋め込み・ベクトルストア・ツールの統合 libs/partners
テキスト分割 テキスト・HTML・JSON・Markdown・LaTeX・ソースコードの多形式チャンキング(20+ スプリッター) libs/text-splitters
標準テストフレームワーク ChatModel / Embeddings / VectorStore 等のコンポーネント別テスト基底クラス、VCR カセット対応 libs/standard-tests
モデルプロファイル管理 models.dev API からのメタデータ取得・TOML augmentation マージ・_profiles.py 自動生成 libs/model-profiles
レガシーチェーン・エージェント AgentExecutor、Chain、BaseMemory、800+ 後方互換 shim(メンテナンスモード) libs/langchain
ダイナミック CI パイプライン 変更差分からテスト対象を動的に決定し、リント・テスト・コンパイルチェックを並列実行 .github/workflows
パッケージリリース PyPI へのビルド・テスト・公開を多段パイプラインで実行(Trusted Publishing 対応) .github/workflows/_release.yml
PR/Issue 管理自動化 自動ラベリング、タイトル規約強制、Issue リンク強制、チェックボックス検証、外部コントリビューター管理 .github/workflows, .github/scripts
依存関係自動更新 GitHub Actions と Python パッケージの依存関係を月次で自動チェック・更新 PR 作成 .github/dependabot.yml
コミット前品質チェック YAML/TOML 構文検証、フォーマット・リント、バージョン整合性チェックのパッケージ単位実行 .pre-commit-config.yaml
開発環境標準化 Docker Compose ベースの Dev Container で Python 3.11 + uv + VS Code 拡張を自動セットアップ .devcontainer
Markdown 品質管理 markdownlint によるリポジトリ全体の Markdown ファイルスタイル統一 .markdownlint.json
AI ドキュメントアクセス MCP サーバー定義による LangChain ドキュメント・API リファレンスへのプログラマティックアクセス .mcp.json

公開インターフェース

主要な抽象基底クラス(libs/core)

名前 種別 用途
Runnable / RunnableSerializable class すべてのチェーンコンポーネントの基底プロトコル
BaseChatModel / BaseLLM class 言語モデルの抽象基底
BaseRetriever class ドキュメントリトリーバーの抽象基底
VectorStore class ベクトルストアの抽象基底
BaseTool class ツールの抽象基底
Embeddings class テキスト埋め込みの抽象基底
BaseCache / BaseStore class キャッシュ・KV ストアの抽象基底
BaseCallbackHandler / BaseTracer class コールバック・トレーシングの抽象基底
BaseOutputParser class 出力パーサーの抽象基底
TextSplitter class テキスト分割の抽象基底

ファクトリ関数(libs/langchain_v1)

名前 種別 用途
create_agent function ツール呼び出しループを持つエージェントグラフ生成
init_chat_model function 26 プロバイダ対応のチャットモデル統一初期化
init_embeddings function 10 プロバイダ対応の埋め込みモデル統一初期化

主要なパートナークラス(libs/partners)

名前 種別 用途
ChatAnthropic class Claude モデル統合
ChatOpenAI / AzureChatOpenAI class OpenAI / Azure OpenAI 統合
ChatGroq class Groq 統合
ChatMistralAI class Mistral AI 統合
ChatOllama class Ollama ローカル統合
OpenAIEmbeddings class OpenAI 埋め込み
Chroma class ChromaDB ベクトルストア
QdrantVectorStore class Qdrant ベクトルストア

テストフレームワーク基底クラス(libs/standard-tests)

名前 種別 用途
ChatModelUnitTests / ChatModelIntegrationTests class チャットモデルの標準テスト基底
EmbeddingsUnitTests / EmbeddingsIntegrationTests class 埋め込みの標準テスト基底
VectorStoreIntegrationTests class ベクトルストアの標準テスト基底
ToolsUnitTests / ToolsIntegrationTests class ツールの標準テスト基底

再利用可能ワークフロー(.github/workflows)

名前 種別 用途
_lint.yml reusable workflow 指定パッケージに対するリンティング実行
_test.yml reusable workflow 指定パッケージに対するユニットテスト実行
_test_pydantic.yml reusable workflow 指定 Pydantic バージョンでのテスト実行
_release.yml reusable workflow / workflow_dispatch PyPI パッケージリリースパイプライン

CLI インターフェース

コマンド 提供元 説明
make lock / make check-lock libs/Makefile コアパッケージの uv.lock 一括管理
langchain-profiles refresh / summarize libs/model-profiles モデルプロファイル更新・変更サマリー生成
各パッケージの make test / make lint / make format libs/ 全サブモジュール 開発ワークフロー標準化

MCP サーバーエンドポイント

名前 種別 用途
docs-langchain MCP server (HTTP) LangChain ドキュメントへのプログラマティックアクセス(https://docs.langchain.com/mcp
reference-langchain MCP server (HTTP) LangChain API リファレンスへのプログラマティックアクセス(https://reference.langchain.com/mcp

依存関係

外部依存(このモジュールが依存する外部パッケージ)

Python ランタイム依存

パッケージ 主要利用先 用途
pydantic (>=2.7.4,<3.0.0) libs/core、全パートナー データモデル基盤、バリデーション
langsmith (>=0.3.45,<1.0.0) libs/core、libs/langchain_v1 LangSmith トレーシング・Hub 連携
langchain-protocol (>=0.0.17) libs/core プロトコル型定義の共有基盤
langgraph libs/langchain_v1 グラフ構築・実行制御・ストリーム変換
tenacity (!=8.4.0,>=8.1.0,<10.0.0) libs/core、libs/partners(mistralai, fireworks) リトライ制御
jsonpatch (>=1.33.0,<2.0.0) libs/core ストリーミング差分配信
PyYAML (>=5.3.0,<7.0.0) libs/core、libs/standard-tests YAML パース
typing-extensions (>=4.7.0,<5.0.0) libs/core、全パートナー 型ヒント拡張
packaging (>=23.2.0) libs/core、libs/partners(huggingface)、.github/scripts バージョン比較
uuid-utils (>=0.12.0,<1.0) libs/core UUIDv7 生成
httpx libs/partners(openai, mistralai, fireworks, openrouter, ollama)、libs/model-profiles HTTP クライアント
tiktoken libs/partners(openai)、libs/text-splitters OpenAI トークンカウント
numpy libs/partners(chroma, qdrant, openai) ベクトル演算・コサイン類似度
anthropic libs/partners(anthropic) Anthropic API クライアント
openai libs/partners(openai, fireworks, deepseek, xai) OpenAI 互換クライアント
groq libs/partners(groq) Groq SDK
ollama libs/partners(ollama) Ollama SDK
chromadb libs/partners(chroma) ChromaDB クライアント
qdrant_client libs/partners(qdrant) Qdrant クライアント
requests .github/scripts PyPI JSON API への HTTP リクエスト

開発・ビルド・テスト依存

パッケージ 主要利用先 用途
hatchling 全パッケージ ビルドバックエンド
pytest (>=9.0.3) 全パッケージ テストフレームワーク
ruff (>=0.15.0) 全パッケージ リンティング・フォーマット
mypy (>=2.1.0) 大半のパッケージ 静的型検査
uv 全パッケージ、.devcontainer パッケージマネージャ・仮想環境・スクリプト実行
vcrpy libs/standard-tests、libs/partners(anthropic, groq, ollama, openai, openrouter) HTTP インタラクション録画・再生
blockbuster libs/core、libs/langchain_v1、libs/partners(anthropic) ブロッキング I/O 検出
pre-commit .pre-commit-config.yaml Git コミットフック管理
markdownlint .markdownlint.json Markdown 静的解析

CI/CD 外部アクション・サービス

パッケージ 主要利用先 用途
actions/checkout (v6, SHA pinned) .github/workflows リポジトリのチェックアウト
actions/setup-python (v7.0.0, SHA pinned) .github/workflows Python ランタイムのセットアップ
actions/upload-artifact (v7) .github/workflows ビルド成果物のアップロード
actions/download-artifact (v8) .github/workflows ビルド成果物のダウンロード
actions/github-script (v9.0.0, SHA pinned) .github/workflows インライン JavaScript の実行
actions/create-github-app-token (v3, SHA pinned) .github/workflows GitHub App トークンの生成
astral-sh/setup-uv (v7, SHA pinned) .github/actions/uv_setup uv パッケージマネージャのセットアップ
Ana06/get-changed-files (v2.3.0, SHA pinned) .github/workflows PR/push の変更ファイル一覧取得
pypa/gh-action-pypi-publish (release/v1, SHA pinned) .github/workflows PyPI / TestPyPI への Trusted Publishing
ncipollo/release-action (v1, SHA pinned) .github/workflows GitHub リリース・タグ作成
peter-evans/create-pull-request (v8, SHA pinned) .github/workflows PR の自動作成・更新
CodSpeedHQ/action (v4, SHA pinned) .github/workflows CodSpeed ベンチマーク実行
amannn/action-semantic-pull-request (v6, SHA pinned) .github/workflows Conventional Commits フォーマット検証
EndBug/add-and-commit (v10, SHA pinned) .github/workflows 成果物のコミット・プッシュ
mikefarah/yq (master, SHA pinned) .github/workflows YAML パース・クエリ
google-github-actions/auth (v3, SHA pinned) .github/workflows Google Cloud 認証
aws-actions/configure-aws-credentials (v6, SHA pinned) .github/workflows AWS クレデンシャル設定
pre-commit/pre-commit-hooks (v4.3.0) .pre-commit-config.yaml 汎用コード品質チェック(YAML/TOML 検証、空白修正等)
sirosen/texthooks (0.6.8) .pre-commit-config.yaml テキスト正規化(スマートクォート・非標準スペース修正)
GitHub Dependabot サービス .github/dependabot.yml 依存関係の自動更新 PR 作成
GitHub Issue Forms v2 .github/ISSUE_TEMPLATE Issue テンプレートのフォーム描画
GitHub REST API (Octokit) .github/scripts ラベル管理、org メンバーシップ確認
PyPI REST API .github/scripts バージョン存在チェック・最新バージョン取得

開発環境インフラ

パッケージ 主要利用先 用途
Docker / Docker Compose .devcontainer コンテナのビルド・起動・管理
Dev Container 仕様 .devcontainer 開発コンテナ定義の標準仕様
ghcr.io/devcontainers/features/git:1 .devcontainer コンテナへの Git インストール
ghcr.io/devcontainers/features/github-cli:1 .devcontainer コンテナへの GitHub CLI インストール
VS Code 拡張: ms-python.python .devcontainer Python 言語サポート
VS Code 拡張: ms-python.debugpy .devcontainer デバッグ実行
VS Code 拡張: ms-python.mypy-type-checker .devcontainer 型チェック
VS Code 拡張: ms-python.isort .devcontainer import 文の自動整理
VS Code 拡張: ms-toolsai.jupyter .devcontainer Jupyter Notebook 実行・編集
VS Code 拡張: davidanson.vscode-markdownlint .devcontainer Markdown 構文チェック
VS Code 拡張: GitHub.copilot .devcontainer AI コード補完
VS Code 拡張: GitHub.copilot-chat .devcontainer AI チャット

外部 MCP サーバー

サーバー名 用途
https://docs.langchain.com/mcp LangChain ドキュメントへのプログラマティックアクセス
https://reference.langchain.com/mcp LangChain API リファレンスへのプログラマティックアクセス

外部依存(このモジュールが依存する内部モジュール)

リポジトリルートであるため、内部モジュールへの外部依存は該当なし。

内部依存(このモジュールに依存するもの)

リポジトリルートであるため、上位モジュールからの依存は該当なし。サブモジュール間の依存関係は以下の通り。

パッケージ間依存構造(libs/ 内)

依存元 依存先 関係
libs/langchain_v1 libs/core ランタイム依存(抽象基底・メッセージ型・Runnable)
libs/langchain_v1 libs/standard-tests, libs/text-splitters, libs/partners/openai, libs/partners/anthropic テスト・editable 参照
libs/langchain (classic) libs/core ランタイム依存
libs/langchain (classic) libs/text-splitters, libs/standard-tests, libs/partners/openai ランタイム・テスト依存
libs/text-splitters libs/core ランタイム依存(BaseDocumentTransformer, Document)
libs/standard-tests libs/core ランタイム依存(テスト対象の基底型)
libs/partners(全 15 pkg) libs/core ランタイム依存
libs/partners(全 15 pkg) libs/standard-tests テスト依存
libs/partners/deepseek, libs/partners/xai libs/partners/openai ランタイム依存(BaseChatOpenAI 継承)
libs/model-profiles libs/core(オプション), libs/langchain_v1(editable) ModelProfile キー検証、テスト依存

インフラ → パッケージ間依存

依存元 依存先 用途
.github/workflows libs/ 全パッケージ テスト・リント・リリース・バージョンチェック
.github/scripts libs/ 全パッケージ 差分検出・ラベル設定
.github/dependabot.yml libs/ 全パッケージ 依存パッケージのバージョン更新監視
.pre-commit-config.yaml libs/ 全パッケージの Makefile format / lint / check_version フック
.devcontainer libs/langchain 開発コンテナビルド(dev.Dockerfile)

データフロー

Mermaid形式:

flowchart TD
    subgraph _sg0[""ランタイムデータフロー""]
        User["ユーザー入力"] --> V1["langchain_v1<br/>create_agent / init_chat_model"]
        V1 --> Core["core<br/>LCEL パイプライン<br/>Prompt → LLM → Parser"]
        Core --> Partners["partners<br/>ChatOpenAI / ChatAnthropic"]
        Partners --> API["外部 AI API"]
        API --> Response["レスポンス型変換"]
        Response --> Output["ユーザー出力<br/>AIMessage / Document"]

        User --> Retrieval["core<br/>BaseRetriever → VectorStore"]
        Retrieval --> Emb["partners<br/>Embeddings 実装"]
        Retrieval --> TS["text-splitters<br/>TextSplitter"]
        TS --> Doc["Document チャンク"]
        Doc --> Core
    end

    subgraph _sg1[""開発・CI/CD フロー""]
        Code["コード変更"] --> PreCommit[".pre-commit-config.yaml<br/>format / lint"]
        PreCommit --> CI[".github/workflows<br/>check_diffs"]
        CI --> Lint["_lint.yml"]
        CI --> Test["_test.yml"]
        CI --> Gate["ci_success ゲート"]
        Lint --> Gate
        Test --> Gate
        Gate --> Release["_release.yml → PyPI"]
    end

セキュリティ考慮

観点 対策状況 詳細
SSRF 防御 実装済み libs/core の _security サブモジュールが SSRFPolicy、プライベート IP 検証、httpx トランスポートラッパーを提供
デシリアライゼーション安全性 実装済み libs/core の load が許可リスト(SERIALIZABLE_MAPPING)ベースのクラス復元を実施
シークレットマスキング 実装済み 全パートナーパッケージが SecretStr で API キーを管理し repr() / str() での露出を防止
入力検証 分散的に実施 Pydantic model_validator / field_validator による型検証(全パッケージ)。エージェントではミドルウェア重複チェック・未登録ツール名検証
PII 保護 あり libs/langchain_v1 の PII ミドルウェアが 5 種のパターン検出と 4 種の墨消し戦略を提供
サンドボックス実行 あり libs/langchain_v1 のミドルウェアが Seatbelt (macOS) / Landlock (Linux) / Docker によるカーネルレベル隔離を提供
XXE 対策 あり libs/text-splitters の HTMLSectionSplitter が no_network=TrueXSLTAccessControl.DENY_ALL を設定
サプライチェーン防御 あり .github/workflows の全外部 Action をコミット SHA でピン留め。UV_FROZEN: "true" による依存ロックファイル凍結
フォーク保護 あり github.repository_owner == 'langchain-ai' によるフォーク実行防止。pull_request_target 使用時は PR HEAD コードのチェックアウト禁止
テストネットワーク隔離 あり libs/core、libs/langchain_v1、libs/partners の一部が pytest-socket --disable-socket でユニットテスト中のネットワークアクセスをブロック
VCR 秘匿化 あり libs/standard-tests が VCR カセット記録時に認証ヘッダー・URI を PLACEHOLDER / **REDACTED** に置換
依存脆弱性対策 あり 全パッケージの [tool.uv] constraint-dependenciespygments>=2.20.0(CVE-2026-4539)、urllib3>=2.6.3 を強制
コンテナセキュリティ あり .devcontainer の Dockerfile 側で非 root ユーザー(vscode, UID 1000)を使用
master ブランチ保護 あり .pre-commit-config.yaml の no-commit-to-branch で master への直接コミットを禁止

技術的負債・既知の問題

種別 内容 影響範囲 優先度
非推奨 libs/langchain (classic) パッケージの大部分が非推奨。800+ の後方互換 shim が残存し v2.0.0 で削除予定 libs/langchain 全体
テスト無効化 libs/langchain_v1 の test_react_agent.py が全 987 行コメントアウトされエージェントコアテストが無効化 libs/langchain_v1/tests
コード重複 CI スクリプト(check_imports.pycheck_version.pylint_imports.sh)がリポジトリ内 20+ 箇所に個別複製 全パッケージの scripts/
同期管理 Issue テンプレートのパッケージ一覧(21〜23 項目)が 4 ファイルで重複定義。新パッケージ追加時に手動同期が必要 .github/ISSUE_TEMPLATE/ 4 ファイル
同期管理 _release.yml のドロップダウンオプションと非パートナー許可リストの二重管理 .github/workflows/
同期管理 dependabot.yml の除外パッケージリスト(ignore セクション)が 3 つの uv ルールで完全に重複 .github/dependabot.yml
互換性レイヤー libs/core の Pydantic v1/v2 互換レイヤーが大規模で複雑。partners の openai / ollama にも v1 互換コードが残存 libs/core/utils, libs/partners
マッピング肥大化 libs/core の load/mapping.py の SERIALIZABLE_MAPPING が約 1,085 行に膨張 libs/core/load
ストリーミング併存 libs/core で v1/v2/v3 の 3 世代のストリーミングプロトコルが共存 libs/core/language_models, runnables
巨大関数 libs/langchain_v1 の create_agent() が約 1,000 行。model-profiles の refresh() が約 115 行で # noqa: C901 抑制 libs/langchain_v1, libs/model-profiles
設計 .github/workflows 内に約 150〜470 行のインライン JavaScript が YAML 内に埋め込まれ、テスト・リントが困難 .github/workflows/ 5 ファイル
設計 check_diff.py の __main__ ブロックが約 120 行の手続き型コードで、ファイルパターンマッチングのルールが分散 .github/scripts/check_diff.py
バージョン固定 .pre-commit-config.yaml の外部リポジトリバージョンがタグ指定でありコミットハッシュではない .pre-commit-config.yaml
パッケージ網羅性 フォーマット・リントフックが一部パートナーパッケージのみ対象(deepseek, openrouter, perplexity, xai にはフォーマット・リントフックがない) .pre-commit-config.yaml
パス不整合 .devcontainer の Dockerfile パスは libs/langchain/dev.Dockerfile だが Dockerfile 内の WORKDIR は libs/langchain_v1 を参照 .devcontainer
非推奨 .devcontainer/docker-compose.yaml で version: '3' を使用(Docker Compose V2 では非推奨) .devcontainer
テスト不足 .github/scripts/ モジュール全体にユニットテストが不足(test_release_options.py のみ pytest テスト) .github/scripts/

拡張ポイント

変更内容 修正対象ファイル 手順・注意点
新規 LLM プロバイダ追加 libs/partners/ 新パッケージ、libs/langchain_v1/chat_models/base.py、libs/core/load/mapping.py、.github/scripts/check_diff.py、.github/workflows/pr_lint.yml、.github/ISSUE_TEMPLATE/*.yml、.github/dependabot.yml、.pre-commit-config.yaml、.github/scripts/pr-labeler-config.json 1. libs/partners/ に新パッケージ作成(既存構造を踏襲) 2. _BUILTIN_PROVIDERS にエントリ追加 3. core のシリアライズマッピングに登録 4. CI スクリプト・ワークフロー・Issue テンプレート・dependabot・pre-commit に追加
新規ベクトルストア追加 libs/core/vectorstores/ または libs/partners/ VectorStore を継承し add_texts() / similarity_search() を実装。VectorStoreRetriever が自動利用可能
新規テキストスプリッター追加 libs/text-splitters/langchain_text_splitters/ TextSplitter を継承し split_text() を実装。__init__.py にインポートと __all__ 登録
新規エージェントミドルウェア追加 libs/langchain_v1/langchain/agents/middleware/ AgentMiddleware を継承し必要なフックをオーバーライド
新規 CI テスト種別追加 .github/workflows/check_diffs.yml, 新規 .github/workflows/_xxx.yml 1. check_diff.py にマトリクス出力キー追加 2. 再利用ワークフロー作成 3. ci_success の needs リストに追加
VS Code 拡張の追加 .devcontainer/devcontainer.json customizations.vscode.extensions 配列に拡張機能 ID を追記
MCP サーバーの追加 .mcp.json mcpServers オブジェクトに新エントリ(type / url)を追加
新規 Issue テンプレートの追加 .github/ISSUE_TEMPLATE/ GitHub Issue Forms の YAML スキーマに準拠した .yml ファイルを作成

注意点・特記事項

  • 設計上の制約: langchain-core は全パートナー(15 パッケージ)、langchainlangchain_v1text-splittersstandard-tests と密結合しており、メジャーバージョン変更はエコシステム全体に波及する。全パッケージが langchain-core>=1.4.7,<2.0.0 のバージョン範囲に依存。langchain (classic) はメンテナンスモードであり、新機能は langchain_v1 に実装する方針。pull_request_target イベントを使用するワークフローでは PR HEAD のコードチェックアウトは厳禁(任意コード実行リスク)
  • パフォーマンス: libs/core の 18 サブパッケージが _import_utils.import_attr による遅延インポートを採用し起動時間を最適化。.github/workflows/check_diffs.ymlconcurrency 設定により同一 PR への古い CI 実行は自動キャンセル。.devcontainer のビルドコンテキストがリポジトリルート全体のため、リポジトリサイズが大きい場合はビルド時間に影響
  • 互換性: libs/langchain (classic) が langchain_community への 800+ の後方互換 shim を提供し v2.0.0 での削除予定。[tool.uv.sources] のローカルパス参照はモノレポ構造に強く依存しディレクトリ構造変更時に全パッケージの更新が必要。ディレクトリ名 langchain_v1 は CI ワークフロー・check_diff.py・dependabot.yml で広くハードコードされている。全外部 Action はコミット SHA でピン留めされておりバージョンアップ時は SHA の手動更新が必要(Dependabot が自動更新)

配下ドキュメント

サブモジュール

  • .devcontainer.md - VS Code Dev Containers および GitHub Codespaces で使用される LangChain プロジェクトの開発コンテナ環境を定義する設定モジュール。
  • .github.md - LangChain モノレポの CI/CD パイプライン、Issue/PR 管理、依存関係自動更新を包括的に提供するプロジェクト運用インフラモジュール。
  • libs.md - libs は LangChain フレームワークのモノレポにおける全 Python パッケージのルートディレクトリであり、LLM アプリケーション開発エコシステム全体を構成する 7 つのサブモジュールを格納する。

ファイル

  • .markdownlint.json.md - markdownlint(Markdown の静的解析ツール)のプロジェクトレベル設定ファイル。
  • .mcp.json.md - LangChain プロジェクトにおける MCP(Model Context Protocol)サーバーの接続定義ファイル。
  • .pre-commit-config.yaml.md - LangChain モノレポ全体の pre-commit フック設定ファイル。