一句話說明
LangChain 是一個幫你把 LLM 和各種工具、資料來源串在一起的開源框架,讓你不用從零開始就能做出 AI 應用。
什麼是 LangChain?
假設你想做一個能回答公司內部文件問題的 AI 聊天機器人。你需要:呼叫 LLM 的 API、把文件切段、轉成向量、存到資料庫、搜尋相關內容、組合 Prompt、處理對話記憶。每一步都要寫不少程式碼,而且每換一個 LLM 供應商,介面就不一樣。
LangChain 做的事情就是把這些常見的步驟標準化。它提供一套統一的介面,讓你可以用相同的程式碼切換不同的 LLM(OpenAI、Anthropic、本地模型都行),也內建了 RAG、Agent、記憶管理等常見功能的實作。
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、網頁)、Chunking、Embedding、向量搜尋的完整流程。
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 快。
怎麼開始?
- 安裝基本套件:
pip install langchain langchain-openai
- 設定 API Key:
export OPENAI_API_KEY="your-key-here"
- 跑一個最簡單的範例:
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(model="gpt-4o-mini")
response = llm.invoke("用一句話解釋什麼是 AI")
print(response.content)
- 試著做一個簡單的 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)
- 如果需要更複雜的流程(條件分支、多 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 工作流程用它可以省很多時間。
參考資料
- LangChain Python Documentation — LangChain Python 官方文件
- LangGraph Documentation — LangGraph 官方文件
- LangSmith Documentation — LangSmith 監控平台文件
- LangChain GitHub Repository — LangChain 原始碼與社群