《大模型应用开发 动手做AI Agent》
第 1章 何谓Agent,为何Agent 001
1.1 大开脑洞的演讲:Life 3.0 001
1.2 那么,究竟何谓Agent 003
1.3 Agent的大脑:大模型的通用推理能力 006
1.3.1 人类的大脑了不起 006
1.3.2 大模型出现之前的Agent 007
1.3.3 大模型就是Agent的大脑 008
1.3.4 期望顶峰和失望低谷 010
1.3.5 知识、记忆、理解、表达、推理、反思、泛化和自我提升 012
1.3.6 基于大模型的推理能力构筑AI应用 015
1.4 Agent的感知力:语言交互能力和多模态能力 016
1.4.1 语言交互能力 016
1.4.2 多模态能力 016
1.4.3 结合语言交互能力和多模态能力 017
1.5 Agent的行动力:语言输出能力和工具使用能力 017
1.5.1 语言输出能力 017
1.5.2 工具使用能力 018
1.5.3 具身智能的实现 019
1.6 Agent对各行业的效能提升 019
1.6.1 自动办公好助手 020
1.6.2 客户服务革命 020
1.6.3 个性化推荐 020
1.6.4 流程的自动化与资源的优化 021
1.6.5 医疗保健的变革 021
1.7 Agent带来新的商业模式和变革 022
1.7.1 Gartner的8项重要预测 023
1.7.2 Agent即服务 024
1.7.3 多Agent协作 025
1.7.4 自我演进的AI 026
1.7.5 具身智能的发展 026
1.8 小结 027
第 2章 基于大模型的Agent技术框架 029
2.1 Agent的四大要素 029
2.2 Agent的规划和决策能力 031
2.3 Agent的各种记忆机制 032
2.4 Agent的核心技能:调用工具 033
2.5 Agent的推理引擎:ReAct框架 035
2.5.1 何谓ReAct 035
2.5.2 用ReAct框架实现简单Agent 038
2.5.3 基于ReAct框架的提示 040
2.5.4 创建大模型实例 043
2.5.5 定义搜索工具 044
2.5.6 构建ReAct Agent 044
2.5.7 执行ReAct Agent 045
2.6 其他Agent认知框架 047
2.6.1 函数调用 047
2.6.2 计划与执行 048
2.6.3 自问自答 048
2.6.4 批判修正 048
2.6.5 思维链 048
2.6.6 思维树 048
2.7 小结 049
第3章 OpenAI API、LangChain和LlamaIndex 051
3.1 何谓OpenAI API 052
3.1.1 说说OpenAI这家公司 052
3.1.2 OpenAI API和Agent开发 055
3.1.3 OpenAI API的聊天程序示例 057
3.1.4 OpenAI API的图片生成示例 063
3.1.5 OpenAI API实践 065
3.2 何谓LangChain 067
3.2.1 说说LangChain 068
3.2.2 LangChain中的六大模块 073
3.2.3 LangChain和Agent开发 074
3.2.4 LangSmith的使用方法 075
3.3 何谓LlamaIndex 077
3.3.1 说说LlamaIndex 077
3.3.2 LlamaIndex和基于RAG的AI开发 078
3.3.3 简单的LlamaIndex开发示例 081
3.4 小结 084
第4章 Agent 1:自动化办公的实现——通过Assistants API和DALL·E 3模型创作PPT 085
4.1 OpenAI公司的Assistants是什么 086
4.2 不写代码,在Playground中玩Assistants 086
4.3 Assistants API的简单示例 090
4.3.1 创建助手 091
4.3.2 创建线程 095
4.3.3 添加消息 097
4.3.4 运行助手 099
4.3.5 显示响应 103
4.4 创建一个简短的虚构PPT 105
4.4.1 数据的收集与整理 106
4.4.2 创建OpenAI助手 106
4.4.3 自主创建数据分析图表 108
4.4.4 自主创建数据洞察 112
4.4.5 自主创建页面标题 114
4.4.6 用DALL·E 3模型为PPT首页配图 115
4.4.7 自主创建PPT 116
4.5 小结 121
第5章 Agent 2:多功能选择的引擎——通过Function Calling调用函数 122
5.1 OpenAI中的Functions 122
5.1.1 什么是Functions 123
5.1.2 Function的说明文字很重要 124
5.1.3 Function定义中的Sample是什么 124
5.1.4 什么是Function Calling 126
5.2 在Playground中定义Function 127
5.3 通过Assistants API实现Function Calling 130
5.3.1 创建能使用Function的助手 131
5.3.2 不调用Function,直接运行助手 133
5.3.3 在Run进入requires_action状态之后跳出循环 140
5.3.4 拿到助手返回的元数据信息 141
5.3.5 通过助手的返回信息调用函数 141
5.3.6 通过submit_tool_outputs提交结果以完成任务 143
5.4 通过ChatCompletion API来实现Tool Calls 147
5.4.1 初始化对话和定义可用函数 148
5.4.2 第 一次调用大模型,向模型发送对话及工具定义,并获取响应 149
5.4.3 调用模型选择的工具并构建新消息 151
5.4.4 第二次向大模型发送对话以获取最终响应 153
5.5 小结 154
第6章 Agent 3:推理与行动的协同——通过LangChain中的ReAct框架实现自动定价 156
6.1 复习ReAct框架 156
6.2 LangChain中ReAct Agent 的实现 159
6.3 LangChain中的工具和工具包 160
6.4 通过create_react_agent创建鲜花定价Agent 162
6.5 深挖AgentExecutor的运行机制 166
6.5.1 在AgentExecutor中设置断点 166
6.5.2 第 一轮思考:模型决定搜索 169
6.5.3 第 一轮行动:工具执行搜索 175
6.5.4 第二轮思考:模型决定计算 179
6.5.5 第二轮行动:工具执行计算 180
6.5.6 第三轮思考:模型完成任务 182
6.6 小结 185
第7章 Agent 4:计划和执行的解耦——通过LangChain中的Plan-and-Execute实现智能调度库存 186
7.1 Plan-and-Solve策略的提出 186
7.2 LangChain中的Plan-and-Execute Agent 190
7.3 通过Plan-and-Execute Agent实现物流管理 192
7.3.1 为Agent定义一系列进行自动库存调度的工具 192
7.3.2 创建Plan-and-Execute Agent并尝试一个“不可能完成的任务” 193
7.3.3 完善请求,让Agent完成任务 200
7.4 从单Agent到多Agent 203
7.5 小结 204
第8章 Agent 5:知识的提取与整合——通过LlamaIndex实现检索增强生成 205
8.1 何谓检索增强生成 206
8.1.1 提示工程、RAG与微调 206
8.1.2 从技术角度看检索部分的Pipeline 208
8.1.3 从用户角度看RAG流程 209
8.2 RAG和Agent 210
8.3 通过LlamaIndex的ReAct RAG Agent实现花语秘境财报检索 211
8.3.1 获取并加载电商的财报文件 211
8.3.2 将财报文件的数据转换为向量数据 211
8.3.3 构建查询引擎和工具 213
8.3.4 配置文本生成引擎大模型 214
8.3.5 创建 Agent以查询财务信息 214
8.4 小结 215
第9章 Agent 6:GitHub的网红聚落——AutoGPT、BabyAGI和CAMEL 216
9.1 AutoGPT 217
9.1.1 AutoGPT简介 217
9.1.2 AutoGPT实战 218
9.2 BabyAGI 222
9.2.1 BabyAGI简介 222
9.2.2 BabyAGI实战 224
9.3 CAMEL 236
9.3.1 CAMEL简介 236
9.3.2 CAMEL论文中的股票交易场景 237
9.3.3 CAMEL实战 241
9.4 小结 248
第 10章 Agent 7:多Agent框架——AutoGen和MetaGPT 250
10.1 AutoGen 250
10.1.1 AutoGen简介 250
10.1.2 AutoGen实战 253
10.2 MetaGPT 256
10.2.1 MetaGPT简介 256
10.2.2 MetaGPT实战 257
10.3 小结 263
附录A 下一代Agent的诞生地:科研论文中的新思路 264
A.1 两篇高质量的Agent综述论文 264
A.2 论文选读:Agent自主学习、多Agent合作、Agent可信度的评估、边缘系统部署以及具身智能落地 266
A.3 小结 267
参考文献 269
后记 创新与变革的交汇点 271
《GPT图解 大模型是怎样构建的》
目 录
序章 看似寻常最奇崛,成如容易却艰辛 001
GPT-4:点亮人工通用智能的火花 002
人工智能演进之路:神经网络两落三起 004
现代自然语言处理:从规则到统计 007
何为语言?信息又如何传播? 008
NLP是人类和计算机沟通的桥梁 009
NLP技术的演进史 010
大规模预训练语言模型:BERT与GPT争锋 012
语言模型的诞生和进化 012
统计语言模型的发展历程 014
基于Transformer架构的预训练模型 016
“预训练+微调大模型”的模式 018
以提示/指令模式直接使用大模型 019
从初代GPT到ChatGPT,再到GPT-4 021
GPT作为生成式模型的天然优势 022
ChatGPT背后的推手——OpenAI 023
从初代GPT到ChatGPT,再到GPT-4的进化史 024
第 1课 高楼万丈平地起:语言模型的雏形N-Gram和简单文本表示Bag-of-Words 026
1.1 N-Gram模型 026
1.2 “词”是什么,如何“分词” 030
1.3 创建一个Bigram字符预测模型 032
1.4 词袋模型 036
1.5 用词袋模型计算文本相似度 037
小结 042
思考 043
第 2课 问君文本何所似: 词的向量表示Word2Vec和Embedding 044
2.1 词向量 ≈ 词嵌入 045
2.2 Word2Vec:CBOW模型和Skip-Gram模型 047
2.3 Skip-Gram模型的代码实现 050
2.4 CBOW模型的代码实现 061
2.5 通过nn.Embedding来实现词嵌入 063
小结 067
思考 068
第3课 山重水复疑无路:神经概率语言模型和循环神经网络 069
3.1 NPLM的起源 070
3.2 NPLM的实现 072
3.3 循环神经网络的结构 079
3.4 循环神经网络实战 082
小结 086
思考 087
第4课 柳暗花明又一村:Seq2Seq编码器-解码器架构 088
4.1 Seq2Seq架构 089
4.2 构建简单Seq2Seq架构 092
小结 103
思考 103
第5课 见微知著开慧眼:引入注意力机制 104
5.1 点积注意力 105
5.2 缩放点积注意力 114
5.3 编码器-解码器注意力 116
5.4 注意力机制中的Q、K、V 122
5.5 自注意力 125
5.6 多头自注意力 126
5.7 注意力掩码 129
5.8 其他类型的注意力 131
小结 132
思考 132
第6课 层峦叠翠上青天:搭建GPT核心组件Transformer 133
6.1 Transformer架构剖析 133
6.1.1 编码器-解码器架构 135
6.1.2 各种注意力的应用 135
6.1.3 编码器的输入和位置编码 140
6.1.4 编码器的内部结构 141
6.1.5 编码器的输出和编码器-解码器的连接 142
6.1.6 解码器的输入和位置编码 143
6.1.7 解码器的内部结构 145
6.1.8 解码器的输出和Transformer的输出头 146
6.2 Transformer代码实现 148
6.3 完成翻译任务 176
6.3.1 数据准备 177
6.3.2 训练Transformer模型 179
6.3.3 测试Transformer模型 179
小结 181
思考 182
第7课 芳林新叶催陈叶:训练出你的简版生成式GPT 183
7.1 BERT与GPT争锋 184
7.2 GPT:生成式自回归模型 188
7.3 构建GPT模型并完成文本生成任务 191
7.3.1 搭建GPT模型(解码器) 192
7.3.2 构建文本生成任务的数据集 195
7.3.3 训练过程中的自回归 198
7.3.4 文本生成中的自回归(贪婪搜索) 200
7.4 使用WikiText2数据集训练Wiki-GPT模型 201
7.4.1 用WikiText2构建Dataset和DataLoader 202
7.4.2 用DataLoader提供的数据进行训练 206
7.4.3 用Evaluation Dataset评估训练过程 207
7.4.4 文本生成中的自回归(集束搜索) 209
小结 212
思考 213
第8课 流水后波推前波:ChatGPT基于人类反馈的强化学习 214
8.1 从GPT到ChatGPT 215
8.2 在Wiki-GPT基础上训练自己的简版ChatGPT 218
8.3 用Hugging Face预训练GPT微调ChatGPT 225
8.4 ChatGPT的RLHF实战 233
8.4.1 强化学习基础知识 235
8.4.2 简单RLHF实战 237
小结 243
思考 244
第9课 生生不息的循环:使用强大的GPT-4 API 245
9.1 强大的OpenAI API 245
9.2 使用GPT-4 API 249
小结 251
思考 252
后 记 莫等闲,白了少年头 253