二階段:系統性掌握 LangChain 的核心概念體系
需要意識到:零散學習概念 ≠ 構建能力。
我們需要的不是“知道這些詞”,而是“理解它們如何構成一個系統”。
🎯 目標
在 4 周內,通過刻意練習和漸進式學習,系統性掌握 LangChain 的核心概念體系,能夠獨立設計并實現一個具備記憶、檢索、工具調用和評估能力的 AI 應用。
我們將所有概念組織成 6 個核心模塊,形成一個 從基礎到高階、從組件到系統 的學習路徑。
🧩 模塊化學習路徑:LangChain 概念系統圖譜
📚 模塊 1:核心運行機制(The Engine)
可運行接口 + LCEL + 回調 + 追蹤
🎯 學習目標
理解 LangChain 的“運行時引擎”——所有組件如何被統一調度和編排。
🔗 核心概念
可運行接口
(Runnable)LangChain 表達式語言
(LCEL)回調
(Callbacks)追蹤
(Tracing)流式傳輸
(Streaming)異步編程
(Async)
🔄 刻意練習任務(漸進式)
- 復現:寫一個
prompt | model | parser
鏈。 - 擴展:添加
.stream()
和.astream()
,觀察輸出差異。 - 注入:添加自定義
CallbackHandler
,打印on_llm_start/end
。 - 追蹤:啟用
LANGCHAIN_TRACING_V2
,在 LangSmith 查看 trace。 - 破壞:故意在鏈中插入
RunnableLambda(lambda x: 1/0)
,觀察錯誤傳播。
? 成果:你能解釋
Runnable
的invoke/stream/batch
是如何統一調度的。
📚 模塊 2:模型與輸入輸出(The Brain)
聊天模型 + 消息 + 提示 + 結構化輸出
🎯 學習目標
掌握如何“喂給模型正確的輸入”并“解析出想要的輸出”。
🔗 核心概念
聊天模型
(ChatModel)消息
(Message)聊天歷史
(Chat History)提示模板
(PromptTemplate)少樣本提示
(Few-shot Prompting)示例選擇器
(ExampleSelector)結構化輸出
(Structured Output)輸出解析器
(OutputParser)
🔄 刻意練習任務(漸進式)
- 構建:用
ChatPromptTemplate
創建一個帶SystemMessage
和HumanMessage
的模板。 - 增強:加入 2 個
few-shot examples
,使用FewShotPromptTemplate
。 - 動態:使用
SemanticSimilarityExampleSelector
根據用戶輸入自動選擇最相關的示例。 - 結構化:讓模型輸出 JSON,使用
JsonOutputParser
或model.with_structured_output(schema)
。 - 對比:比較“用 OutputParser 解析自由文本” vs “用 structured_output 強制格式”的穩定性。
? 成果:你能設計一個高魯棒性的提示系統,支持動態示例和結構化輸出。
📚 模塊 3:記憶與上下文管理(The Memory)
對話狀態持久化
🎯 學習目標
讓 AI “記住”之前的對話,實現多輪交互。
🔗 核心概念
內存
(Memory)聊天歷史
(Chat History)對話緩沖區
(ConversationBufferMemory)對話摘要
(ConversationSummaryMemory)實體記憶
(EntityMemory)
🔄 刻意練習任務(漸進式)
- 簡單記憶:使用
ConversationBufferMemory
實現“記住上一條消息”。 - 持久化:將
chat_history
存入InMemoryChatMessageHistory
或Redis
。 - 壓縮:使用
ConversationSummaryBufferMemory
,當上下文過長時自動摘要。 - 實體感知:使用
ConversationEntityMemory
,讓模型記住用戶提到的“人物”、“地點”。 - 集成:將記憶系統接入模塊 2 的鏈中,實現“帶記憶的問答”。
? 成果:你能構建一個支持長對話、自動摘要、實體記憶的聊天機器人。
📚 模塊 4:知識增強(The Knowledge)
RAG:讓 AI 知道它不知道的事
🎯 學習目標
構建一個能從外部知識庫中檢索信息并生成答案的系統。
🔗 核心概念
文檔加載器
(Document Loaders)文本分割器
(Text Splitters)嵌入模型
(Embedding Models)向量存儲
(Vector Stores)檢索器
(Retrievers)檢索增強生成
(RAG)多模態
(Multimodal - 可選擴展)
🔄 刻意練習任務(漸進式)
- 加載:用
WebBaseLoader
加載一個網頁,或PyPDFLoader
加載 PDF。 - 分割:用
RecursiveCharacterTextSplitter
將文檔切塊。 - 嵌入:用
OpenAIEmbeddings
生成向量。 - 存儲:存入
FAISS
或Chroma
。 - 檢索:創建
VectorStoreRetriever
,測試similarity_search
。 - RAG 鏈:構建
retriever | prompt | model | parser
鏈。 - 優化:嘗試
ContextualCompressionRetriever
或MultiQueryRetriever
。
? 成果:你能構建一個“基于公司文檔的問答機器人”。
📚 模塊 5:決策與行動(The Agent)
讓 AI 自主思考并執行
🎯 學習目標
構建一個能根據目標自主選擇工具、調用 API、完成復雜任務的代理。
🔗 核心概念
工具
(Tools)工具調用
(Tool Calling)代理
(Agent)執行器
(AgentExecutor)代理類型
(Zero-shot, ReAct, etc.)
🔄 刻意練習任務(漸進式)
- 定義工具:創建
@tool
裝飾的函數,如get_weather(location: str)
。 - 測試工具:單獨調用工具,驗證其功能。
- 創建代理:用
create_tool_calling_agent
創建一個支持工具調用的代理。 - 執行:使用
AgentExecutor
運行代理,觀察其如何“思考 → 選擇工具 → 調用 → 總結”。 - 復雜任務:給代理一個復雜任務,如“查詢北京天氣,并推薦適合的穿搭”。
- 自定義:實現一個
CustomTool
,調用外部 API(如 GitHub)。
? 成果:你能構建一個能自主完成多步驟任務的 AI 助手。
📚 模塊 6:工程化與質量保障(The Quality)
生產級應用的基石
🎯 學習目標
確保你的 AI 應用可靠、可測、可評估。
🔗 核心概念
測試
(Testing)評估
(Evaluation)LangSmith
(Tracing + Evaluation)回調
(用于監控)異步編程
(高性能)
🔄 刻意練習任務(漸進式)
- 單元測試:為模塊 1-5 的鏈和組件寫
unittest
。 - 追蹤分析:在 LangSmith 中分析一個 RAG 鏈的 trace,找出延遲最高的節點。
- 評估:使用 LangSmith 的
evaluate
功能,對 RAG 的“答案相關性”打分。 - A/B 測試:比較兩種
TextSplitter
對 RAG 效果的影響。 - 性能:用
async
版本(ainvoke
,abatch
)重構一個批處理任務。
? 成果:你能用數據證明你的 AI 應用是高質量、可維護的。
🗓 四周漸進式學習計劃(每周聚焦一個模塊)
周數 | 主題 | 每周目標 | 輸出物 |
---|---|---|---|
第1周 | 模塊 1 + 模塊 2 | 掌握 LCEL 和提示工程 | 1. 一個帶結構化輸出的 LCEL 鏈 2. 一個支持少樣本提示的模板 |
第2周 | 模塊 3 + 模塊 4 | 實現記憶和 RAG | 1. 一個帶記憶的聊天機器人 2. 一個基于 PDF 的問答系統 |
第3周 | 模塊 5 | 構建智能代理 | 1. 一個能調用 3 個工具的代理 2. 一個能完成復雜任務的 AgentExecutor |
第4周 | 模塊 6 | 工程化與評估 | 1. 為前 3 周的項目寫測試 2. 在 LangSmith 中完成一次完整評估報告 |
🧠 刻意練習原則(貫穿始終)
-
每次練習只聚焦一個新概念(如:本周只練
Retriever
,不同時搞Agent
)。 -
先復現 → 再破壞 → 再修復 → 再擴展。
-
每完成一個任務,問自己:
- 這個組件解決了什么問題?
- 如果沒有它,系統會怎樣?
- 它和其他組件如何協作?
-
用 LangSmith 追蹤每一個鏈,可視化你的學習路徑。
🚀 最終項目建議(綜合應用)
構建一個“智能研究助手”
-
用戶輸入:“幫我研究 LangChain 的 RAG 最佳實踐”
-
系統行為:
- 記憶:記住用戶偏好(如“喜歡看代碼示例”)。
- 檢索:從 LangChain 官方文檔中檢索相關內容。
- 工具調用:調用
web_search
工具獲取最新博客。 - 生成:整合信息,生成結構化報告(JSON)。
- 評估:自動評估報告的完整性,并給出改進意見。
? 總結
你不再需要“隨機學習”這些概念。
你現在有一個:
- 系統性框架(6 個模塊)
- 漸進式路徑(4 周計劃)
- 刻意練習方法(復現 → 破壞 → 擴展)
- 可衡量成果(每個模塊的輸出物)