一句話說明

LangChain 是一個幫你把 LLM 和各種工具、資料來源串在一起的開源框架,讓你不用從零開始就能做出 AI 應用。

什麼是 LangChain?

假設你想做一個能回答公司內部文件問題的 AI 聊天機器人。你需要:呼叫 LLM 的 API、把文件切段、轉成向量、存到資料庫、搜尋相關內容、組合 Prompt、處理對話記憶。每一步都要寫不少程式碼,而且每換一個 LLM 供應商,介面就不一樣。

LangChain 做的事情就是把這些常見的步驟標準化。它提供一套統一的介面,讓你可以用相同的程式碼切換不同的 LLM(OpenAI、Anthropic、本地模型都行),也內建了 RAGAgent、記憶管理等常見功能的實作。

LangChain 由 Harrison Chase 在 2022 年 10 月發起,目前是 GitHub 上最受歡迎的 LLM 開發框架之一。它有 Python 和 JavaScript 兩個版本,社群非常活躍。

核心概念

LangChain 的架構經過幾次改版,目前分成幾個主要元件:

LangChain Core:最底層的抽象層,定義了所有元件的介面標準。包括 Chat Model、Prompt Template、Output Parser 這些基本積木。

LangChain:主要的框架套件,包含 Chain(把多個步驟串成流程)、Agent(讓 LLM 自己決定要用什麼工具)、Memory(管理對話歷史)等功能。

LangChain Partner Packages:各服務供應商維護的獨立整合套件,例如 langchain-openai、langchain-chroma、langchain-mongodb 等。過去這些整合放在 langchain-community 套件裡,但該套件已在 2026 年 6 月正式 sunset,改由各供應商各自維護獨立套件。

LangGraph:比較新的元件,用來建構有狀態的多步驟 AI 工作流程。相比傳統的 Chain 是線性的,LangGraph 支援條件分支、迴圈和 多 Agent 協作

LangSmith:監控和除錯平台,讓你追蹤每次 LLM 呼叫的輸入輸出、延遲和費用。不是開源的,是 LangChain 公司的商業產品。

一段簡單的 LangChain 程式碼長這樣:

from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate

# 建立模型和 Prompt
llm = ChatOpenAI(model="gpt-4o")
prompt = ChatPromptTemplate.from_messages([
    ("system", "你是一個友善的 AI 助理,用繁體中文回答。"),
    ("human", "{question}")
])

# 建立 chain
chain = prompt | llm

# 執行
response = chain.invoke({"question": "什麼是 RAG?"})
print(response.content)

這個 | 符號是 LangChain 的 LCEL(LangChain Expression Language),用管線的方式把 Prompt 和 Model 串在一起。

實際應用場景

LangChain 最常被用在這幾種情境:

RAG 應用:從公司文件、知識庫中搜尋相關資訊,再讓 LLM 生成回答。LangChain 內建了文件載入(PDF、Word、網頁)、ChunkingEmbedding向量搜尋的完整流程。

AI Agent:讓 LLM 根據使用者需求自動選擇和呼叫工具。例如一個能查天氣、搜尋網路、寫程式的助理。LangChain 的 Agent 模組支援 Function Calling 和自訂工具。

對話式 AI:有記憶的聊天機器人,能記住之前的對話內容。LangChain 提供多種 Memory 實作,從簡單的全文記憶到摘要式記憶。

文件問答:上傳一份 PDF,直接對著 PDF 問問題。這其實就是一個簡化版的 RAG,LangChain 讓你十幾行程式碼就能做出來。

資料分析助理:連接資料庫,讓使用者用自然語言查詢資料。LangChain 有 SQL Agent 能把自然語言轉成 SQL 查詢。

LangChain vs 其他框架

比較項目 LangChain LlamaIndex Vercel AI SDK
主要語言 Python、JavaScript Python、JavaScript JavaScript、TypeScript
強項 通用 LLM 應用 RAG 和資料索引 前端 AI 整合
學習曲線 中高 中等
社群規模 最大 中等 快速成長
抽象層級 高,封裝很多 中等 低,較貼近原生 API
適合場景 Agent、複雜工作流程 知識庫搜尋 Web 應用 AI 功能
商業支援 LangSmith(付費) LlamaCloud(付費) Vercel 平台

選擇哪個框架取決於你的需求。如果你主要做 RAG,LlamaIndex 的抽象更貼合。如果你做 Agent 或複雜的多步驟流程,LangChain + LangGraph 比較適合。如果你做的是 Next.js 前端加 AI 功能,Vercel AI SDK 最方便。

台灣使用情境

台灣的開發團隊在用 LangChain 時,常見的情境包括:

企業知識庫問答系統:銀行、保險公司用 LangChain 建立內部的法規查詢系統。員工可以用自然語言問「信用卡遲繳的罰款規定是什麼」,系統自動從法規文件中找答案。

客服機器人升級:原本的規則式客服只能處理固定的問答,用 LangChain 搭配 RAG 後,能處理更多元的問題,而且回答會根據最新的文件內容更新。

程式碼文件查詢:開發團隊用 LangChain 把技術文件、API 文件做成可對話的知識庫,新人 onboarding 的時候特別好用。

不過要注意,台灣企業如果處理的是個資或金融資料,需要確認 LLM API 的資料落地政策是否符合法規要求。

安全考量與限制

使用 LangChain 開發 AI 應用時需要注意幾個面向:

Prompt Injection 風險:如果你的應用接收使用者輸入並組合進 Prompt,就有被 Prompt Injection 攻擊的風險。LangChain 本身不會自動防禦這種攻擊,你需要自己加上輸入驗證和輸出過濾。

API Key 管理:LangChain 會使用多個外部服務的 API Key(LLM、向量資料庫、搜尋 API 等)。這些金鑰需要妥善管理,不要寫死在程式碼裡。

版本相容性:LangChain 的更新速度非常快,API 經常有破壞性變更。實際專案建議鎖定版本號,不要用最新版。升級前先在測試環境驗證。

過度抽象:LangChain 的抽象層有時候會讓除錯變困難。當 LLM 的回答有問題,你可能需要挖好幾層才能看到實際送出的 Prompt 是什麼。LangSmith 可以幫忙,但它是付費的。

相依性肥大:LangChain 的相依套件非常多。如果你只需要簡單的 LLM 呼叫,直接用 OpenAI 或 Anthropic 的官方 SDK 可能更輕量。

效能考量:LangChain 的抽象層會帶來一些效能開銷。在延遲敏感的應用中,直接呼叫 API 比透過 LangChain 快。

怎麼開始?

  1. 安裝基本套件:
pip install langchain langchain-openai
  1. 設定 API Key:
export OPENAI_API_KEY="your-key-here"
  1. 跑一個最簡單的範例:
from langchain_openai import ChatOpenAI

llm = ChatOpenAI(model="gpt-4o-mini")
response = llm.invoke("用一句話解釋什麼是 AI")
print(response.content)
  1. 試著做一個簡單的 RAG:
from langchain_community.document_loaders import TextLoader
from langchain_text_splitters import RecursiveCharacterTextSplitter
from langchain_openai import OpenAIEmbeddings
from langchain_chroma import Chroma
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.runnables import RunnablePassthrough

# 載入文件
loader = TextLoader("my_doc.txt")
docs = loader.load()

# 切段
splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50)
chunks = splitter.split_documents(docs)

# 建立向量資料庫
vectorstore = Chroma.from_documents(chunks, OpenAIEmbeddings())
retriever = vectorstore.as_retriever()

# 建立 RAG chain
prompt = ChatPromptTemplate.from_template(
    "根據以下資料回答問題。\n資料:{context}\n問題:{question}"
)
llm = ChatOpenAI(model="gpt-4o-mini")

chain = (
    {"context": retriever, "question": RunnablePassthrough()}
    | prompt
    | llm
)

answer = chain.invoke("文件裡提到什麼重點?")
print(answer.content)
  1. 如果需要更複雜的流程(條件分支、多 Agent),學 LangGraph。

學習資源建議先看官方文件的 Tutorials 區,跟著做完幾個範例,再根據自己的需求深入。

知識檢測

讀完文章後,測試一下你對這個主題的理解。

常見問題

LangChain 是免費的嗎?

LangChain 框架本身是免費開源的(MIT License)。但要注意 langgraph-api(LangGraph 的部署伺服器)使用的是 Elastic License 2.0,生產環境需要商業授權。你使用的 LLM API(如 OpenAI、Anthropic)和 LangSmith 監控平台也是要付費的。向量資料庫如果用 Chroma 或 FAISS 也是免費的,用 Pinecone 等雲端服務才需要付費。

LangChain 適合生產環境嗎?

可以用在生產環境,但要注意幾點:鎖定版本號避免突然的 API 變更、加上適當的錯誤處理和重試機制、用 LangSmith 或自建的監控追蹤每次呼叫。很多公司在生產環境使用 LangChain,但也有些團隊覺得抽象太多,選擇直接用 SDK。

我只想做簡單的 LLM 呼叫,需要用 LangChain 嗎?

不需要。如果你只是呼叫一個 API、送一個 Prompt、拿回答,直接用 OpenAI 或 Anthropic 的官方 SDK 就夠了,程式碼更簡潔也更好維護。LangChain 的價值在於你需要串接多個元件(RAG、Agent、Memory)的時候。

LangChain 和 LangGraph 有什麼差別?

LangChain 的 Chain 是線性的流程(A → B → C)。LangGraph 是 LangChain 團隊推出的新框架,支援有狀態的圖形工作流程,包括條件分支、迴圈、多 Agent 協作。如果你的應用流程比較複雜,需要根據不同情況走不同路徑,LangGraph 比傳統的 Chain 更適合。

總結

LangChain 是目前最多人用的 LLM 應用開發框架,它把 RAG、Agent、Memory 這些常見需求包裝成可重複使用的元件。它的優勢是社群大、整合多、上手快;劣勢是抽象層厚、版本更新快、有時候過度封裝。

選擇要不要用 LangChain,取決於你的應用複雜度。簡單的 LLM 呼叫不需要它,複雜的多步驟 AI 工作流程用它可以省很多時間。

參考資料