LangChain為開發(fā)者提供了一套強大而靈活的工具,使其能夠輕松構(gòu)建和優(yōu)化大模型應(yīng)用。本書以簡潔而實用的方式引導(dǎo)讀者入門大模型應(yīng)用開發(fā),涵蓋LangChain的核心概念、原理和高級特性,并為讀者提供了在實際項目中應(yīng)用LangChain的指導(dǎo)。
本書從實際的例子出發(fā),細(xì)致解讀LangChain框架的核心模塊和源碼,使抽象的概念變得具體。無論你是初學(xué)者還是有經(jīng)驗的開發(fā)者,都能從中受益,能夠?qū)angChain的獨特之處融入自己的編程實踐中。閱讀本書,一起探索LangChain編程的奇妙世界吧!
1."莫爾索隨筆"公號主理人首部關(guān)于LLM應(yīng)用開發(fā)實踐圖書,致力于大模型技術(shù)普及;
2.簡潔而實用的方式引導(dǎo)讀者入門大模型應(yīng)用開發(fā),涵蓋LangChain的核心概念、原理和高級特性;
3.實際的例子出發(fā),細(xì)致解讀LangChain框架的核心模塊和源碼,使抽象的概念變得具體;
4.為大模型應(yīng)用開發(fā)初學(xué)者量身打造的實用指南,深入淺出帶領(lǐng)讀者探索LangChain框架的強大功能,從基礎(chǔ)概念到實際應(yīng)用,逐步揭示構(gòu)建高效AI應(yīng)用的秘密。
李多多(@莫爾索)
在大模型應(yīng)用落地方面有豐富的經(jīng)驗,為知名項目AutoGPT、LangChain框架等貢獻(xiàn)過代碼。撰有開源電子書《LLM應(yīng)用開發(fā)實踐》。“莫爾索隨筆”公眾號主理人,致力于大模型技術(shù)普及。
前言
第 1章 LangChain簡介 1
1.1 LangChain的產(chǎn)生背景 1
1.1.1 大模型技術(shù)浪潮 1
1.1.2 大模型時代的開發(fā)范式 5
1.1.3 LangChain框架的爆火 6
1.2 LangChain核心概念和模塊 8
1.2.1 模型I/O模塊 9
1.2.2 檢索模塊 9
1.2.3 鏈模塊 10
1.2.4 記憶模塊 10
1.2.5 代理模塊 11
1.2.6 回調(diào)模塊 13
1.3 LangChain與其他框架的比較 13
1.3.1 框架介紹 14
1.3.2 框架比較 16
1.3.3 小結(jié) 17
第 2章 LangChain初體驗 18
2.1 開發(fā)環(huán)境準(zhǔn)備 18
2.1.1 管理工具安裝 18
2.1.2 源碼安裝 19
2.1.3 其他庫安裝 19
2.2 快速開始 19
2.2.1 語言模型 20
2.2.2 提示模板 21
2.2.3 輸出解析器 22
2.2.4 使用LCEL進(jìn)行組合 23
2.2.5 使用LangSmith進(jìn)行觀測 26
2.2.6 使用LangServe提供服務(wù) 26
2.3 最佳安全實踐 29
第3章 模型輸入與輸出 30
3.1 大模型原理解釋 30
3.1.1 為什么模型輸出不可控 30
3.1.2 輸入對輸出的影響 31
3.2 提示模板組件 34
3.2.1 基礎(chǔ)提示模板 34
3.2.2 自定義提示模板 36
3.2.3 使用FewShotPromptTemplate 37
3.2.4 示例選擇器 39
3.3 大模型接口 42
3.3.1 聊天模型 43
3.3.2 聊天模型提示詞的構(gòu)建 43
3.3.3 定制大模型接口 46
3.3.4 擴(kuò)展模型接口 51
3.4 輸出解析器 51
第4章 鏈的構(gòu)建 56
4.1 鏈的基本概念 56
4.2 Runnable對象接口探究 56
4.2.1 schema 60
4.2.2 invoke 61
4.2.3 stream 62
4.2.4 batch 63
4.2.5 astream_log 65
4.3 LCEL高級特性 66
4.3.1 ConfigurableField 66
4.3.2 RunnableLambda 67
4.3.3 RunnableBranch 67
4.3.4 RunnablePassthrough 68
4.3.5 RunnableParallel 68
4.3.6 容錯機制 69
4.4 Chain接口 70
4.4.1 Chain接口調(diào)用 70
4.4.2 自定義Chain實現(xiàn) 71
4.4.3 工具Chain 73
4.5 專用Chain 74
4.5.1 對話場景 74
4.5.2 基于文檔問答場景 75
4.5.3 數(shù)據(jù)庫問答場景 75
4.5.4 API 查詢場景 76
4.5.5 文本總結(jié)場景 76
第5章 RAG 77
5.1 RAG技術(shù)概述 77
5.2 LangChain中的RAG組件 80
5.2.1 加載器 80
5.2.2 分割器 81
5.2.3 文本嵌入 86
5.2.4 向量存儲 91
5.2.5 檢索器 95
5.2.6 多文檔聯(lián)合檢索 103
5.2.7 RAG技術(shù)的關(guān)鍵挑戰(zhàn) 106
5.3 檢索增強生成實踐 106
5.3.1 文檔預(yù)處理過程 106
5.3.2 文檔檢索過程 111
5.3.3 方案優(yōu)勢 116
第6章 智能代理設(shè)計 117
6.1 智能代理的概念 117
6.2 LangChain中的代理 117
6.2.1 LLM 驅(qū)動的智能代理 118
6.2.2 LangChain中的代理 121
6.2.3 代理的類型 125
6.2.4 自定義代理工具 133
6.3 設(shè)計并實現(xiàn)一個多模態(tài)代理 136
第7章 記憶組件 139
7.1 構(gòu)建記憶系統(tǒng) 140
7.2 記憶組件類型 141
7.2.1 ConversationBufferMemory 141
7.2.2 ConversationBufferWindowMemory 142
7.2.3 ConversationEntityMemory 142
7.2.4 ConversationKGMemory 143
7.2.5 VectorStoreRetrieverMemory 144
7.2.6 ConversationSummaryMemory 145
7.2.7 ConversationSummaryBufferMemory 145
7.2.8 VectorStoreRetrieverMemory 146
7.3 記憶組件的應(yīng)用 147
7.3.1 將記憶組件接入代理 148
7.3.2 自定義記憶組件 149
7.3.3 不同記憶組件結(jié)合 151
7.4 記憶組件實戰(zhàn) 152
7.4.1 方案說明 153
7.4.2 代碼實踐 153
第8章 回調(diào)機制 159
8.1 回調(diào)處理器 159
8.2 使用回調(diào)的兩種方式 161
8.2.1 構(gòu)造器回調(diào) 161
8.2.2 請求回調(diào) 161
8.3 實現(xiàn)可觀測性插件 162
第9章 構(gòu)建多模態(tài)機器人 165
9.1 需求思考與設(shè)計 165
9.1.1 需求分析 165
9.1.2 應(yīng)用設(shè)計 165
9.1.3 Slack應(yīng)用配置 167
9.2 利用LangChain開發(fā)應(yīng)用 170
9.2.1 構(gòu)建Slack事件接口 171
9.2.2 消息處理框架 172
9.2.3 實現(xiàn)多模態(tài)代理 174
9.3 應(yīng)用監(jiān)控和調(diào)優(yōu) 177
9.3.1 應(yīng)用監(jiān)控 177
9.3.2 模型效果評估 178
9.3.3 模型備選服務(wù) 178
9.3.4 模型內(nèi)容安全 179
9.3.5 應(yīng)用部署 179
第 10章 社區(qū)和資源 180
10.1 LangChain社區(qū)介紹 180
10.1.1 官方博客 180
10.1.2 項目代碼與文檔 180
10.1.3 社區(qū)貢獻(xiàn) 181
10.1.4 參與社區(qū)活動 182
10.2 資源和工具推薦 182
10.2.1 模板 183
10.2.2 LangServe 184
10.2.3 LangSmith 186
10.2.4 教程用例 189
10.3 LangChain的未來展望 189
10.3.1 生態(tài)系統(tǒng)概覽 191
10.3.2 變化與重構(gòu) 191
10.3.3 發(fā)展計劃 191