这是一本面向初中级读者的Agent学习指南,作者既是资深的AI技术专家,又是经验丰富的项目导师,融合作者亲身实践、培训反馈与官方资源,为Agent使用者和开发者提供了快速上手的实用指导。
本书从基础知识、操作和应用开发3个维度循序渐进地讲解Agent实战技巧,分为三篇:
?基础篇(1~2章) 介绍Agent定义、发展历程、常用开源技术、主要组件等基础知识和开发环境的搭建过程。
?应用篇(3~6章) 从通用型、任务驱动型、辅助开发型和检索增强型 4大类,通过AutoGPT、MemGPT、BabyAGI、Camel、Devika、CodeFuse-ChatBot、DB-GPT、QAnything这8种具体类型,详细描述Agent的安装、配置和使用等操作步骤。
?开发篇(7~16章) 展开分析10个不同场景的Agent应用开发实例。一方面,以AgentScope、LangChain、LangGraph、AutoGen、LlamaIndex、CrewAI、Qwen-Agent这7种被广泛应用的开源Agent开发框架为基础,针对每个框架各讲解一个开发案例。另一方面,通过案例介绍Agent开发过程中关键的Function-calling特性及大语言模型开发技术。此外,对基于CogVLM2的多模态模型应用开发,也提供详细的案例演示。
(1)实力派作者,洞察读者实际需求:作者既是资深AI技术专家,也是经验丰富的项目导师,深谙行业动态和读者需求。本书融合了作者的实践经验、培训反馈与官方资源,提供了一套快速上手、实用高效的指导方案。
(2)翔实内容,降低开发门槛:本书采用开源框架,降低选型成本。书中深入剖析AI Agent的核心原理及15种主流框架,并通过10个不同领域的实例详细讲解实战技巧,操作步骤细致、源代码完整,助力读者迅速掌握关键技术。
(3)贴近实际,满足职场与创业需求:这是一本面向初中级读者的Agent学习指南,覆盖职场应用与创业项目的实际场景,帮助Agent使用者和开发者实现定制化开发,切实满足多样化的行业需求。
前 言
AI Agent(或简称为Agent)是建立在大语言模型之上的智能应用,是将人工智能与特定场景深度结合的重要方式。Agent模仿人类“思考–行动–观察”的规划模式,具备自主思考和自主决策的能力,能够适应环境的变化,自主学习和改进,完成用户设定的目标。与大语言模型的对话应用不同,Agent的突出特点是主动性,在行为上表现为多步操作、多角色会话、多轮迭代、反复修正答案以及调用外部资源的能力。
20世纪80年代,对于AI Agent是否能够真正产生自主性的、生物意义上的“智能”这一问题已在哲学层面展开讨论。20年前,深度学习的发展促进了Agent的进化。近几年来,在大语言模型的支持下,Agent越来越具备主动性,“思考”问题的方法也在参考人类特征的基础上,形成一套包含规划、记忆、工具和行动的功能规范。在Agent与大语言模型技术结合方面,ReAct、ToT、Reflexion、CoT等思考框架的研究成果不断,相关论文以及与之配套的开源代码诠释了理论如何变为现实。看似眼花缭乱实则科学严谨的提示词工程,在与大语言模型的交互中,使得Agent像施展魔法般地实现了人类预定的目标。展望未来,基于Agent,人们对通用人工智能(Artificial General Intelligence, AGI)充满了想象空间。
Agent的发展离不开大语言模型的支持,而大语言模型则通过Agent扩展其功能。随着GPT-4、GLM-4、Llama3、Qwen2等模型的发布,依托这些模型的应用技术也取得了显著的进步,GPT-4率先推出了Function-calling功能,其他模型也迅速跟进。这一创新反映了大语言模型将超越单纯的内容生成,向更智能、更主动、更有规划性的AGI方向发展。AutoGPT、BabyAGI等Agent应用的推出,使代表着主动思考、主动决策、主动执行的AGI技术取得了长足的进步。同时,LangChain、AutoGen等Agent开发框架的问世与流行,使这个领域的应用开发变得更加便捷,多角色、多模态的Agent应用纷纷涌现。
目前,Agent正处于快速发展过程中,已在长记忆会话、任务处理、检索增强、辅助编程等领域产生了许多产品和应用案例。本书详细介绍了8种开源的主流Agent应用以及7种Agent开发框架,从基础、应用、开发三个层面对Agent知识进行了循序渐进的讲解。考虑到实际应用场景,本书还涵盖了支撑Agent应用的大型语言模型的安装、服务开发以及微调技术,从而使Agent的知识体系更加完整。
本书特点
本书具有以下特点:
基于开源技术:本书中涉及的所有Agent技术都是开源项目,所使用的大模型也皆为开源模型且可在本地部署,而非依赖OpenAI等云服务。案例代码中不依赖额外的API,均可在本地部署的模型支持下进行调试和运行。此外,本书所有案例代码已在GitHub上开源。
技术广泛:本书涵盖了8种Agent应用(应用篇)和7种Agent开发框架(开发篇),共涉及15种开源Agent技术。Agent正在快速发展,覆盖的技术越多,读者学习或深入研究的选择越多。
国内外并重:本书使用的技术中,国产Agent、国产大模型技术占有一定的比例,如QAnything、AgentScope、CodeFuse-ChatBot、Qwen-Agent、GLM-4、CogVLM2等。对于读者来说,阅读本书后,如果想了解相关技术细节,那么国产项目的中文文档更易于深入学习。
详解大模型技术:大语言模型是Agent的运行基础,本书专门对大模型的开发技术进行了详细讲解,内容包括大语言模型的应用、服务开发与微调。通过学习,读者能够深入了解Agent背后的内容生成原理。
案例涉及的领域广泛:本书提供了10个不同场景的Agent应用开发案例,案例涉及的领域广泛,且贴近读者的学习与生活,如任务驱动、多角色协同、辅助编程、RAG、图像、多模态等,实用性强。
内容来源
本书的内容源于笔者的研究与实践。在写作过程中,我精心挑选了各类Agent技术,涵盖多个领域和场景,力求在知识的广度和深度上都有所考量,希望为读者提供多元化的参考。具体来说,本书的写作素材来源主要包括以下几个方面:
实践案例:在本书撰写过程中,我实践了大量Agent应用,并开发了一系列多领域的示例程序。
官方资源:本书整合了来自各种Agent应用和开发框架的官网资料,确保得到官方的前沿信息。
培训课件:在过去两年中,我作为培训讲师,为教师、学生以及软件企业举办了多场大语言模型培训,其中,Agent实操课程也是一个重要的培训主题,因此获得了大量学员反馈,从而优化了本书内容。
读者对象
本书涉及的Agent技术丰富、操作步骤详细、源代码完整,适合Agent使用者和开发者上手实践。
对于使用者来说,8种典型的Agent开源应用,能够满足他们在部署与使用方面的需求。
对于开发者来说,10个不同场景的Agent应用开发案例以及多种大语言模型服务,能够满足他们学习、实践的需求。
如何阅读本书
这是一本讲解Agent基础知识、开发与应用方法的实战指南,共分为三篇:
基础篇:包括第1和2章,介绍了Agent定义、发展历程、常用开源技术、主要组件等基础知识和开发环境的搭建过程。
应用篇:包括第3~6章,从通用型、任务驱动型、辅助开发型和检索增强型的分类角度,介绍了AutoGPT、MemGPT、BabyAGI、Camel、Devika、CodeFuse-ChatBot、DB-GPT、QAnything这8种流行度高、社区完善、正在快速发展的开源Agent应用,描述其运行原理、安装方法和使用过程。
开发篇:包括第7~16章,完成10个不同场景的Agent应用开发实战。一方面,以AgentScope、LangChain、LangGraph、AutoGen、LlamaIndex、CrewAI、Qwen-Agent这7种目前被广泛应用的开源Agent开发框架为基础,针对每个框架各讲解一个开发案例。另一方面,通过案例介绍了Agent开发过程中关键的Function-calling特性及大语言模型开发技术。此外,对基于CogVLM2的多模态模型应用开发,也提供了案例演示。
实践要求及说明
在本书的大部分示例中,Agent需要大语言模型具备Function-calling特性或对推理能力要求较高,所以基本上选用了8B、9B等参数规模的模型,运行这些模型所需的GPU内存在20GB左右。书中还涉及一些大模型的微调技术和多模态模型的应用开发,所以至少需要1张24GB内存的推理卡或显卡。虽然部分示例在Ollama的量化环境下只需要6GB内存即可正常运行,但为了完整实践所有示例,建议采用24GB或以上内存的推理卡或显卡,以及与之配套的服务器或高端个人计算机。
以下是关于阅读与实践本书内容的注意事项。
①操作系统。Agent应用服务本身可以运行在Windows和Linux下。Agent需要大语言模型的支持,在本书所介绍的装载大语言模型的三种方法中,只有Ollama支持Windows操作系统,其余两种由于依赖vLLM而不能在Windows上运行。综合以上情况,建议读者在Ubuntu 22.04操作系统中实践本书内容。书中涉及的文件下载、文件编辑、文件复制等操作系统命令均使用了Linux的方式描述,如果读者使用Windows,则要根据情况采用对应的操作方法。
②命令换行。在操作系统命令行下执行命令时,Linux系统支持对较长的命令采用“\”进行换行,命令执行结果不会发生变化,而在Windows系统中要将“\”换成“^”。
例如,以下命令在Linux系统中运行正常:
pip install -r requirements.txt -i \
https://pypi.mirrors.ustc.edu.cn/simple
该命令如果要在Windows系统中正常运行,则需要把首行行尾的“\”替换成“^”,格式如下:
pip install -r requirements.txt -i ^
https://pypi.mirrors.ustc.edu.cn/simple
③命令注释。本书中描述的在操作系统命令行下执行的命令,如果以“#”开头则为注释,无须执行。为了避免读者将多条命令误以为是一条连续的命令一起执行而发生错误,我一般会在每条命令的前一行加注释。
④示例代码。得益于Python语言的精练以及各种Agent开发框架的封装,本书的示例代码大多在100行左右,开发篇中列出的基本上都是完整源代码。但书中为了详细地解释程序原理,特意对代码进行了分段叙述,这会因缩进难以观察而影响代码的整体性和可读性,建议读者调试程序时,从本书的配套代码库中下载所用的代码。
⑤主机名称。为了统一和规范书中程序的配置与访问方式,减少可能的歧义,本书采用以下约定:如果是本机地址,则使用127.0.0.1表示;如果涉及GPU服务器,则使用主机名“server-dev”指代。主机名对应的IP地址可以通过配置DNS解析来确定,在Windows系统中修改C:\Windows\System32\drivers\etc\HOSTS文件,在Linux系统中修改/etc/hosts文件。
勘误和支持
本书的所有源代码和简要操作步骤,已在https://github.com/little51/agent-dev上开源,读者可自行查阅。
虽然我在写作时已尽力谨慎,反复测试验证,但本书中仍可能出现一些疏漏或者不准确之处,恳请读者指正。若读者有勘误或意见,可通过邮件little51@126.com反馈,或者在https://github.com/little51/agent-dev代码库上提交issue。
致谢
2023年以后,我一直从事大语言模型应用开发与培训工作。2024年初,我结合工作中积累的经验,对培训课件进行整理,形成一些关于大模型应用开发的原始写作素材,并获得与机械工业出版社合作的机会,开始撰写《大模型项目实战:多领域智能应用开发》一书。2024年7月,在该书的写作接近尾声时,为期半个月的人工智能培训也在按计划进行,我将AI Agent的一些内容加到课程中,得到了广大学员的积极反馈和同事的建议,这激励我撰写一本关于Agent的图书,于是我一边开发多个领域的Agent示例程序,一边进行文本书写。经过近三个月不停歇的工作,这本新书即将问世。
在这一过程中,我要感谢以下朋友:
我要感谢我所在公司的集团领导梁明道先生,在我的印象中,十年前他就开始反复给我描绘“智体”的前景,这对我在Agent方面的研究大有裨益。在他的理论中,这种具有主动性、自我决策和自动执行的实体,一定会成为AGI的发展方向。甚至在十年前,他就注册了aiit.com这样的四字域名,用于以后的智体产品研发与推广。
感谢我的同事董炜,他一如既往、一丝不苟地安排培训工作,使我在培训过程中将所有精力都用到了课件的准备和与学员的交流上。学员的学习反馈和他们对课程的建议,对本书中的Agent技术选型起到关键作用。
感谢我的同事杨乐,他很早就开始研究Agent开发,得知我打算写一本该领域的图书时,他给了我很多建议,并协助我采购了双推理卡设备。具备一定算力的机器,是Agent开发中最重要的基础设施支持。
本书中涉及的Agent应用与开发框架以及各种大语言模型,都是开源项目,而且很大一部分使用的是极其宽松的MIT授权方式。作为开源社区的负责人和开源的受益者,本书的示例源码也全部开源。感谢开源!
高强文
高强文
资深AI技术专家与项目导师。作为数字技术正高级工程师,专注于人工智能大语言模型应用开发、开源社区开发与运营。
AI领域创业先锋,宁夏回族自治区劳动模范。现任互链高科(北京)技术发展有限公司总经理,银川方达电子系统工程有限公司董事长。20多年来,一直从事信息化、人工智能等产品研发与管理工作。
近年来积极投身于开源事业,开发运营aliendao.cn、gitclone.com和opendao.cn等开源社区,在GitHub上贡献了20多个开源代码库。著有《大模型项目实战:多领域智能应用开发》,旨在为开发者提供AI技术实践指导。
目 录
前言
基础篇
第1章 Agent基础知识 2
1.1 Agent的概念 2
1.2 Agent的发展历程 3
1.2.1 Agent起源 3
1.2.2 将Agent引入AI领域 4
1.2.3 Agent技术进化与理论完善 5
1.2.4 Agent的深度学习应用 5
1.2.5 基于LLM的Agent 6
1.3 常用的Agent开源技术及分类 6
1.4 Agent主要组件 10
1.4.1 大语言模型 11
1.4.2 规划组件 12
1.4.3 记忆组件 15
1.4.4 工具组件 15
1.4.5 行动组件 16
第2章 Agent应用与开发环境搭建 17
2.1 Agent应用部署结构 17
2.1.1 服务同机部署模式 18
2.1.2 服务分布式部署模式 19
2.2 Agent应用环境安装与验证 19
2.2.1 推理卡驱动安装 20
2.2.2 CUDA安装 23
2.2.3 Anaconda安装 25
2.2.4 Git安装 26
2.2.5 应用环境验证 26
2.2.6 关于开发工具的建议 27
2.3 大语言模型的装载及API服务搭建 27
2.3.1 Ollama 27
2.3.2 vLLM 30
2.3.3 GLM-4专用服务 32
应用篇
第3章 通用型Agent应用 37
3.1 AutoGPT:个人助理 37
3.1.1 AutoGPT介绍 37
3.1.2 AutoGPT原理 38
3.1.3 AutoGPT应用 42
3.2 MemGPT:长记忆会话应用 47
3.2.1 MemGPT介绍 47
3.2.2 MemGPT原理 47
3.2.3 MemGPT应用 52
第4章 任务驱动型Agent应用 56
4.1 BabyAGI:任务自驱动应用 56
4.1.1 BabyAGI介绍 56
4.1.2 BabyAGI原理 57
4.1.3 BabyAGI应用 62
4.2 Camel:角色扮演应用 65
4.2.1 Camel介绍 65
4.2.2 Camel原理 65
4.2.3 Camel应用 67
第5章 辅助开发型Agent应用 70
5.1 Devika:AI“软件工程师”应用 70
5.1.1 Devika介绍 70
5.1.2 Devika原理 71
5.1.3 Devika应用 75
5.2 CodeFuse-ChatBot:辅助编程应用 79
5.2.1 CodeFuse-ChatBot介绍 79
5.2.2 CodeFuse-ChatBot原理 80
5.2.3 CodeFuse-ChatBot应用 82
第6章 检索增强型Agent应用 85
6.1 DB-GPT:数据库应用 85
6.1.1 DB-GPT介绍 85
6.1.2 DB-GPT原理 86
6.1.3 DB-GPT应用 88
6.2 QAnything:知识库应用 90
6.2.1 QAnything介绍 90
6.2.2 QAnything原理 91
6.2.3 QAnything应用 93
开发篇
第7章 大语言模型开发与微调 97
7.1 开发要点 97
7.2 GLM-4 98
7.2.1 GLM-4介绍 98
7.2.2 GLM-4安装 98
7.2.3 Chat应用开发 99
7.2.4 GLM-4兼容API服务开发 102
7.2.5 GLM-4微调 104
7.3 Llama3 108
7.3.1 Llama3介绍 108
7.3.2 Llama3安装 109
7.3.3 Chat应用开发 110
7.3.4 Llama3兼容API服务
开发 113
7.3.5 Llama3微调 118
第8章 基于GLM-4的Function-calling应用开发 124
8.1 开发要点 124
8.2 案例场景 125
8.3 关键原理 126
8.4 实现过程 128
8.4.1 环境安装 128
8.4.2 源代码 128
8.4.3 运行 133
第9章 基于AgentScope的ReAct Agent应用开发 134
9.1 开发要点 134
9.2 案例场景 134
9.3 关键原理 135
9.4 实现过程 138
9.4.1 环境安装 138
9.4.2 源代码 139
9.4.3 运行 142
第10章 基于LangChain的任务驱动Agent应用开发 143
10.1 开发要点 143
10.2 案例场景 144
10.3 关键原理 144
10.3.1 应用架构 145
10.3.2 应用运行流程 145
10.3.3 应用运行示例 146
10.4 实现过程 149
10.4.1 环境安装 149
10.4.2 源代码 150
10.4.3 运行 153
第11章 基于LangGraph的工作流Agent应用开发 155
11.1 开发要点 155
11.2 案例场景 155
11.3 关键原理 156
11.3.1 基本概念 156
11.3.2 工作流定义 157
11.4 实现过程 158
11.4.1 环境安装 158
11.4.2 源代码 159
11.4.3 运行 163
第12章 基于AutoGen的辅助编程Agent应用开发 164
12.1 开发要点 164
12.2 案例场景 165
12.3 关键原理 165
12.4 实现过程 167
12.4.1 环境安装 167
12.4.2 源代码 168
12.4.3 运行 171
第13章 基于LlamaIndex的RAG Agent综合应用开发 173
13.1 开发要点 173
13.2 案例场景 174
13.3 关键原理 174
13.3.1 索引建立 175
13.3.2 智体查询 176
13.4 实现过程 176
13.4.1 环境安装 176
13.4.2 源代码 178
13.4.3 运行 181
第14章 基于CrewAI的多角色Agent应用开发 182
14.1 开发要点 182
14.2 案例场景 183
14.3 关键原理 183
14.3.1 应用架构 183
14.3.2 主要组件 184
14.3.3 流式会话实现原理 185
14.4 实现过程 186
14.4.1 环境安装 186
14.4.2 源代码 187
14.4.3 运行 191
第15章 基于Qwen-Agent的多智体图像应用开发 193
15.1 开发要点 193
15.2 案例场景 194
15.3 关键原理 195
15.3.1 应用架构 195
15.3.2 关键技术 196
15.4 实现过程 198
15.4.1 环境安装 198
15.4.2 源代码 200
15.4.3 运行 202
15.4.4 增强方案 202
第16章 基于CogVLM2的多模态Agent应用开发 204
16.1 开发要点