A
返回 AI 知識
AI 知識2026/06/3053 分鐘閱讀

LangChain 完整教學 2026:從零構建企業級 LLM 應用

最詳盡的 LangChain 2026 教學:涵蓋 LCEL、RAG、Agent、LangGraph、LangSmith。從安裝到生產部署,附完整代碼示例。

LangChain 完整教學 2026:從零構建企業級 LLM 應用

TL;DR — LangChain 係 2026 年最主流嘅 LLM 應用開發框架,GitHub 135K+ stars,35% Fortune 500 企業用緊。本文由零開始,帶你用 Python 構建 Chain → RAG → Agent → LangGraph 工作流,最後部署上線。


目錄

  1. 什麼是 LangChain?
  2. 核心架構:七大組件
  3. 安裝與環境設置
  4. 第一個 Chain:LCEL 入門
  5. RAG:文檔問答系統
  6. Agent:自主決策智能體
  7. LangGraph:狀態化工作流
  8. LangSmith:調試與監控
  9. 生態系統全景
  10. 生產部署最佳實踐
  11. LangChain vs 競品對比
  12. 常見問題 FAQ

1. 什麼是 LangChain?

一句話定義

LangChain 係一個 Python 開源框架,幫你用大語言模型(LLM)構建實際應用。

唔係一個 LLM 模型本身,而係一個中間層框架——將 LLM(GPT-4、Claude、Gemini 等)同你嘅業務邏輯、外部數據、工具 API 串埋一齊。

┌─────────────────────────────────────┐
│          你嘅業務應用                  │
│   (客服機器人 / 文檔問答 / 數據分析)  │
├─────────────────────────────────────┤
│          LangChain 框架              │
│   Prompt │ Chain │ Agent │ Memory    │
├─────────────────────────────────────┤
│          LLM + 外部資源              │
│   OpenAI │ Claude │ 數據庫 │ API     │
└─────────────────────────────────────┘

為什麼需要 LangChain?

直接調用 LLM API 只能做到單輪問答。但實際業務需要:

需求 直接調 API 用 LangChain
單輪問答
多步驟推理鏈 ❌ 要自己寫 ✅ Chain 組合
讀取公司文檔回答 ❌ 要自己建 RAG ✅ 內建 RAG 組件
自主選擇工具 ❌ 要自己寫邏輯 ✅ Agent 框架
記住對話歷史 ❌ 要自己管理 ✅ Memory 模塊
切換不同 LLM ❌ 要改代碼 ✅ 統一接口
調試追蹤 ❌ 要自己加 log ✅ LangSmith 整合

關鍵數據(2026)

  • GitHub Stars: 135,000+
  • 支持模型: 80+ 供應商(OpenAI / Anthropic / Google / 本地模型)
  • 生產採用: 35% Fortune 500 企業
  • v1.0 發布: 2025 年 10 月(架構穩定化)
  • Klarna / LinkedIn / Uber / Replit 都用 LangChain 做 Agent 工作流

2. 核心架構:七大組件

LangChain 嘅設計哲學係可組合嘅積木。你唔需要用晒全部七個,但每個都有明確用途:

組件總覽

┌──────────────────────────────────────────────────┐
│                 LangChain 七大組件                  │
├──────────────────────────────────────────────────┤
│                                                  │
│  ① Chat Models ──── 統一接口調用唔同 LLM           │
│  ② Prompt Templates ── 參數化提示詞模板             │
│  ③ Chains (LCEL) ──── 用 pipe | 組合多步驟         │
│  ④ Retrievers ─────── RAG 檢索外部文檔              │
│  ⑤ Tools ──────────── 畀 Agent 調用外部工具         │
│  ⑥ Agents ─────────── 自主決策工作流                │
│  ⑦ Memory ─────────── 對話記憶管理                  │
│                                                  │
└──────────────────────────────────────────────────┘

① Chat Models — 統一模型接口

# 一行切換模型供應商
from langchain_openai import ChatOpenAI
from langchain_anthropic import ChatAnthropic

# OpenAI
gpt = ChatOpenAI(model="gpt-4o", temperature=0)

# Anthropic
claude = ChatAnthropic(model="claude-sonnet-4-20250514", temperature=0)

# 接口完全一樣
response = gpt.invoke("你好")
response = claude.invoke("你好")

② Prompt Templates — 參數化提示詞

from langchain_core.prompts import ChatPromptTemplate

# 定義模板
prompt = ChatPromptTemplate.from_messages([
    ("system", "你是一個專業的{role},用{language}回答問題。"),
    ("human", "{question}"),
])

# 填入參數
formatted = prompt.invoke({
    "role": "金融分析師",
    "language": "繁體中文",
    "question": "解釋什麼是 DCF 估值"
})

③ Chains (LCEL) — 管道組合

LCEL(LangChain Expression Language)係 2026 年唯一推薦嘅組合方式。用 | pipe 運算符將組件串成鏈:

from langchain_core.output_parsers import StrOutputParser

# Prompt → Model → Parser = 一條 Chain
chain = prompt | gpt | StrOutputParser()

# 調用
result = chain.invoke({
    "role": "金融分析師",
    "language": "繁體中文",
    "question": "解釋什麼是 DCF 估值"
})
print(result)

④ Retrievers — RAG 文檔檢索

# 從向量數據庫檢索相關文檔
retriever = vectorstore.as_retriever(search_kwargs={"k": 3})
docs = retriever.invoke("什麼是併購?")

⑤ Tools — 外部工具

from langchain.tools import tool

@tool
def search_stock_price(stock_code: str) -> str:
    """查詢港股即時股價"""
    # 你的 API 調用邏輯
    return f"{stock_code} 現價 HK$128.50"

⑥ Agents — 自主決策

from langchain.agents import create_agent

agent = create_agent(
    model="openai:gpt-4o",
    tools=[search_stock_price],
    system_prompt="你是一個港股分析助手"
)

⑦ Memory — 對話記憶

# Agent 自動記住對話歷史
result = agent.invoke({
    "messages": [{"role": "user", "content": "騰訊股價幾多?"}]
})
# 下一次調用時,Agent 記得之前問過騰訊

3. 安裝與環境設置

基礎安裝

# 核心庫
pip install langchain langchain-core

# 模型供應商(按需要安裝)
pip install langchain-openai      # OpenAI / GPT
pip install langchain-anthropic   # Anthropic / Claude
pip install langchain-google-genai # Google / Gemini

# 向量數據庫(RAG 用)
pip install langchain-community chromadb faiss-cpu

# 文檔加載器
pip install unstructured beautifulsoup4

# LangSmith 調試(可選但強烈推薦)
pip install langsmith

環境變量

# .env 文件
OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxx
ANTHROPIC_API_KEY=sk-ant-xxxxxxxx
LANGSMITH_API_KEY=lsv2_pt_xxxxxxxx
LANGSMITH_TRACING=true
# 載入環境變量
from dotenv import load_dotenv
load_dotenv()

驗證安裝

from langchain_openai import ChatOpenAI

model = ChatOpenAI(model="gpt-4o-mini")
response = model.invoke("說一句話證明你係 GPT")
print(response.content)
# 如果正常輸出,安裝成功 ✅

4. 第一個 Chain:LCEL 入門

概念:LCEL 係咩?

LCEL(LangChain Expression Language)係用 | pipe 運算符組合組件嘅語法。類似 Unix pipe:

輸入 → Prompt Template → LLM → Output Parser → 輸出

實戰:翻譯器

from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI
from langchain_core.output_parsers import StrOutputParser

# 1. 定義 Prompt
prompt = ChatPromptTemplate.from_template(
    "將以下文字翻譯成{target_language},只輸出翻譯結果,不要解釋:\n\n{text}"
)

# 2. 初始化模型
model = ChatOpenAI(model="gpt-4o-mini", temperature=0)

# 3. 輸出解析器
parser = StrOutputParser()

# 4. 組合成 Chain
chain = prompt | model | parser

# 5. 調用
result = chain.invoke({
    "target_language": "英文",
    "text": "今日天氣真好,適合出去行下。"
})

print(result)
# 輸出: The weather is really nice today, perfect for going out for a walk.

進階:串聯多條 Chain

# Chain 1: 翻譯
translate_chain = prompt | model | parser

# Chain 2: 摘要
summarize_prompt = ChatPromptTemplate.from_template(
    "用一句話總結以下內容:\n\n{text}"
)
summary_chain = summarize_prompt | model | parser

# 組合:翻譯 → 摘要
full_chain = (
    {"text": translate_chain, "original": lambda x: x["text"]}
    | summarize_prompt
    | model
    | parser
)

Streaming 串流輸出

# 所有 Chain 都支持 streaming
for chunk in chain.stream({"target_language": "日文", "text": "你好世界"}):
    print(chunk, end="", flush=True)

5. RAG:文檔問答系統

RAG(Retrieval-Augmented Generation)係 LangChain 最常見嘅用途。原理:

用戶提問
  ↓
從向量數據庫檢索相關文檔片段
  ↓
將文檔 + 問題一起餵畀 LLM
  ↓
LLM 基於文檔內容生成答案

完整 RAG Pipeline

from langchain_community.document_loaders import TextLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain_openai import OpenAIEmbeddings, ChatOpenAI
from langchain_community.vectorstores import FAISS
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.runnables import RunnablePassthrough
from langchain_core.output_parsers import StrOutputParser

# ═══════════════════════════════════════
# Step 1: 加載文檔
# ═══════════════════════════════════════
loader = TextLoader("company_handbook.txt")
docs = loader.load()

# ═══════════════════════════════════════
# Step 2: 分割成小塊(chunk)
# ═══════════════════════════════════════
splitter = RecursiveCharacterTextSplitter(
    chunk_size=500,     # 每塊 500 字符
    chunk_overlap=50    # 重疊 50 字符(保持上下文連貫)
)
chunks = splitter.split_documents(docs)

print(f"文檔已分割為 {len(chunks)} 個片段")

# ═══════════════════════════════════════
# Step 3: 向量化並存入數據庫
# ═══════════════════════════════════════
embeddings = OpenAIEmbeddings(model="text-embedding-3-small")
vectorstore = FAISS.from_documents(chunks, embeddings)
retriever = vectorstore.as_retriever(search_kwargs={"k": 3})

# ═══════════════════════════════════════
# Step 4: 構建 RAG Chain
# ═══════════════════════════════════════
prompt = ChatPromptTemplate.from_template("""
根據以下參考資料回答問題。如果資料中冇相關信息,請說「資料中未找到相關內容」。

參考資料:
{context}

問題:{question}
""")

def format_docs(docs):
    """將檢索到的文檔格式化為字串"""
    return "\n\n".join(doc.page_content for doc in docs)

rag_chain = (
    {"context": retriever | format_docs, "question": RunnablePassthrough()}
    | prompt
    | ChatOpenAI(model="gpt-4o-mini", temperature=0)
    | StrOutputParser()
)

# ═══════════════════════════════════════
# Step 5: 提問!
# ═══════════════════════════════════════
answer = rag_chain.invoke("公司嘅年假政策係點?")
print(answer)

RAG 進階:支持 PDF / Word / 網頁

# PDF
from langchain_community.document_loaders import PyPDFLoader
loader = PyPDFLoader("contract.pdf")
docs = loader.load()

# Word
from langchain_community.document_loaders import Docx2txtLoader
loader = Docx2txtLoader("report.docx")

# 網頁
from langchain_community.document_loaders import WebBaseLoader
loader = WebBaseLoader("https://example.com/about")
docs = loader.load()

RAG 進階:Agentic RAG

將 RAG 包裝成 Agent 工具,讓 Agent 自己決定幾時檢索:

from langchain.tools import tool
from langchain.agents import create_agent

@tool
def retrieve_context(query: str) -> str:
    """從公司知識庫檢索相關信息來回答問題"""
    docs = vectorstore.similarity_search(query, k=3)
    return "\n\n".join(doc.page_content for doc in docs)

agent = create_agent(
    model="openai:gpt-4o",
    tools=[retrieve_context],
    system_prompt="你是一個企業知識助手。使用 retrieve_context 工具查詢公司文檔。"
)

result = agent.invoke({
    "messages": [{"role": "user", "content": "請假制度係點?"}]
})
# Agent 會自動調用 retrieve_context 工具

6. Agent:自主決策智能體

Agent 係 LLM + 工具 + 決策循環。Agent 自己決定用邊個工具、用幾多次。

最簡 Agent

from langchain.agents import create_agent
from langchain.tools import tool

# 定義工具
@tool
def get_weather(city: str) -> str:
    """查詢城市天氣"""
    return f"{city} 今日晴朗,28°C,濕度 65%"

@tool
def calculate(expression: str) -> str:
    """計算數學表達式"""
    return str(eval(expression))

# 創建 Agent
agent = create_agent(
    model="openai:gpt-4o",
    tools=[get_weather, calculate],
    system_prompt="你是一個有用的助手,可以查天氣和做計算。"
)

# 運行
result = agent.invoke({
    "messages": [{"role": "user", "content": "香港今日幾度?如果將溫度乘以 2 係幾多?"}]
})
# Agent 會:
# 1. 調用 get_weather("香港") → 28°C
# 2. 調用 calculate("28 * 2") → 56
# 3. 回答「香港今日 28°C,乘以 2 係 56」

自定義工具:連接數據庫

@tool
def query_database(sql: str) -> str:
    """執行 SQL 查詢公司數據庫"""
    import sqlite3
    conn = sqlite3.connect("company.db")
    cursor = conn.execute(sql)
    results = cursor.fetchall()
    conn.close()
    return str(results)

# Agent 可以自動生成 SQL 查詢
agent = create_agent(
    model="openai:gpt-4o",
    tools=[query_database],
    system_prompt="你是一個數據分析助手。使用 query_database 工具查詢數據。"
)

result = agent.invoke({
    "messages": [{"role": "user", "content": "上個月銷售額最高的 3 個產品係咩?"}]
})

自定義工具:調用外部 API

import requests

@tool
def search_hkex_news(stock_code: str) -> str:
    """搜索 HKEX 披露易最新公告"""
    url = f"https://www1.hkexnews.hk/search/titlesearch.xhtml?lang=zh"
    # ... API 調用邏輯
    return "最新公告內容..."

@tool
def get_stock_quote(stock_code: str) -> str:
    """獲取港股即時報價"""
    # ... API 調用邏輯
    return f"{stock_code} 現價 HK$128.50,升 1.2%"

7. LangGraph:狀態化工作流

什麼時候需要 LangGraph?

LangChain Agent 係一個簡單循環:LLM → 工具 → LLM → 工具 → 回答。

但實際業務需要更複雜嘅工作流:

需求 LangChain Agent LangGraph
簡單工具調用循環
條件分支(如果 A 做 X,否則做 Y)
並行執行多個任務
暫停等人工審批
中斷後恢復
持久化狀態

LangGraph 核心概念

┌────────────────────────────────────────┐
│           LangGraph 核心概念             │
├────────────────────────────────────────┤
│                                        │
│  State ──── 共享狀態(所有節點讀寫)      │
│  Node ───── 執行邏輯嘅函數              │
│  Edge ───── 節點之間嘅連接              │
│  Conditional Edge ── 條件路由           │
│  Checkpointer ──── 狀態持久化           │
│                                        │
└────────────────────────────────────────┘

實戰:帶人工審批嘅工作流

from langgraph.graph import StateGraph, START, END
from langgraph.checkpoint.memory import MemorySaver
from typing import TypedDict, Annotated
from langchain_core.messages import HumanMessage, AIMessage
import operator

# 1. 定義狀態
class AgentState(TypedDict):
    messages: Annotated[list, operator.add]
    approved: bool

# 2. 定義節點
def agent_node(state: AgentState):
    """LLM 決定下一步"""
    from langchain_openai import ChatOpenAI
    model = ChatOpenAI(model="gpt-4o")
    response = model.invoke(state["messages"])
    return {"messages": [response]}

def tool_node(state: AgentState):
    """執行工具"""
    # ... 工具執行邏輯
    return {"messages": [HumanMessage(content="工具執行結果:...")]}

def human_approval_node(state: AgentState):
    """等待人工審批"""
    # 實際應用中會暫停等用戶確認
    return {"approved": True}

# 3. 定義路由邏輯
def should_continue(state: AgentState):
    last_message = state["messages"][-1]
    if hasattr(last_message, "tool_calls") and last_message.tool_calls:
        return "human_approval"
    return END

# 4. 構建圖
workflow = StateGraph(AgentState)

workflow.add_node("agent", agent_node)
workflow.add_node("tools", tool_node)
workflow.add_node("human_approval", human_approval_node)

workflow.add_edge(START, "agent")
workflow.add_conditional_edges("agent", should_continue, {
    "human_approval": "human_approval",
    END: END
})
workflow.add_edge("human_approval", "tools")
workflow.add_edge("tools", "agent")

# 5. 編譯(加入 Checkpointer)
checkpointer = MemorySaver()
app = workflow.compile(
    checkpointer=checkpointer,
    interrupt_before=["human_approval"]  # 在審批前暫停
)

# 6. 運行
config = {"configurable": {"thread_id": "user-123"}}
result = app.invoke(
    {"messages": [HumanMessage(content="幫我查詢騰訊最新股價")]},
    config=config
)

LangGraph 五大工作流模式

模式 說明 適用場景
Prompt Chaining 順序執行,上一步輸出做下一步輸入 翻譯→摘要→發送
Parallelization 並行執行多個節點,合併結果 同時搜索多個數據源
Routing 根據輸入路由到不同處理路徑 客戶投訴 vs 產品查詢
Orchestrator-Worker 主 Agent 分配任務畀子 Agent 複雜研究任務
Evaluator-Optimizer 生成→評估→優化循環 代碼生成+測試

Checkpointer:狀態持久化

# 開發階段:記憶體存儲
from langgraph.checkpoint.memory import MemorySaver
checkpointer = MemorySaver()

# 測試階段:SQLite
from langgraph.checkpoint.sqlite import SqliteSaver
checkpointer = SqliteSaver.from_conn_string("checkpoints.db")

# 生產階段:PostgreSQL
from langgraph.checkpoint.postgres import PostgresSaver
checkpointer = PostgresSaver.from_conn_string("postgresql://...")

8. LangSmith:調試與監控

為什麼需要 LangSmith?

當你嘅 Agent 做咗 10 步先得出答案,你點知邊步出錯?LangSmith 幫你:

  • Trace 追蹤:每一步嘅輸入/輸出/延遲
  • Debug 調試:視覺化 Agent 決策過程
  • Evaluate 評估:批量測試 Agent 質量
  • Monitor 監控:生產環境實時告警

設置 LangSmith

# 1. 註冊 https://smith.langchain.com
# 2. 設置環境變量
export LANGSMITH_TRACING=true
export LANGSMITH_API_KEY=lsv2_pt_xxxxxxxx
# 代碼完全唔使改!LangSmith 自動追蹤
from langchain_openai import ChatOpenAI

model = ChatOpenAI(model="gpt-4o")
response = model.invoke("你好")
# 這次調用已經自動記錄到 LangSmith ✅

LangSmith 界面功能

Trace 視圖:
├── Agent 調用(總耗時 3.2s)
   ├── LLM Call #1(選擇工具)── 0.8s
   ├── Tool: search_stock(API 調用)── 1.5s
   ├── LLM Call #2(處理結果)── 0.6s
   └── Tool: calculate(計算)── 0.3s
└── Final Answer

9. 生態系統全景

LangChain 家族產品

┌─────────────────────────────────────────────────────────────┐
│                    LangChain 生態系統                         │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────────────┐ │
│  │  LangChain   │  │  LangGraph  │  │   Deep Agents SDK   │ │
│  │  (高層框架)   │  │  (低層編排)  │  │   (全功能 Agent)    │ │
│  │             │  │             │  │                     │ │
│  │ create_agent│  │ StateGraph  │  │ 內建規劃+子Agent    │ │
│  │ LCEL Chain  │  │ Checkpoint  │  │ +文件系統+記憶      │ │
│  │ RAG 組件    │  │ Human-in-   │  │                     │ │
│  │             │  │ the-loop    │  │                     │ │
│  └─────────────┘  └─────────────┘  └─────────────────────┘ │
│         │                 │                    │            │
│         └─────────────────┼────────────────────┘            │
│                           │                                 │
│                    ┌──────┴──────┐                          │
│                    │  LangSmith  │                          │
│                    │  (調試監控)  │                          │
│                    │             │                          │
│                    │ Trace       │                          │
│                    │ Evaluate    │                          │
│                    │ Monitor     │                          │
│                    └─────────────┘                          │
│                                                             │
│                    ┌─────────────┐                          │
│                    │  LangServe  │                          │
│                    │  (API 部署)  │                          │
│                    └─────────────┘                          │
│                                                             │
└─────────────────────────────────────────────────────────────┘

選擇指南

你的需求 推薦產品
快速構建簡單 Agent LangChain create_agent
需要 RAG 文檔問答 LangChain RAG 組件
複雜工作流(分支/循環/並行) LangGraph
需要人工審批流程 LangGraph + Checkpointer
全功能 Agent(規劃+子Agent) Deep Agents SDK
調試同監控 LangSmith
部署為 REST API LangServe

10. 生產部署最佳實踐

架構建議

┌─────────────────────────────────────────────┐
│              生產環境架構                      │
├─────────────────────────────────────────────┤
│                                             │
│  Frontend (React/Next.js)                   │
│       │                                     │
│       ▼                                     │
│  LangServe (FastAPI)                        │
│       │                                     │
│       ▼                                     │
│  LangGraph Agent                            │
│       │                                     │
│       ├── LLM (GPT-4o / Claude)            │
│       ├── Vector DB (Pinecone / Weaviate)   │
│       ├── Checkpointer (PostgreSQL)         │
│       └── Tools (APIs / DBs)               │
│                                             │
│  LangSmith (監控 + 告警)                     │
│                                             │
└─────────────────────────────────────────────┘

性能優化清單

優化項 做法 效果
模型選擇 簡單任務用 gpt-4o-mini,複雜用 gpt-4o 成本降 90%
向量檢索 chunk_size=500, k=3-5 平衡精度同速度
Streaming .stream() 而非 .invoke() 用戶體驗大幅提升
快取 相同問題快取答案 減少 LLM 調用
並行 多個獨立檢索並行執行 延遲降 50%
重試 LLM 調用加重試邏輯 提高穩定性

安全清單

# ✅ 永遠唔好將 API Key 硬編碼
# ✅ 用環境變量或 secret manager
# ✅ 限制 Agent 可用嘅工具範圍
# ✅ 對用戶輸入做 sanitize
# ✅ 設置 token 使用上限
# ✅ 記錄所有 Agent 操作(LangSmith)
# ✅ 對敏感操作加人工審批

# ❌ 唔好畀 Agent 直接執行任意 SQL
# ❌ 唔好畀 Agent 訪問唔需要嘅工具
# ❌ 唔好信任 LLM 輸出(要做驗證)

成本估算

場景 模型 每次調用成本 每月成本(1000次/日)
簡單問答 gpt-4o-mini ~$0.001 ~$30
RAG 問答 gpt-4o ~$0.01 ~$300
複雜 Agent(5步) gpt-4o ~$0.05 ~$1,500
混合策略 mini + 4o ~$0.005 ~$150

💡 建議:80% 請求用 mini 模型,只有複雜任務先路由到 gpt-4o。


11. LangChain vs 競品對比

特性 LangChain LlamaIndex CrewAI AutoGen Pydantic AI
定位 通用 LLM 框架 數據檢索 多 Agent 多 Agent 對話 類型安全
RAG ✅ 強 ✅ 最強 ⚠️ 一般 ⚠️ 一般 ⚠️ 基本
Agent ✅ 強 ⚠️ 一般 ✅ 強 ✅ 強 ⚠️ 基本
工作流編排 ✅ LangGraph ⚠️ 線性 ⚠️ 對話式
模型支持 80+ 50+ 30+ 20+ 10+
學習曲線
生產就緒 ⚠️ ⚠️ ⚠️
社區活躍度 ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐ ⭐⭐⭐ ⭐⭐⭐ ⭐⭐

選擇建議

  • 通用 LLM 應用 → LangChain
  • 純 RAG / 知識庫 → LlamaIndex(更專注)
  • 多 Agent 協作 → CrewAI(最簡單)或 LangGraph(最靈活)
  • 需要類型安全 → Pydantic AI
  • 快速原型 → CrewAI 或 LangChain

12. 常見問題 FAQ

Q: LangChain 係咪太重了?簡單應用唔想用?

A: 如果只係簡單調一次 API,直接用官方 SDK 就夠。LangChain 嘅價值在於:多步驟 Chain、RAG、Agent、模型切換。如果你需要呢啲,LangChain 幫你慳大量開發時間。

Q: LCEL 同舊版 Chain 有咩分別?

A: 舊版 LLMChain / SequentialChain 已 deprecated。LCEL 用 | pipe 語法,更直觀、支持 streaming、async、batch。新項目應該只用 LCEL。

Q: LangChain 支持本地模型嗎?

A: 支持。用 langchain-ollama 接入 Ollama 本地模型:

from langchain_ollama import ChatOllama
model = ChatOllama(model="llama3")

Q: 點樣處理 Agent 幻覺?

A: 三個策略:

  1. RAG:強制 Agent 基於檢索文檔回答
  2. Guardrails:用 middleware 檢查輸出
  3. LangSmith:監控異常輸出

Q: LangChain vs 直接用 OpenAI API?

A: 如果你只需要單輪問答,直接用 API。如果你需要 RAG / Agent / 多步驟 / 模型切換 / 調試追蹤,LangChain 幫你慳幾百行代碼。


總結:學習路線圖

Week 1: 基礎
├── 安裝 LangChain
├── 寫第一個 LCEL Chain
└── 理解 Prompt Template + Output Parser

Week 2: RAG
├── 文檔加載 + 分割
├── 向量數據庫(FAISS / Chroma)
└── 構建 RAG Chain

Week 3: Agent
├── 定義自定義 Tool
├── create_agent 構建 Agent
└── 接入 LangSmith 調試

Week 4: 進階
├── LangGraph 工作流
├── Checkpointer 持久化
└── 生產部署

參考資源


本文寫於 2026 年 6 月,基於 LangChain v1.0+ / LangGraph v1.2.0。框架更新快,建議定期查閱官方文檔。