3 秒看懂
LangChain 是連線大語言模型(LLM)與外部世界的應用開發架構。 它把“呼叫模型、檢索文件、呼叫工具、管理上下文記憶、串聯多步驟推論”等通用能力抽象成可組合的模組,讓開發者用宣告式/圖式的方式搭建 LLM 應用。可類比為“LLM 時代的應用中介軟體”。
3 分鐘產業解釋
為什麼需要 LangChain?
一個原始 LLM API 呼叫只能做到“給一段文本,返回一段文本”。但真實應用往往需要:
| 需求 | 原始 API 能否滿足 |
|---|---|
| 根據使用者問題檢索企業知識庫再回答(RAG) | ❌ 需要編排檢索→拼接→生成流程 |
| 讓模型調用搜索引擎/資料庫/程式碼執行器 | ❌ 需要工具呼叫協議與解析層 |
| 多輪對話記住上下文 | ❌ 需要對話歷史管理機制 |
| 多個 Agent 協作完成複雜任務 | ❌ 需要任務分解與編排邏輯 |
| 對接 100+ 不同模型供應商 | ❌ 需要統一抽象層 |
LangChain 就是把這些“膠水邏輯”標準化、模組化,降低從“有一個 LLM”到“有一個 LLM 應用”之間的工程門檻。
產業位置
終端使用者/企業
│
▼
┌──────────────────────────┐
│ LLM 應用(ChatBot/Agent/自動化)│
└──────────┬───────────────┘
│
┌─────▼─────┐
│ LangChain │ ◄── 應用編排架構層
│ (LangGraph)│
│ (LangSmith)│
└─────┬─────┘
│
┌──────▼──────┐
│ LLM 提供商 │ OpenAI / Anthropic / Meta / 本地模型
│ 向量資料庫 │ Pinecone / Weaviate / Chroma / Milvus
│ 工具/資料來源 │ 搜尋引擎 / SQL / API
└─────────────┘
商業化路徑
LangChain 於 2023 年成立公司 LangChain Inc.,核心開源架構免費,商業化產品包括:
- LangSmith:LLM 應用的可觀測性/評估/除錯平台(SaaS 按用量計費)
- LangGraph Platform:Agent 工作流的部署與託管服務
- 這是典型的 “開源核心 + 商業化 SaaS” 模式
15 分鐘專家深入
核心架構演進(v0.1 → v0.2 → v0.3)
LangChain 經歷了劇烈的架構重構,理解其演變是理解當前程式碼庫的關鍵:
第一階段(2022.10 – 2023):單體庫
- 所有功能(模型呼叫、Chain、Agent、Memory、Retrieval)集中在一個
langchain包中 - Chain 採用
LLMChain、SequentialChain等線性鏈式抽象 - 問題:依賴過重、抽象層級混亂、除錯困難
第二階段(2023 下半年 – 2024):模組化拆分
langchain-core:核心抽象(Runnables 介面、LCEL 表示式語言)langchain:認知架構元件(Agents、Chains 的高階實現)langchain-community:第三方整合(所有外部 LLM/工具/向量庫的介面卡)- 獨立夥伴包:
langchain-openai、langchain-anthropic、langchain-google-genai等 - 引入 LCEL(LangChain Expression Language):用
|管道運算子宣告式組合 Runnables
第三階段(2024 – 至今):Graph 優先
- LangGraph 成為核心 Agent 編排層,取代傳統 AgentExecutor
- 用有狀態有向圖(StateGraph)替代線性鏈,支援迴圈、分支、人機互動節點
- LangChain 本身更多退化為“整合層 + 工具定義 + 檢索抽象”
關鍵抽象:Runnable 協議
LangChain v0.2+ 的基石是 Runnable 介面,所有元件統一實現以下方法:
invoke(input) → 同步單次呼叫
batch(inputs) → 批次呼叫(含自動並行與重試)
stream(input) → 流式輸出
ainvoke / abatch / astream → 非同步版本
所有 Runnable 支援 | 管道組合:
chain = prompt | llm | output_parser
result = chain.invoke({"question": "什麼是RAG?"})
這是 LCEL 的核心設計——把資料處理管道變成可宣告、可序列化、可流式傳輸的表示式。
LangGraph:Agent 編排的核心
傳統 LangChain Agent 的問題是線性且難以中斷/恢復。LangGraph 的設計:
┌──────────┐
│ START │
└────┬─────┘
▼
┌────────────────┐
│ call_model │ ◄── 節點:執行 LLM 推論
└────────┬───────┘
▼
┌────────────────┐
│ should_continue│ ◄── 條件邊:模型是否要呼叫工具?
└───┬────────┬───┘
│ │
Yes ▼ ▼ No
┌────────────┐ ┌──────┐
│ call_tools │ │ END │
└─────┬──────┘ └──────┘
│
└──→ 返回 call_model(迴圈)
關鍵特性:
- 持久化狀態:每個節點共享一個 State 物件,支援 checkpoint 儲存
- 人機互動(Human-in-the-loop):可在任意節點中斷,等待人類審批後恢復
- 子圖巢狀:複雜 Agent 可由子圖組合
- 多 Agent 拓撲:支援 supervisor、hierarchical、swarm 等多 Agent 協作模式
- 流式 token 輸出:支援節點級別的 streaming
RAG(檢索增強生成)在 LangChain 中的實現層次
使用者問題
│
▼
┌─────────────────┐
│ Query 轉換/擴充套件 │ MultiQuery / HyDE / Decomposition
└────────┬────────┘
▼
┌─────────────────┐
│ 檢索 Retrieval │ VectorStore.similarity_search / BM25 / Hybrid
└────────┬────────┘
▼
┌─────────────────┐
│ 重排序 Reranking │ Cross-encoder / Cohere Rerank
└────────┬────────┘
▼
┌─────────────────┐
│ 壓縮上下文 │ ContextualCompression / 逐文件鏈
└────────┬────────┘
▼
┌─────────────────┐
│ 生成回答 │ LLM + 構造好的 Prompt
└─────────────────┘
LangChain 提供了上述每一層的抽象和內建實現,但不是所有場景都需要全部層級。這是新手常見的過度工程化問題。
技術原理
1. 核心執行時機制
┌─────────────────────────────────────────────────┐
│ LCEL Runtime │
│ │
│ RunnableA ──(pipe)──▶ RunnableB ──▶ RunnableC │
│ │
│ 統一介面: invoke / batch / stream / ainvoke │
│ │
│ ┌─────────────────────────────────────────┐ │
│ │ RunnableConfig │ │
│ │ - callbacks (tracing/logging) │ │
│ │ - tags / metadata │ │
│ │ - max_concurrency │ │
│ │ - run_name │ │
│ └─────────────────────────────────────────┘ │
│ │
│ 序列化: 所有管道可通過 JSON 描述→部署到 LangServe │
└─────────────────────────────────────────────────┘
流式傳輸的實現:
LCEL 管道的 stream 不是簡單地等待整個輸出——它實現了逐 chunk 透傳。當管道末端的 LLM 產出一個 token 時,如果下游的 OutputParser 能處理 partial input(如 JsonOutputParser 支援部分 JSON 解析),使用者就能在 LLM 仍在生成時看到部分結果。
2. Agent 執行迴圈(LangGraph)
# 簡化的 LangGraph Agent 狀態圖虛擬碼
class AgentState(TypedDict):
messages: Annotated[list, add_messages] # 訊息列表,自動追加
graph = StateGraph(AgentState)
# 節點定義
graph.add_node("agent", call_model)
graph.add_node("tools", tool_node)
# 邊定義
graph.add_edge(START, "agent")
graph.add_conditional_edges(
"agent",
should_continue, # 函式:檢查最後一條訊息是否包含 tool_calls
{"continue": "tools", "end": END}
)
graph.add_edge("tools", "agent") # 工具結果回傳給 agent
app = graph.compile(checkpointer=MemorySaver())
與傳統 AgentExecutor 的關鍵區別:
| 維度 | 舊 AgentExecutor | LangGraph |
|---|---|---|
| 拓撲 | 線性迴圈(think→act→observe) | 任意有向圖(可分支/並行/巢狀) |
| 狀態 | 不可序列化 | Checkpoint 可持久化(SQLite/Postgres/Redis) |
| 中斷恢復 | ❌ | ✅ 從 checkpoint 恢復 |
| 人機互動 | ❌ | ✅ interrupt_before / interrupt_after |
| 流式輸出 | 粗粒度(步驟級) | 節點級 + token 級 |
3. 工具定義與呼叫協議
@tool
def search_web(query: str) -> str:
"""Search the web for current information."""
return tavily_search(query)
# 工具會被自動轉換為 JSON Schema,注入到 LLM 的 system prompt
# 當 LLM 返回 tool_calls 時,LangGraph 的 ToolNode 會:
# 1. 解析 function name 和 arguments
# 2. 路由到對應的 Python 函式執行
# 3. 將結果封裝為 ToolMessage 返回給狀態
4. 記憶體管理機制
LangChain 的“Memory”概念在 LangGraph 中被重新定義:
舊方案: ConversationBufferMemory(維護 messages 列表,自動注入 prompt)
↓ 演化
新方案: LangGraph 的 State.messages(顯式管理,通過 reducer 函式控制行為)
- short-term memory = 單次會話的 messages(在 State 中)
- long-term memory = 跨會話持久化的儲存(通過 LangGraph Store API)
- 外部記憶 = 向量資料庫中的歷史摘要
5. LangSmith 可觀測性架構
應用程式碼(啟用 LangSmith tracing)
│
│ [POST] /runs (每個 Runnable 呼叫自動上報)
▼
┌───────────────┐
│ LangSmith │
│ SaaS 後端 │
├───────────────┤
│ - Trace 樹 │ 完整的呼叫鏈路視覺化
│ - 評估 │ 自動/人工評估 LLM 輸出質量
│ - 資料集 │ 管理測試用例
│ - 監控 │ 延遲/成本/錯誤率 dashboard
│ - Prompt Hub │ Prompt 版本管理
└───────────────┘
技術實現上,LangSmith 通過 Callback 機制在每個 Runnable 的 start/end/error 鉤子點上報 telemetry 資料,對應用邏輯零侵入。
技術演進史
| 時間 | 事件 | 意義 |
|---|---|---|
| 2022.10 | Harrison Chase 開源 LangChain(Python) | LLM 應用架構先發優勢 |
| 2023.01 | 月活使用者暴漲,成為 GitHub 增速最快的專案之一 | 確立“LLM 應用標準架構”心智 |
| 2023.03 | JavaScript/TypeScript 版本釋出 | 擴充套件前端/全棧開發者群體 |
| 2023.04 | 獲種子輪融資,約1000萬美元 | 商業化起步 |
| 2023.07 | LangSmith 公開發布 | 商業化路徑明確(可觀測性 SaaS) |
| 2024.01 | v0.1 釋出(已實現模組化架構拆分) | 首個正式版本 |
| 2024.02 | 獲 A 輪融資 2500 萬美元,Sequoia 領投 | 資本背書 |
| 2024.05 | v0.2 釋出,模組化架構重組,將 langchain 拆為 core/community/夥伴包 | 徹底模組化 |
| 2024.10 | v0.3 釋出,全面要求 Python ≥ 3.9,Pydantic v2 | 清理技術債 |
| 2024 下半年 | LangGraph Platform 釋出(託管部署) | 從架構走向平台 |
| 2025 | 多 Agent 編排成熟,LangGraph 成為核心增長引擎 | 與 CrewAI、AutoGen 等形成競爭格局 |
技術路線對比
LangChain vs. 競品架構
| 維度 | LangChain / LangGraph | LlamaIndex | CrewAI | AutoGen(微軟) | Semantic Kernel(微軟) |
|---|---|---|---|---|---|
| 定位 | 通用 LLM 應用架構 + Agent 編排 | 資料索引與檢索增強 | 多 Agent 角色扮演 | 多 Agent 對話編排 | 企業級 AI 編排 SDK |
| 語言 | Python, JS/TS | Python, TS | Python | Python, .NET | Python, C#, Java |
| 核心抽象 | Runnable + StateGraph | Index + Query Engine | Agent + Crew + Task | Agent + GroupChat | Plugin + Planner + Memory |
| Agent 能力 | LangGraph(有狀態圖,支援人機互動、檢查點) | 較弱(主要聚焦 RAG) | 角色化多 Agent,簡化配置 | 靈活的多 Agent 對話 | 企業級 Agent + 外掛生態 |
| RAG 能力 | 完整(檢索/重排/壓縮/多查詢) | ★★★★★ 最強,專精於此 | 基礎 | 基礎 | 中等 |
| 可觀測性 | LangSmith(SaaS) | LlamaTrace | 有限 | AutoGen Studio | Azure Monitor 整合 |
| 學習曲線 | 中等偏高(API 變動頻繁) | 中等 | 低(面向非開發者) | 中等 | 中等(微軟生態使用者友好) |
| 社群規模 | ★★★★★ GitHub Stars 約 95k+ [估算,以實際為準] | ★★★★ 約 35k+ [估算] | ★★★ 約 20k+ [估算] | ★★★★ 約 35k+ [估算] | ★★★ 約 22k+ [估算] |
| 生產就緒 | LangSmith + LangGraph 提供了生產級工具鏈 | 中等(側重索引而非應用) | 早期 | 早期到中期 | 較成熟(微軟背書) |
選型決策樹
你的核心需求是什麼?
│
├── “需要高質量 RAG” ──────▶ LlamaIndex(首選)或 LangChain
│
├── “需要複雜 Agent 工作流” ──▶ LangGraph(首選)或 AutoGen
│
├── “需要快速搭建多 Agent demo” ──▶ CrewAI 或 AutoGen
│
├── “已在微軟/Azure 生態” ──▶ Semantic Kernel
│
└── “需要通用架構 + 企業支援” ──▶ LangChain + LangSmith
上下游
上游依賴(LangChain 依賴誰)
┌─────────────────────────────────────────────┐
│ LangChain │
│ │
│ 依賴層: │
│ ├─ LLM API: OpenAI / Anthropic / Google / │
│ │ Cohere / 本地模型(vLLM/Ollama) │
│ ├─ 向量資料庫: Pinecone / Weaviate / Chroma │
│ │ Milvus / Qdrant / FAISS │
│ ├─ 嵌入模型: OpenAI Embeddings / Cohere / │
│ │ Sentence Transformers │
│ ├─ 工具/API: Tavily / SerpAPI / 各類 SaaS │
│ ├─ 文件載入: Unstructured / PDF/HTML/程式碼解析 │
│ └─ 雲端基礎設施: LangSmith 後端 / 託管計算 │
└─────────────────────────────────────────────┘
下游使用者(誰在用 LangChain)
┌─────────────────────────────────────────────┐
│ LangChain 使用者 │
│ │
│ ├─ 初創公司: 用 LangChain 快速建置 AI 產品 │
│ ├─ 企業 IT: 建置內部知識問答/自動化系統 │
│ ├─ 獨立開發者: 搭建 ChatBot / AI 工具 │
│ ├─ AI 平台: 在產品中嵌入 LangChain 作為引擎 │
│ └─ 教育/研究: 快速原型驗證 LLM 應用想法 │
└─────────────────────────────────────────────┘
關鍵指標
| 指標 | 數值/狀態 | 說明 |
|---|---|---|
| GitHub Stars | ~95k+ [2025 年估算,以實際為準] | 所有倉庫合計 |
| PyPI 月下載量 | 數千萬量級 [估算] | 從 PyPI 統計推算,具體以實際為準 |
| 整合數量 | 700+ 元件/整合 | 包括 LLM、工具、向量庫、文件載入器等 |
| 支援 LLM 供應商 | 100+ | 包括本地和雲端端 |
| LangSmith 註冊使用者 | 未充分公開揭露 | — |
| 企業客戶(LangSmith) | 未充分公開揭露 | 官方宣稱包括多家財富 500 強 |
| 核心團隊規模 | ~50-80 人 [估算] | 以 LinkedIn 等公開資訊為準 |
| 版本節奏 | 約每 2-3 月一次 minor release | 社群活躍度高 |
供需與市場資料
LLM 應用開發架構市場
需求側驅動力:
- 企業對 LLM 應用的需求從“demo 驗證”轉向“生產部署”
- RAG、Agent、自動化工作流成為企業 AI 投入的主要形態
- 2024-2025 年全球企業 AI 應用支出快速增長 [據 Gartner/IDC 等機構估算,具體資料請查最新報告]
供給側競爭格局:
市場份額心智 [定性估算]
LangChain/LangGraph ████████████████████░░░░ 最高知名度,社群最大
LlamaIndex ████████████░░░░░░░░░░░░ RAG 領域強勁
CrewAI ████████░░░░░░░░░░░░░░░░ 多 Agent 熱度上升
AutoGen ████████░░░░░░░░░░░░░░░░ 微軟支援,企業探索
Semantic Kernel ██████░░░░░░░░░░░░░░░░░░ Azure 使用者首選
自研架構/直接調 API ████████████████░░░░░░░░ 大廠多自建,中小廠用架構
關鍵趨勢:
- 架構趨向統一收斂:開發者不希望學太多架構,頭部 2-3 個將吃掉大部分市場
- 編排層向上競爭:從“幫你調 LLM”到“幫你編排整個工作流”
- 可觀測性成為剛需:LangSmith 的商業化驗證了這一判斷
- 直接調 API vs 架構之爭:部分高階使用者認為架構增加了抽象複雜度,選擇直接用 LLM SDK
代表公司與資本對映
| 公司/專案 | 產品 | 融資階段 | 關鍵資訊 |
|---|---|---|---|
| LangChain Inc. | LangChain / LangGraph / LangSmith | B 輪 (2500 萬美元) | Sequoia 領投 [據公開報道] |
| LlamaIndex Inc. | LlamaIndex / LlamaCloud | A 輪 [估算] | 專注 RAG 和資料索引 |
| CrewAI | CrewAI | 早期融資 [以實際為準] | 多 Agent 編排 |
| Microsoft | AutoGen / Semantic Kernel | 大廠自有 | 開源+Azure 捆綁 |
| Pinecone | Pinecone(向量資料庫) | B 輪 + [估值約 7.5 億 USD,據公開報道] | LangChain 重要上游 |
| Weaviate | Weaviate | B 輪 [估算] | 開源向量資料庫 |
對投資者的意義
LangChain 生態的投資對映:
架構層: LangChain Inc. (私有) ── 關注商業化指標(LangSmith ARR)
向量庫: Pinecone (私有) / Weaviate (私有) / Zilliz (Milvus, 私有)
LLM層: OpenAI (私有) / Anthropic (私有) / 各上市公司 (MSFT, GOOG, AMZN)
可觀測性: LangSmith / Langfuse (開源替代) / Helicone
基礎設施: 各雲端廠商(AWS Bedrock, Azure AI, GCP Vertex)
投資邏輯
看多邏輯
- 開發架構的網路效應:700+ 整合 → 開發者生態 → 更多整合 → 更多開發者。先發優勢+社群規模構成護城河。
- 開源核心+商業 SaaS 是驗證過的模式:類比 MongoDB(開源→Atlas SaaS)、Elastic(開源→Cloud)、Databricks(Spark→平台)。
- LangSmith 切中生產級痛點:LLM 應用的除錯/評估/監控是剛需,一旦被嵌入企業工作流,遷移成本高。
- LangGraph 差異化:有狀態、可中斷、多 Agent 編排能力在競品中相對領先。
- AI Agent 賽道爆發:如果 2025-2026 年 Agent 應用大規模落地,編排架構是核心受益層。
看空/風險邏輯
- LLM 供應商可能內建編排能力:OpenAI 的 Assistants API、Anthropic 的 Tool Use、Google 的 Vertex AI Agent Builder 都在蠶食架構層。
- API 變動頻繁,開發者信任成本:LangChain 早期的“破壞性變更”頻發導致部分開發者流失。
- “太多抽象”的批評:部分資深開發者認為直接調 LLM API + 輕量封裝(如 Instructor、Pydantic AI)更高效。
- 營收規模未公開:LangSmith 的 ARR 是否足以支撐估值?企業付費意願待驗證。
- 架構層的可替代性:編排邏輯並不構成深技術壁壘,開源替代(Langfuse + 自研編排)始終存在。
關鍵驗證指標
- LangSmith 付費客戶數與 ARR 增速
- LangGraph Platform 的企業採納率
- GitHub 活躍貢獻者/issue 解決速度
- 與頭部 LLM 供應商的深度整合(是否會成為“預設選擇”)
常見誤讀糾偏
誤讀 1:“LangChain 是一個 Agent 架構”
糾偏: LangChain 是一個通用 LLM 應用開發架構,Agent 只是其中一種應用模式。大量使用者用 LangChain 做的是純 RAG 流程(檢索+生成),根本不用 Agent 功能。更準確地說,LangGraph 是 Agent 編排架構,而 LangChain 本身更偏“整合層 + 工具定義 + 檢索抽象”。
誤讀 2:“用 LangChain 就能輕鬆搭建生產級 AI 應用”
糾偏: LangChain 降低了“從 0 到 1 Demo”的門檻,但從 Demo 到生產仍需要大量工程投入:Prompt 工程調優、評估體系搭建、成本控制、延遲最佳化、安全防護、錯誤處理。LangSmith 的存在本身就說明——生產級應用需要遠超架構本身的工具鏈。架構是“腳手架”,不是“成品房”。
誤讀 3:“LangChain 和 LlamaIndex 是競品,二選一即可”
糾偏: 兩者有重疊但定位不同。LlamaIndex 專精於資料索引和檢索,在 RAG 場景下能力更強更深入;LangChain/LangGraph 更關注應用編排和 Agent 邏輯。實際上很多生產專案同時使用兩者:用 LlamaIndex 做高質量檢索,用 LangGraph 做 Agent 編排。它們不是互斥關係。
誤讀 4:“LangChain 的抽象層只會增加複雜度,不如直接調 API”
糾偏: 這取決於應用場景的複雜度。如果你的用例是“調一次 LLM 獲取回答”,確實不需要架構。但當你需要:對接多個模型供應商、實現複雜的 RAG pipeline、編排多步驟 Agent 工作流、整合多種工具、需要可觀測性時,架構的標準化抽象降低的是長期維護成本而非短期開發成本。“架構 vs 直接呼叫”是一個權衡,不是絕對判斷。
學習路徑
入門(1-2 天)
1. 通讀 LangChain 官方文件的 Quickstart
→ 理解 Chat Models / Prompts / Output Parsers / Chains
2. 跑一個簡單的 RAG demo
→ 載入文件 → 分塊 → 嵌入 → 檢索 → 生成
3. 理解 LCEL(管道運算子 |)
→ prompt | model | parser
參考資料
- LangChain 官方文件:https://docs.langchain.com/oss/python
- LangChain 官方產品頁:https://www.langchain.com/langchain