内容简介
本书旨在用传统前后端开发过程中开发者熟悉的词汇与术语对AI应用开发的专业知识进行深入浅出的讲解,使开发者能够从0到1入门AI应用开发。本书不拘泥于讲解单一编程语言、单一模型和单一框架,而是尽可能完整地展现不同技术方案的优劣、技术选型时的考量和技术生态的全貌。书中涵盖当下多种热门类型AI应用的开发,从OpenAI API调用到RAG开发,从MCP服务器创建到智能体开发。本书的内容编排循序渐进,前半部分聚焦“入门”,通过控制代码复杂度及详细的基础知识讲解,帮助读者快速熟悉AI应用开发中的概念与常见模式;后半部分聚焦“进阶”,将向量数据库、第三方云服务等技术组件引入示例,并尝试通过构建完整的端到端应用将知识点串起来。此外,本书不仅包含业务代码,还涉及AI应用的调试、监控、部署乃至最佳实践,力求带给读者可工作的上线代码。
本书非常适合想用AI提升产品竞争力的前后端开发者、需要进行快速概念验证的技术经理与创业者,以及希望将大模型接入现有系统的架构师与运维工程师阅读。读者无须拥有与AI应用开发相关的经验,无须掌握Python或者Node.js编程语言,只要具有编程基础知识即可畅读本书。
精彩书评
软件开发的范式正经历深刻变革,我们也正从钻研单一技术的“工匠”加速转变为善用工具、整合服务的“架构师”。这本书正是对这场变革的忠实记录与深刻洞见。我见证了本书作者从云开发到AI时代软件开发的探索与沉淀,他将自己走过的弯路与宝贵经验,通过精准且带有温度的文字真诚地呈现给每位处于角色转变中的开发者。这是一本帮助开发者理解当下、拥抱未来的指南。
——张凯峰,微软大中华区市场部数字营销与内容专家
这本书巧妙地将AI应用开发与传统前后端开发概念相融合,极大地降低了学习门槛。它涵盖了OpenAI API调用、RAG开发、MCP服务器创建,以及智能体开发等当下热门类型AI应用的开发,尤其注重开发实战。书中提供了丰富的代码,深入探讨了应用的调试、监控、部署及健壮性等工程实践,还通过Python和Node.js示例对比不同技术方案的优劣,帮助读者全面理解AI生态。对追求高效能的团队来说,这是一本从0到1开发生产级AI应用的宝贵指南。
——姚琪琳,Thoughtworks资深咨询师、敏捷技术教练、《整理优先》等书译者
在技术探索的旅程中,深入理解往往比单纯掌握更令人心潮澎湃。身处AI技术发展的洪流之中,与其忧虑被AI取代,不如将其作为一种技术来学习、理解并运用。如果你是一位开发者,面对浩如烟海的资料踌躇不前,不妨从本书开始动手实践。它不仅能让你鸟瞰AI世界,更能引导你从最熟悉的应用开发入手,体会AI如何成为自己的得力助手。相信通过阅读和实践,你不仅能重拾初涉技术领域时的那份悸动与热忱,更能在AI时代站稳脚跟,放眼未来。
——刘夏,C#技术专家、《C# 10核心技术指南》译者
传统应用开发者如何在这个AI崛起的时代自处?我们常常会迷失在实现细节、技术框架或眼花缭乱的推荐示例中。这本书以“拆解魔法”为核心理念,汇集数个完整的实战案例,从Whisper模型部署到智能体开发,带领读者“不只写示例,更写产品”,让AI对于传统开发者不再是“魔法”,而是成为日常工具。这不仅是一部技术手册,更是打通AI落地最后一公里的工程技术指南,让AI零基础开发者也能端到端交付产品级AI应用。
——王瑞鹏,《C++高性能编程》《Effective TypeScript》译者
目录
目 录
第 1章 理解模型 1
1.1 如何学习“魔法” 1
1.2 Teachable Machine 2
1.2.1 打造自己的模型 3
1.2.2 部署代码 6
1.3 线性模型 9
1.3.1 机器学习是如何工作的 9
1.3.2 代码实现 12
1.4 神经网络雏形 13
1.4.1 使用代码实现 14
1.4.2 为什么需要神经“网络” 17
第 2章 环境配置与基础语法 18
2.1 配置Python环境 18
2.1.1 安装Python 18
2.1.2 配置虚拟环境 21
2.1.3 类库管理 24
2.2 Python快速入门 25
2.2.1 运行Python脚本 25
2.2.2 数据类型 25
2.2.3 缩进 27
2.2.4 函数的定义和使用 27
2.2.5 模块的使用 27
2.2.6 推导式 28
2.2.7 类型注解 28
2.3 配置Node.js环境 29
2.3.1 在macOS系统和Windows系统中安装Node.js 29
2.3.2 在Ubuntu系统中安装Node.js 30
2.4 Node.js快速入门 31
2.4.1 运行Node.js脚本 31
2.4.2 动态类型语言 31
2.4.3 package.json文件 32
2.4.4 Node.js模块系统 32
2.4.5 类库管理 33
2.4.6 异步编程 34
2.5 其他应知内容 36
2.5.1 cURL 36
2.5.2 YAML 37
第3章 制作一款音频转录工具 40
3.1 区分OpenAI、ChatGPT与大模型 40
3.2 集成OpenAI SDK 41
3.2.1 创建API密钥 41
3.2.2 使用API密钥 43
3.2.3 使用API密钥的注意事项 45
3.3 初试OpenAI SDK 45
3.3.1 发送请求 45
3.3.2 返回结果解析 46
3.3.3 计算token数量 49
3.4 通过REST风格的API调用OpenAI API 50
3.5 使用OpenAI SDK转录音频 52
3.5.1 读取音频文件 52
3.5.2 标记转录文字的时间戳 54
3.6 安装自己的Whisper模型 58
3.6.1 在本地安装Whisper模型 58
3.6.2 以命令行的方式运行Whisper 58
3.6.3 在代码中使用Whisper模型 60
第4章 AI助手开发 61
4.1 AI助手 61
4.1.1 创建AI助手 61
4.1.2 函数是如何工作的 64
4.1.3 调用AI助手 65
4.1.4 通过第三方获取城市气温 69
4.2 打造播客摘要生成助手 71
4.2.1 什么是播客摘要生成助手 71
4.2.2 创建播客摘要生成助手 71
4.2.3 响应OpenAI的流式返回 73
4.2.4 使用助手 75
4.3 创建HTTP服务器 76
4.3.1 引入Express.js 76
4.3.2 实现文件上传 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 创建守护进程 95
4.5.2 准备服务器 97
4.5.3 通过GitHub Actions部署上线 101
4.5.4 验证服务 103
第5章 使用Haystack开发AI应用 108
5.1 重新认识框架 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重构播客助手 124
5.4.1 使用Haystack进行重构 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应用开发 148
6.1 初试RAG技术 148
6.1.1 使用Chroma实现语义化搜索 149
6.1.2 元数据过滤 151
6.1.3 与OpenAI配合 153
6.2 向量数据库原理 154
6.2.1 余弦相似度 154
6.2.2 文本嵌入 156
6.2.3 对Chroma进行嵌入配置 157
6.3 长文本处理 159
6.3.1 分割数据 160
6.3.2 固定大小的分块策略 160
6.3.3 基于文档结构的分块策略 162
6.3.4 递归式分块策略 166
6.4 使用Haystack实现流水线 168
6.4.1 索引流水线 168
6.4.2 查询流水线 170
6.4.3 简化流水线 172
6.5 拓展流水线 173
6.5.1




















