這是一本面向初中級讀者的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 開發要點