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=True、XSLTAccessControl.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-dependencies で pygments>=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.py、check_version.py、lint_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 パッケージ)、langchain、langchain_v1、text-splitters、standard-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.yml の concurrency 設定により同一 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 つのサブモジュールを格納する。
ファイル