零基礎(chǔ)自學(xué)AI應(yīng)用開發(fā)
定 價(jià):79.8 元
- 作者:李光毅
- 出版時(shí)間:2025/12/1
- ISBN:9787115682604
- 出 版 社:人民郵電出版社
- 中圖法分類:TP18
- 頁碼:318
- 紙張:
- 版次:01
- 開本:16開
本書旨在用傳統(tǒng)前后端開發(fā)過程中開發(fā)者熟悉的詞匯與術(shù)語對(duì)AI應(yīng)用開發(fā)的專業(yè)知識(shí)進(jìn)行深入淺出的講解,使開發(fā)者能夠從0到1入門AI應(yīng)用開發(fā)。本書不拘泥于講解單一編程語言、單一模型和單一框架,而是盡可能完整地展現(xiàn)不同技術(shù)方案的優(yōu)劣、技術(shù)選型時(shí)的考量和技術(shù)生態(tài)的全貌。書中涵蓋當(dāng)下多種熱門類型AI應(yīng)用的開發(fā),從OpenAI API調(diào)用到RAG開發(fā),從MCP服務(wù)器創(chuàng)建到智能體開發(fā)。本書的內(nèi)容編排循序漸進(jìn),前半部分聚焦“入門”,通過控制代碼復(fù)雜度及詳細(xì)的基礎(chǔ)知識(shí)講解,幫助讀者快速熟悉AI應(yīng)用開發(fā)中的概念與常見模式;后半部分聚焦“進(jìn)階”,將向量數(shù)據(jù)庫、第三方云服務(wù)等技術(shù)組件引入示例,并嘗試通過構(gòu)建完整的端到端應(yīng)用將知識(shí)點(diǎn)串起來。此外,本書不僅包含業(yè)務(wù)代碼,還涉及AI應(yīng)用的調(diào)試、監(jiān)控、部署乃至最佳實(shí)踐,力求帶給讀者可工作的上線代碼。
本書非常適合想用AI提升產(chǎn)品競(jìng)爭(zhēng)力的前后端開發(fā)者、需要進(jìn)行快速概念驗(yàn)證的技術(shù)經(jīng)理與創(chuàng)業(yè)者,以及希望將大模型接入現(xiàn)有系統(tǒng)的架構(gòu)師與運(yùn)維工程師閱讀。讀者無須擁有與AI應(yīng)用開發(fā)相關(guān)的經(jīng)驗(yàn),無須掌握Python或者Node.js編程語言,只要具有編程基礎(chǔ)知識(shí)即可暢讀本書。
這是一本面向開發(fā)者的AI應(yīng)用開發(fā)實(shí)戰(zhàn)指南:
- 扎根入門技術(shù)人群:無須讀者提前擁有大模型應(yīng)用的開發(fā)經(jīng)驗(yàn),甚至無須讀者事先掌握Python和JavaScript語言,就可以從零開始學(xué)習(xí)并掌握滿足市場(chǎng)需求的大模型應(yīng)用開發(fā)技能。
- 滿足常見業(yè)務(wù)需求:涵蓋RAG應(yīng)用開發(fā)、工作流制作等常見業(yè)務(wù)場(chǎng)景,注重端到端交付,力求幫助開發(fā)者體驗(yàn)真實(shí)開發(fā)環(huán)境中的約束和挑戰(zhàn)。
- 注重開發(fā)實(shí)戰(zhàn):參考行業(yè)趨勢(shì)與社區(qū)共識(shí)進(jìn)行技術(shù)選型,試圖彌補(bǔ)從開發(fā)環(huán)境到生產(chǎn)環(huán)境的鴻溝,不僅關(guān)注功能實(shí)現(xiàn),而且會(huì)展示如何將其部署上線,對(duì)其進(jìn)行運(yùn)維。
- 擁有技術(shù)廣度:采用不同技術(shù)框架來開發(fā)不同類型的大模型應(yīng)用,力求展現(xiàn)大模型應(yīng)用開發(fā)領(lǐng)域的全貌及各類實(shí)踐,為讀者提供全面的實(shí)踐視角,避免局限于單一技術(shù)棧。
李光毅 曾就職于愛奇藝、百度、知乎等大型互聯(lián)網(wǎng)公司,目前就職于Thoughtworks,
任高級(jí)咨詢師。從事軟件開發(fā)工作超過10年,具備豐富的大型系統(tǒng)架構(gòu)設(shè)計(jì)和團(tuán)隊(duì)管理經(jīng)驗(yàn)。著有《高性能響應(yīng)式Web開發(fā)實(shí)戰(zhàn)》,譯有《編程原則》,F(xiàn)為播客“程序員新聲”主播,其個(gè)人公眾號(hào)為“技術(shù)圓桌”。
目 錄
第 1章 理解模型 1
1.1 如何學(xué)習(xí)“魔法” 1
1.2 Teachable Machine 2
1.2.1 打造自己的模型 3
1.2.2 部署代碼 6
1.3 線性模型 9
1.3.1 機(jī)器學(xué)習(xí)是如何工作的 9
1.3.2 代碼實(shí)現(xiàn) 12
1.4 神經(jīng)網(wǎng)絡(luò)雛形 13
1.4.1 使用代碼實(shí)現(xiàn) 14
1.4.2 為什么需要神經(jīng)“網(wǎng)絡(luò)” 17
第 2章 環(huán)境配置與基礎(chǔ)語法 18
2.1 配置Python環(huán)境 18
2.1.1 安裝Python 18
2.1.2 配置虛擬環(huán)境 21
2.1.3 類庫管理 24
2.2 Python快速入門 25
2.2.1 運(yùn)行Python腳本 25
2.2.2 數(shù)據(jù)類型 25
2.2.3 縮進(jìn) 27
2.2.4 函數(shù)的定義和使用 27
2.2.5 模塊的使用 27
2.2.6 推導(dǎo)式 28
2.2.7 類型注解 28
2.3 配置Node.js環(huán)境 29
2.3.1 在macOS系統(tǒng)和Windows系統(tǒng)中安裝Node.js 29
2.3.2 在Ubuntu系統(tǒng)中安裝Node.js 30
2.4 Node.js快速入門 31
2.4.1 運(yùn)行Node.js腳本 31
2.4.2 動(dòng)態(tài)類型語言 31
2.4.3 package.json文件 32
2.4.4 Node.js模塊系統(tǒng) 32
2.4.5 類庫管理 33
2.4.6 異步編程 34
2.5 其他應(yīng)知內(nèi)容 36
2.5.1 cURL 36
2.5.2 YAML 37
第3章 制作一款音頻轉(zhuǎn)錄工具 40
3.1 區(qū)分OpenAI、ChatGPT與大模型 40
3.2 集成OpenAI SDK 41
3.2.1 創(chuàng)建API密鑰 41
3.2.2 使用API密鑰 43
3.2.3 使用API密鑰的注意事項(xiàng) 45
3.3 初試OpenAI SDK 45
3.3.1 發(fā)送請(qǐng)求 45
3.3.2 返回結(jié)果解析 46
3.3.3 計(jì)算token數(shù)量 49
3.4 通過REST風(fēng)格的API調(diào)用OpenAI API 50
3.5 使用OpenAI SDK轉(zhuǎn)錄音頻 52
3.5.1 讀取音頻文件 52
3.5.2 標(biāo)記轉(zhuǎn)錄文字的時(shí)間戳 54
3.6 安裝自己的Whisper模型 58
3.6.1 在本地安裝Whisper模型 58
3.6.2 以命令行的方式運(yùn)行Whisper 58
3.6.3 在代碼中使用Whisper模型 60
第4章 AI助手開發(fā) 61
4.1 AI助手 61
4.1.1 創(chuàng)建AI助手 61
4.1.2 函數(shù)是如何工作的 64
4.1.3 調(diào)用AI助手 65
4.1.4 通過第三方獲取城市氣溫 69
4.2 打造播客摘要生成助手 71
4.2.1 什么是播客摘要生成助手 71
4.2.2 創(chuàng)建播客摘要生成助手 71
4.2.3 響應(yīng)OpenAI的流式返回 73
4.2.4 使用助手 75
4.3 創(chuàng)建HTTP服務(wù)器 76
4.3.1 引入Express.js 76
4.3.2 實(shí)現(xiàn)文件上傳 78
4.3.3 完善路由 81
4.3.4 提升代碼的健壯性 84
4.4 使用代碼管理AI助手 85
4.4.1 引入GitHub Actions 86
4.4.2 編寫工作流 87
4.4.3 編寫部署腳本 91
4.4.4 看懂工作流 93
4.5 部署上線 94
4.5.1 創(chuàng)建守護(hù)進(jìn)程 95
4.5.2 準(zhǔn)備服務(wù)器 97
4.5.3 通過GitHub Actions部署上線 101
4.5.4 驗(yàn)證服務(wù) 103
第5章 使用Haystack開發(fā)AI應(yīng)用 108
5.1 重新認(rèn)識(shí)框架 108
5.1.1 為什么需要框架 108
5.1.2 何謂好的框架 109
5.1.3 也許你不需要框架 110
5.2 為什么選擇Haystack 112
5.2.1 為什么不推薦LangChain 112
5.2.2 其他框架 115
5.2.3 迎接Haystack 117
5.3 初試Haystack 119
5.3.1 基本概念 119
5.3.2 初試組件與流水線 119
5.3.3 自定義組件 122
5.4 使用Haystack重構(gòu)播客助手 124
5.4.1 使用Haystack進(jìn)行重構(gòu) 125
5.4.2 使用Gemini替代GPT模型 128
5.5 啟用Haystack日志 132
5.6 啟用Haystack追蹤 136
5.6.1 啟用追蹤 136
5.6.2 與OpenTelemetry集成 138
5.6.3 與Langfuse集成 142
第6章 RAG應(yīng)用開發(fā) 148
6.1 初試RAG技術(shù) 148
6.1.1 使用Chroma實(shí)現(xiàn)語義化搜索 149
6.1.2 元數(shù)據(jù)過濾 151
6.1.3 與OpenAI配合 153
6.2 向量數(shù)據(jù)庫原理 154
6.2.1 余弦相似度 154
6.2.2 文本嵌入 156
6.2.3 對(duì)Chroma進(jìn)行嵌入配置 157
6.3 長(zhǎng)文本處理 159
6.3.1 分割數(shù)據(jù) 160
6.3.2 固定大小的分塊策略 160
6.3.3 基于文檔結(jié)構(gòu)的分塊策略 162
6.3.4 遞歸式分塊策略 166
6.4 使用Haystack實(shí)現(xiàn)流水線 168
6.4.1 索引流水線 168
6.4.2 查詢流水線 170
6.4.3 簡(jiǎn)化流水線 172
6.5 拓展流水線 173
6.5.1 索引數(shù)據(jù) 173
6.5.2 優(yōu)化數(shù)據(jù)檢索 179
第7章 接入第三方AI服務(wù) 184
7.1 Hugging Face 184
7.1.1 注冊(cè)Hugging Face 184
7.1.2 調(diào)用Hugging Face推理服務(wù) 187
7.1.3 與Haystack集成 189
7.1.4 Hugging Face的服務(wù)類型 189
7.2 Together AI 190
7.2.1 注冊(cè)Together AI服務(wù) 191
7.2.2 訪問推理服務(wù) 193
7.2.3 函數(shù)調(diào)用 194
7.3 Pinecone 198
7.3.1 注冊(cè)Pinecone 199
7.3.2 使用Pinecone 200
7.4 Cohere 207
7.4.1 注冊(cè)Cohere 208
7.4.2 調(diào)用Cohere推理服務(wù) 209
7.4.3 在Haystack中使用Cohere模型 212
7.5 Railway 214
7.5.1 需要解決的問題 214
7.5.2 使用Railway部署我們的服務(wù) 215
7.6 博客存儲(chǔ)流水線 220
7.6.1 下載文章 220
7.6.2 組裝流水線 223
7.6.3 部署服務(wù) 225
第8章 微調(diào)模型 228
8.1 在OpenAI中進(jìn)行微調(diào) 228
8.1.1 準(zhǔn)備訓(xùn)練數(shù)據(jù) 228
8.1.2 通過界面進(jìn)行微調(diào) 229
8.2 使用Google AI進(jìn)行微調(diào) 234
8.2.1 使用Vertex AI Studio進(jìn)行微調(diào) 234
8.2.2 通過API進(jìn)行微調(diào) 240
第9章 智能體開發(fā)入門 244
9.1 OpenAI智能體 244
9.1.1 第 一個(gè)簡(jiǎn)單的智能體 244
9.1.2 任務(wù)轉(zhuǎn)移 245
9.1.3 調(diào)用工具 246
9.1.4 借用智能體對(duì)播客摘要生成助手進(jìn)行重構(gòu) 249
9.2 自定義智能體處理流程 251
9.3 利用Cohere的Command模型開發(fā)智能體 255
9.3.1 準(zhǔn)備工作 255
9.3.2 編寫智能體 258
9.4 護(hù)欄 262
9.4.1 輸入護(hù)欄 262
9.4.2 輸出護(hù)欄 264
9.4.3 第三方護(hù)欄 265
9.5 模型上下文協(xié)議 268
9.5.1 MCP架構(gòu) 268
9.5.2 MCP工具 269
9.5.3 使用已有的MCP服務(wù)器 272
第 10章 使用LangGraph構(gòu)建智能體 276
10.1 一個(gè)簡(jiǎn)單的LangGraph應(yīng)用 276
10.1.1 創(chuàng)建圖對(duì)象 277
10.1.2 添加節(jié)點(diǎn) 278
10.1.3 stream_mode 279
10.2 在LangGraph中使用工具 280
10.2.1 簡(jiǎn)單的工具調(diào)用 280
10.2.2 復(fù)雜的工具調(diào)用 283
10.3 子圖機(jī)制 285
10.3.1 簡(jiǎn)單子圖 285
10.3.2 參數(shù)不兼容的情況 288
10.3.3 使用LangSmith對(duì)數(shù)據(jù)流進(jìn)行 追蹤 289
10.4 任務(wù)轉(zhuǎn)移 291
10.4.1 智能體間的任務(wù)轉(zhuǎn)移 291
10.4.2 監(jiān)督者模式 294
10.5 一個(gè)復(fù)雜的圖 296
10.5.1 在向量數(shù)據(jù)庫中搜索 298
10.5.2 在網(wǎng)絡(luò)上搜索 300
10.5.3 連接圖 303
10.6 添加前端界面 305
10.6.1 LangGraph服務(wù) 305
10.6.2 前端 308
10.7 實(shí)現(xiàn)人機(jī)交互 312
10.7.1 簡(jiǎn)單的人機(jī)交互 312
10.7.2 借助CopilotKit實(shí)現(xiàn)人機(jī) 交互 314