掘力計劃第21期 - 如何構(gòu)建輕量級的 LLM Agent
摘要
隨著大語言模型(LLM)的興起,LLM Agent 成為構(gòu)建 LLM 應(yīng)用的關(guān)鍵方向。本文整理自 Michael Yuan 博士的技術(shù)分享,概述了使用輕量級運行時如 WebAssembly 構(gòu)建 LLM Agent 的優(yōu)勢,分析 Python 在構(gòu)建 LLM Agent 時的局限性,并推薦采用類似 Rust 這樣的系統(tǒng)編程語言構(gòu)建 LLM Agent。
引言
近年來,大語言模型(LLM)如 GPT-3 和 ChatGPT 引發(fā)了 AI 的革命。它們擁有強大的文本理解和生成能力,支持各種自然語言處理任務(wù)。但是 LLM 本身只是一個被動的模型,要將其能力發(fā)揮出來,還需要構(gòu)建 LLM Agent。LLM Agent 負責(zé)與 LLM 進行交互,從用戶那里獲取輸入,調(diào)用 LLM 進行推理,并將結(jié)果返回給用戶。
目前主流的 LLM Agent 使用 Python 構(gòu)建,并部署在云原生基礎(chǔ)設(shè)施如 Kubernetes 上。但是這種方式存在一定局限性。主題為《大模型的崛起:解析大語言模型的訓(xùn)練和應(yīng)用》的掘力計劃第21期活動,我們邀請到 Michael Yuan 博士來探討構(gòu)建輕量級 LLM Agent 的新思路。

Michael Yuan 博士是 CNCF WasmEdge 項目的維護者,也是 Second State 的創(chuàng)始人。 他撰寫過5本軟件工程書籍,由 Addison-Wesley、Prentice-Hall 和 O'Reilly 出版。 Michael 是一位長期的開源開發(fā)者和貢獻者。 他之前曾在許多行業(yè)會議上發(fā)表過演講,包括 OpenSourceSummit、The Linux Foundation Member Summit 和 KubeCon。
LLM Agent 的作用
LLM 可以比喻為一個沒有記憶力、感覺器官和行動能力的大腦。LLM Agent 就是為 LLM 提供這些關(guān)鍵功能的組件。具體來說,LLM Agent 包含以下功能:

記憶:負責(zé)保存用戶交互的歷史上下文(short-term memory),以及項目或領(lǐng)域知識(long-term memory)。這樣 LLM 才能持續(xù)地進行會話或完成特定任務(wù)。
感知:負責(zé)從外部世界獲取輸入(眼睛、耳朵),例如監(jiān)聽 IM 消息或 GitHub 事件。
行動:負責(zé)將 LLM 的輸出轉(zhuǎn)換成外部世界的行動(手),例如將結(jié)果返回給用戶或調(diào)用 API。
規(guī)劃:負責(zé)將不明確的任務(wù)分解為 LLM 可以處理的具體步驟。
可以看到,LLM Agent 負責(zé)處理 LLM 與外部世界的交互,是 LLM 應(yīng)用的關(guān)鍵組件。構(gòu)建高效的 LLM Agent 十分重要。
Python 的局限性

當(dāng)前,編寫 LLM Agent 最常用的語言是 Python。但是 Python 存在一些局限性:
Python 是一個解釋型語言,性能較差,尤其是在網(wǎng)絡(luò) IO 密集型任務(wù)中表現(xiàn)不佳。
Python 應(yīng)用往往依賴龐大的依賴庫,制作成 Docker 鏡像體積過大。
Python 不易進行原生編譯,難以實現(xiàn)真正的跨平臺。
此外,Python 生態(tài)中 LLM Agent 的主流選擇是 LangChain。但是 LangChain過于注重研究,提供了太多稀有用例的功能,使用起來非常復(fù)雜。
可以看到,Python 不太適合構(gòu)建輕量級、高效的 LLM Agent。
輕量級運行時的優(yōu)勢
相比之下,一些輕量級運行時具有以下優(yōu)勢:
使用系統(tǒng)編程語言如 Rust、Go 構(gòu)建,性能更好。
可以進行原生編譯,生成更輕量、更可移植的二進制文件。
更適合網(wǎng)絡(luò) IO 密集型、異步處理的任務(wù)。
具體來說,WebAssembly 就是一個非常有前途的輕量級運行時。使用 Rust 編譯到 WebAssembly 中,可以實現(xiàn)比 Python 小幾個數(shù)量級的二進制體積。此外,WebAssembly 還支持訪問底層硬件能力,實現(xiàn)近似原生級別的性能。
因此,使用輕量級運行時構(gòu)建 LLM Agent,可以避免 Python 的性能和體積問題,生成更高效的 LLM 應(yīng)用。
構(gòu)建輕量級 LLM Agent 的新方向

基于上述分析,可以看到構(gòu)建輕量級 LLM Agent 是提升 LLM 應(yīng)用性能的重要方向。具體來說,有以下解決方案:
使用系統(tǒng)編程語言如 Rust、Go 代替 Python??梢源蠓嵘阅懿p小體積。
采用輕量級運行時如 WebAssembly,進一步優(yōu)化性能和可移植性。
對于 Agent 中非性能敏感的組件,可以采用 Serverless 架構(gòu),例如 https://flows.network 來簡化部署和管理。
利用 Vec 之類的向量數(shù)據(jù)庫實現(xiàn)長期記憶,減少單個請求的 overhead。
設(shè)計簡單、模塊化的 Agent 架構(gòu),避免過于復(fù)雜的功能。注重工程化而不是研究。
通過這些方法,可以構(gòu)建出比現(xiàn)有 Python Agent 更輕量級、易部署和高性能的 LLM Agent。這有助于降低部署 LLM 應(yīng)用的門檻,使更多組織能夠受益于 LLM 帶來的價值。
總結(jié)
LLM Agent 是構(gòu)建 LLM 應(yīng)用的關(guān)鍵組件。過重的 Python Agent 在許多場景下表現(xiàn)不佳,構(gòu)建輕量級 LLM Agent 是提升性能的重要方向。采用編譯語言、輕量級運行時等技術(shù)可以實現(xiàn)此目的。我們期待看到更多高效的 LLM Agent 架構(gòu)和最佳實踐出現(xiàn),推動 LLM 的廣泛應(yīng)用。
關(guān)于掘力計劃
掘力計劃由稀土掘金技術(shù)社區(qū)發(fā)起,致力于打造一個高品質(zhì)的技術(shù)分享和交流的系列品牌。聚集國內(nèi)外頂尖的技術(shù)專家、開發(fā)者和實踐者,通過線下沙龍、閉門會、公開課等多種形式分享最前沿的技術(shù)動態(tài)。