LangChain為開發(fā)者提供了一套強(qiáng)大而靈活的工具,使其能夠輕松構(gòu)建和優(yōu)化大模型應(yīng)用。本書以簡潔而實(shí)用的方式引導(dǎo)讀者入門大模型應(yīng)用開發(fā),涵蓋LangChain的核心概念、原理和高級(jí)特性,并為讀者提供了在實(shí)際項(xiàng)目中應(yīng)用LangChain的指導(dǎo)。
本書從實(shí)際的例子出發(fā),細(xì)致解讀LangChain框架的核心模塊和源碼,使抽象的概念變得具體。無論你是初學(xué)者還是有經(jīng)驗(yàn)的開發(fā)者,都能從中受益,能夠?qū)angChain的獨(dú)特之處融入自己的編程實(shí)踐中。閱讀本書,一起探索LangChain編程的奇妙世界吧!
1."莫爾索隨筆"公號(hào)主理人首部關(guān)于LLM應(yīng)用開發(fā)實(shí)踐圖書,致力于大模型技術(shù)普及;
2.簡潔而實(shí)用的方式引導(dǎo)讀者入門大模型應(yīng)用開發(fā),涵蓋LangChain的核心概念、原理和高級(jí)特性;
3.實(shí)際的例子出發(fā),細(xì)致解讀LangChain框架的核心模塊和源碼,使抽象的概念變得具體;
4.為大模型應(yīng)用開發(fā)初學(xué)者量身打造的實(shí)用指南,深入淺出帶領(lǐng)讀者探索LangChain框架的強(qiáng)大功能,從基礎(chǔ)概念到實(shí)際應(yīng)用,逐步揭示構(gòu)建高效AI應(yīng)用的秘密。
李多多(@莫爾索)
在大模型應(yīng)用落地方面有豐富的經(jīng)驗(yàn),為知名項(xiàng)目AutoGPT、LangChain框架等貢獻(xiàn)過代碼。撰有開源電子書《LLM應(yīng)用開發(fā)實(shí)踐》!澳獱査麟S筆”公眾號(hào)主理人,致力于大模型技術(shù)普及。
前言
第 1章 LangChain簡介 1
1.1 LangChain的產(chǎn)生背景 1
1.1.1 大模型技術(shù)浪潮 1
1.1.2 大模型時(shí)代的開發(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初體驗(yàn) 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)行觀測(cè) 26
2.2.6 使用LangServe提供服務(wù) 26
2.3 最佳安全實(shí)踐 29
第3章 模型輸入與輸出 30
3.1 大模型原理解釋 30
3.1.1 為什么模型輸出不可控 30
3.1.2 輸入對(duì)輸出的影響 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對(duì)象接口探究 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高級(jí)特性 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 容錯(cuò)機(jī)制 69
4.4 Chain接口 70
4.4.1 Chain接口調(diào)用 70
4.4.2 自定義Chain實(shí)現(xiàn) 71
4.4.3 工具Chain 73
4.5 專用Chain 74
4.5.1 對(duì)話場(chǎng)景 74
4.5.2 基于文檔問答場(chǎng)景 75
4.5.3 數(shù)據(jù)庫問答場(chǎng)景 75
4.5.4 API 查詢場(chǎng)景 76
4.5.5 文本總結(jié)場(chǎng)景 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 向量存儲(chǔ) 91
5.2.5 檢索器 95
5.2.6 多文檔聯(lián)合檢索 103
5.2.7 RAG技術(shù)的關(guān)鍵挑戰(zhàn) 106
5.3 檢索增強(qiáng)生成實(shí)踐 106
5.3.1 文檔預(yù)處理過程 106
5.3.2 文檔檢索過程 111
5.3.3 方案優(yōu)勢(shì) 116
第6章 智能代理設(shè)計(jì) 117
6.1 智能代理的概念 117
6.2 LangChain中的代理 117
6.2.1 LLM 驅(qū)動(dòng)的智能代理 118
6.2.2 LangChain中的代理 121
6.2.3 代理的類型 125
6.2.4 自定義代理工具 133
6.3 設(shè)計(jì)并實(shí)現(xiàn)一個(gè)多模態(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 記憶組件實(shí)戰(zhàn) 152
7.4.1 方案說明 153
7.4.2 代碼實(shí)踐 153
第8章 回調(diào)機(jī)制 159
8.1 回調(diào)處理器 159
8.2 使用回調(diào)的兩種方式 161
8.2.1 構(gòu)造器回調(diào) 161
8.2.2 請(qǐng)求回調(diào) 161
8.3 實(shí)現(xiàn)可觀測(cè)性插件 162
第9章 構(gòu)建多模態(tài)機(jī)器人 165
9.1 需求思考與設(shè)計(jì) 165
9.1.1 需求分析 165
9.1.2 應(yīng)用設(shè)計(jì) 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 實(shí)現(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 模型效果評(píng)估 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 項(xiàng)目代碼與文檔 180
10.1.3 社區(qū)貢獻(xiàn) 181
10.1.4 參與社區(qū)活動(dòng) 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ā)展計(jì)劃 191