在人工智能的前沿領(lǐng)域,LangChain作為一個(gè)創(chuàng)新的開源框架,正定義著大型語(yǔ)言模型 (large language model,LLM) 應(yīng)用的未來。隨著技術(shù)的快速發(fā)展,開發(fā)者面臨著如何高效構(gòu)建、部署及優(yōu)化基于LLM 的應(yīng)用程序的挑戰(zhàn)。為了幫助開發(fā)者應(yīng)對(duì)這些挑戰(zhàn),本書將深入探討LangChain, 從快速入門到高級(jí)應(yīng)用,全面覆蓋LangChain的核心概念和實(shí)際操作。
LangChain不僅僅是一個(gè)開源框架,也是一扇通往創(chuàng)新世界的大門,為渴望在人工智能 領(lǐng)域探索的開發(fā)者提供了必要的工具和指南。通過提供一系列的核心庫(kù)、社區(qū)集成、伙伴包和開發(fā)工具,LangChain旨在簡(jiǎn)化LLM 應(yīng)用程序和智能體開發(fā)的整個(gè)生命周期,讓開發(fā)者能夠更加專注于創(chuàng)造獨(dú)特應(yīng)用,而不是被底層技術(shù)的復(fù)雜性所困擾。
本書致力于成為L(zhǎng)angChain的終極指南,旨在指導(dǎo)初學(xué)者和經(jīng)驗(yàn)豐富的開發(fā)者利用這個(gè)強(qiáng)大的框架構(gòu)建他們自己的AI應(yīng)用。無論你打算開發(fā)智能聊天機(jī)器人、動(dòng)態(tài)的問答系統(tǒng),還是能夠生成創(chuàng)新內(nèi)容的應(yīng)用程序,本書都將提供清晰、實(shí)用的指導(dǎo),幫助你從概念到實(shí)現(xiàn),再到部署,每一步都得心應(yīng)手。
本書以直觀、實(shí)用為導(dǎo)向,結(jié)構(gòu)清晰地展現(xiàn)了如何利用LangChain 開發(fā)高效、強(qiáng)大的AI應(yīng)用。從最基本的Chain結(jié)構(gòu)、提示、模型、輸出解析器的構(gòu)建,到接入國(guó)內(nèi)外最強(qiáng)大的模型如ChatGLM4和GPT4等,再到探索利用開源大模型的類OpenAI 服務(wù)器,本書對(duì)知識(shí)點(diǎn)的介紹立足實(shí)際應(yīng)用,確保讀者可以輕松上手,快速進(jìn)步。
進(jìn)一步,本書深入探討了LangChain的提示詞工程,詳細(xì)解析了提示詞模塊的應(yīng)用和優(yōu)化技巧,如長(zhǎng)度選擇器、相似度選擇器和重疊選擇器的使用,以及通過ChromaDB向量數(shù)據(jù)庫(kù)提高問題解答的準(zhǔn)確率。此外,本書還探討了利用LangChain 解析大模型輸出,包括CSV 、JSON 和 XML 等格式,為讀者揭開了大模型輸出解析的神秘面紗。
本書還對(duì) LangChain 數(shù)據(jù)檢索增強(qiáng) (RAG)系統(tǒng)進(jìn)行了全面解讀,從數(shù)據(jù)檢索增強(qiáng)的 基礎(chǔ),到知識(shí)庫(kù)的處理解析和高效檢索技術(shù),無不體現(xiàn)了LangChain 在實(shí)現(xiàn)復(fù)雜信息處理 方面的強(qiáng)大能力。同時(shí),本書還細(xì)致討論了智能體 (agent) 的開發(fā),包括智能體的搭建、 記憶能力的增加,以及通過LangChain搭建適應(yīng)不同大模型的智能體,為讀者呈現(xiàn)了AI 智 能體開發(fā)的全貌。
最后,本書將帶領(lǐng)讀者探索 LangChain 在實(shí)際應(yīng)用中的無限可能,從具有知識(shí)庫(kù)的上下文感知AI 銷售助手,到LangGraph 多智能體協(xié)作框架的構(gòu)建,每一個(gè)案例都精心設(shè)計(jì), 旨在通過實(shí)際操作展現(xiàn)LangChain 的實(shí)戰(zhàn)價(jià)值和應(yīng)用潛力。無論你是AI 領(lǐng)域的初學(xué)者,還是尋求深入理解 LangChain 的高級(jí)開發(fā)者,本書都將是不可多得的指南。通過本書,你不僅能夠掌握 LangChain 的核心技術(shù)和應(yīng)用策略,還能激發(fā)創(chuàng)新思維,開啟AI 開發(fā)之旅。
歡迎閱讀本書,讓我們一同探索 LangChain 的奇妙世界,解鎖人工智能應(yīng)用開發(fā)的無限可能。
第 1 章 快速認(rèn)識(shí) LangChain 1
1.1 LangChain概 述 2
1.1.1 認(rèn)識(shí) LangChain 2
1.1.2 LangChain的用途 3
1.1.3 LangChain生態(tài)與開源項(xiàng)目概覽 4
1.2 安裝Python環(huán)境 5
1.2.1 下載 Anaconda 5
1.2.2 安裝 Anaconda 7
1.3 使用Jupyter Notebook 學(xué)習(xí)LangChain 8
1.3.1 安裝 JupyterNotebook 8
1.3.2 啟動(dòng)JupyterNotebook 9
1.3.3 創(chuàng)建新的 Notebook 10
1.3.4 使用JupyterNotebook 學(xué)習(xí)LangChain 10
1.3.5 Jupyter Notebook 快捷鍵 11
1.3.6 使用快捷鍵的好處 13
1.4 安裝和配置 LangChain環(huán)境 13
1.5 第一個(gè)LangChain應(yīng)用示例 15
第 2 章 接入大模型 21
2.1 在LangChain中使用免費(fèi)的文心大模型 API 22
2.1.1 文心大模型簡(jiǎn)介 22
2.1.2 基礎(chǔ)使用 22
2.1.3 鏈?zhǔn)秸{(diào)用 25
2.1.4 流式生成 25
2.1.5 批量生成 26
2.2 使用 DeepSeek API進(jìn)行 LangChain 開發(fā) 26
2.2.1 DeepSeek -V2概述 27
2.2.2 獲取 API 密 鑰 27
2.2.3 配置環(huán)境 27
2.2.4 集成 DeepSeek API 28
2.3 在LangChain 中使用 ChatGLM-4 API 30
2.3.1 GLM-4模型簡(jiǎn)介 30
2.3.2 在LangChain中集成 ChatGLM-4 30
2.4 LangChain 調(diào)用本地開源大模型ChatGLM3 32
2.4.1 ChatGLM3-6B 模型簡(jiǎn)介 32
2.4.2 安裝和準(zhǔn)備工作 33
2.4.3 實(shí)現(xiàn)基本對(duì)話 34
2.4.4 LangChain 調(diào)用本地開源大模型 ChatGLM3 34
2.5 接入部署的開源大模型的類OpenAI 服務(wù)器 37
2.5.1 為什么要實(shí)現(xiàn) OpenAI 類似的響應(yīng) 38
2.5.2 常見本地部署提供兼容的 OpenAIAPI 應(yīng)用 38
2.6 LM Studio 搭 建OpenAI API 服務(wù)器 41
2.6.1 安裝 LM Studio 41
2.6.2 下載和加載模型 43
2.6.3 配置和運(yùn)行本地服務(wù)器 48
2.6.4 鏈?zhǔn)秸{(diào)用 49
第3章 LangChain提示詞工程 51
3.1 利用提示詞工程構(gòu)建 LangChain AI應(yīng) 用 52
3.1.1 基礎(chǔ)策略 52
3.1.2 高級(jí)技巧 52
3.1.3 實(shí)際案例分析 53
3.2 LangChain 提示詞模塊 54
3.2.1 PromptTemplate 的使用 54
3.2.2 ChatPromptTemplate 的使用 56
3.3 少樣本提示示例 57
3.3.1 理解少樣本提示 58
3.3.2 LangChain 中的少樣本提示應(yīng)用 58
3.3.3 編寫少樣本提示 58
第 4 章 高級(jí)提示詞技術(shù) 65
4.1 巧用提示詞的案例選擇器 66
4.1.1 根據(jù)長(zhǎng)度優(yōu)化示例選擇器 66
4.1.2 使用最大余弦相似度嵌入示例 69
4.1.3 使用 MMR 選擇示例 71
4.1.4 構(gòu)建和格式化提示 72
4.1.5 調(diào)用和解析結(jié)果 74
4.2 消息對(duì)話提示詞實(shí)現(xiàn)少樣本學(xué)習(xí) 74
4.3 向量存儲(chǔ)實(shí)現(xiàn)消息對(duì)話的示例選擇 77
4.3.1 引入必要的庫(kù) 77
4.3.2 加載模型 77
4.3.3 創(chuàng)建示例集合 78
4.3.4 利 用Chroma 向量存儲(chǔ)和語(yǔ)義相似度選擇示例 78
4.3.5 選擇語(yǔ)義相似的示例 79
4.3.6 應(yīng)用示例格式化對(duì)話 80
4.4 管理歷史消息 82
4.4.1 MessagesPlaceholder 組 件 82
4.4.2 如何使用MessagesPlaceholder 82
4.4.3 實(shí)際使用場(chǎng)景 83
4.5 預(yù)設(shè)部分提示詞變量 84
4.6 動(dòng)態(tài)預(yù)設(shè)提示詞變量 87
4.7 管道提示詞 90
第5章 LangChain 輸出解析 94
5.1 CSV 格式解析器 95
5.1.1 理解 CommaSeparatedListOutputParser 95
5.1.2 配置輸出解析器 95
5.1.3 創(chuàng)建 Prompt 模板 96
5.1.4 應(yīng)用解析器 97
5.1.5 示例應(yīng)用:列出冰淇淋口味 97
5.2 日期時(shí)間格式解析器 98
5.3 枚舉解析器 100
5.3.1 引入枚舉類型 100
5.3.2 枚舉解析器的配置與使用 101
5.3.3 構(gòu)建 LangChain 調(diào)用鏈 101
5.3.4 執(zhí)行與輸出 102
5.4 XML 格式解析器 102
5.5 自定義大模型輸出解析器 104
5.5.1 使用RunnableLambda 或 RunnableGenerator 105
5.5.2 將關(guān)鍵詞替換為表情符號(hào) 105
第 6 章 檢索增強(qiáng)生成 107
6.1 詳解 RAG 108
6.1.1 認(rèn)識(shí)RAG 108
6.1.2 RAG 的技術(shù)原理 109
6.1.3 RAG 的應(yīng)用 110
6.1.4 RAG 的挑戰(zhàn)與未來發(fā)展 111
6.2 RAG 應(yīng)用案例 113
6.2.1 創(chuàng)建向量數(shù)據(jù)庫(kù) 113
6.2.2 使用檢索器檢索相關(guān)文檔 114
6.2.3 結(jié) 合LangChain 進(jìn)行問答 114
6.3 知識(shí)庫(kù)文檔的多種加載方式 115
6.3.1 加載單個(gè)文本文檔 116
6.3.2 加載整個(gè)目錄的文檔 116
6.3.3 加載 HTML 格式的文檔 117
6.4 處 理PDF 格式的知識(shí)庫(kù)文檔 118
6.5 分割長(zhǎng)文本 120
6.5.1 加載文檔 120
6.5.2 創(chuàng)建文本分割器 121
6.5.3 分割文檔 122
6.6 分割不同語(yǔ)言的代碼 123
6.6.1 必要模塊引入和語(yǔ)言支持 123
6.6.2 分割器配置與使用 125
6.6.3 處理其他語(yǔ)言 126
6.7 Markdown 文本分割 126
6.7.1 MarkdownHeaderTextSplitter 概述與基本使用 127
6.7.2 分割選項(xiàng) 128
第7章 高級(jí) RAG 應(yīng)用 129
7.1 最大邊際相關(guān)性檢索 130
7.1.1 基本概念 130
7.1.2 文檔庫(kù)設(shè)置與向量存儲(chǔ)構(gòu)建 130
7.1.3 MMR 檢索集成與回答生成 131
7.2 實(shí)現(xiàn)相似性分?jǐn)?shù)閾值檢索 132
7.2.1 相似性分?jǐn)?shù)閾值檢索的概念及基本設(shè)置 133
7.2.2 相似性分?jǐn)?shù)閾值檢索與MMR 檢索的比較 133
7.3 自查詢檢索器的使用 134
7.3.1 工作原理和代碼配置 134
7.3.2 文檔和向量存儲(chǔ)配置 135
7.3.3 自查詢檢索器配置與操作示例 136
第8章 AI應(yīng)用流程控制 139
8.1 并行處理任務(wù) 140
8.2 管道中添加自定義函數(shù) 142
8.3 LangChain 動(dòng)態(tài)路由邏輯 144
8.4 運(yùn)行時(shí)配置鏈的內(nèi)部結(jié)構(gòu) 148
8.4.1 兩種方法的使用 148
8.4.2 實(shí)際應(yīng)用示例 149
8.5 使用@chain 裝飾器 150
8.6 自定義流式生成器函數(shù) 152
8.7 異步的自定義流式生成器函數(shù) 154
第9章 智能體開發(fā) 156
9.1 什么是智能體 157
9.1.1 智能體的核心功能 157
9.1.2 智能體的應(yīng)用 157
9.1.3 開發(fā)智能體的挑戰(zhàn) 158
9.2 智能體開發(fā)的關(guān)鍵組件 158
9.3 案例分析:智能體自動(dòng)處理 GitHub 問題 160
9.4 @tool 快速定義智能體工具 161
9.4.1 理 解 @tool 裝飾器 161
9.4.2 示例:定義天氣查詢工具 162
9.4.3 使用場(chǎng)景和最佳實(shí)踐 164
9.5 定義智能搜索工具 164
9.6 快速搭建第一個(gè)智能體 168
9.7 提示詞引導(dǎo)智能體使用工具 170
9.8 格式化中間步驟構(gòu)建智能體 174
9.8.1 中間步驟格式化和輸出解析 174
9.8.2 構(gòu)建智能體執(zhí)行流程 178
9.8.3 執(zhí)行智能體 179
9.9 為智能體添加歷史聊天記錄 181
第 1 0 章 智能體強(qiáng)化 184
10.1 獲取并處理學(xué)術(shù)論文 185
10.2 AI調(diào)用 Shell 命令控制電腦 187
10.3 AI自動(dòng)生成與執(zhí)行代碼 189
10.3.1 利 用LangChain 構(gòu)建自動(dòng)化代碼生成流程 189
10.3.2 示例:自動(dòng)解決數(shù)學(xué)問題 191
第 1 1 章 LangGraph 多智能體 192
11.1 LangGraph 的核心概念 193
11.2 搭建 LangGraph 應(yīng)用 194
11.2.1 定義節(jié)點(diǎn)和邊 194
11.2.2 創(chuàng)建和配置圖 196
11.2.3 展示圖結(jié)構(gòu) 198
11.2.4 執(zhí)行圖 198
11.2.5 圖的動(dòng)態(tài)行為和狀態(tài)管理 199
11.3 LangGraph 靈活自定義智能體 199
11.3.1 定義大語(yǔ)言模型 200
11.3.2 定義智能體提示詞 200
11.3.3 定義工具 201
11.3.4 定義狀態(tài) 203
11.3.5 定義是否使用工具條件 203
11.3.6 定義圖 204
11.3.7 使用智能體 207
11.4 多智能體模擬圓桌派綜藝節(jié)目 208
11.4.1 智能體配置 209
11.4.2 信息流與處理邏輯 209
11.4.3 構(gòu)建數(shù)據(jù)流圖 214
第12章 人工智能銷售助手 218
12.1 概述與核心概念 218
12.2 SalesGPT 智能體的架構(gòu) 219
12.2.1 銷售代理的運(yùn)行機(jī)制 219
12.2.2 銷售階段識(shí)別代理 220
12.2.3 系統(tǒng)整合與數(shù)據(jù)流 220
12.3 定義銷售對(duì)話階段分析鏈 221
12.3.1 理 解LangChain 鏈的基礎(chǔ) 221
12.3.2 設(shè)計(jì) StageAnalyzerChain 221
12.3.3 實(shí)現(xiàn) StageAnalyzerChain 222
12.4 LangChain 實(shí)現(xiàn)歷史對(duì)話生成銷售話語(yǔ)的類 224
12.4.1 設(shè)計(jì) SalesConversationChain類 224
12.4.2 實(shí)施 SalesConversationChain 225
12.5 構(gòu)建和利用產(chǎn)品知識(shí)庫(kù) 228
12.5.1 設(shè)計(jì)產(chǎn)品知識(shí)庫(kù) 229
12.5.2 實(shí)施和部署產(chǎn)品知識(shí)庫(kù) 230
12.5.3 利用產(chǎn)品知識(shí)庫(kù)進(jìn)行銷售支持 232
12.5.4 維護(hù)和優(yōu)化知識(shí)庫(kù) 232
12.6 定義知識(shí)庫(kù)工具的模板和解析器 233
12.6.1 自定義提示模板 233
12.6.2 定義銷售智能體輸出解析器 234
12.7 定義LangChain 銷售智能體類 236
12.7.1 SalesGPT 類概述 236
12.7.2 動(dòng)態(tài)工具使用 237
12.7.3 實(shí)現(xiàn)復(fù)雜對(duì)話管理 238
12.7.4 完整代碼示例 238
12.8 配置和運(yùn)行銷售智能體 247
12.8.1 設(shè)置代理配置 248
12.8.2 初始化和運(yùn)行智能體 248