探索新一代大模型代理(LLM agent)及其架構

在人工智能大模型(AI)的浪潮中,2023年我們見證了檢索增強生成(Retrieval Augmented Generation, RAG)的興起,而2024年則無疑成為了“代理”agent的元年。各大AI企業紛紛投身于聊天機器人代理的研發中,工具如MultiOn通過與外部網站的連接實現了快速增長,而框架如LangGraph和LlamaIndex Workflows則助力全球開發者構建結構化的代理應用。然而,盡管代理在AI生態系統中備受矚目,它們卻仍未能在消費者或企業用戶實際業務場景中掀起波瀾。今天我們一起來探索一下新一代的大模型代理及其架構。

大模型代理(llm agent)的基礎概念

首先,讓我們明確什么是大模型代理(llm agent)。基于LLM的代理是軟件系統,它們通過串聯多個處理步驟,包括LLM調用,api調用,方法調用等等以實現期望的最終結果。這些大模型代理通常包含一定量的條件邏輯或決策能力,以及在執行步驟間可訪問的工作內存。了解代理的構建方式、當前面臨的問題及初步解決方案,對于我們導航新框架和代理發展方向至關重要。

ReAct代理的失敗與反思

回顧過去,代理的概念并非新鮮事物。去年,AI領域的社交媒體上涌現了大量聲稱具備驚人智能能力的ReAct(reason, act)代理。然而,這些第一代代理大多以高度的抽象化設計著稱,盡管承諾廣泛的結果,但實際上卻難以使用且效果有限。

ReAct代理的失敗促使人們開始重新思考代理的結構。過去一年中,我們見證了巨大的進步,引領我們進入第二代代理的時代。新一代代理以更嚴格的方式定義了代理可能采取的路徑,從而避免了ReAct代理開放式設計的缺陷。這種趨勢趨向于縮小解空間,即每個代理能夠執行的任務范圍,雖然限制了多樣性,但通常能打造出更強大、更易定義的代理。

第二代大模型代理(llm agent)的核心特征

第二代代理在多個方面展現出顯著的特征。首先,它們往往采用LLM路由,并在迭代循環中處理數據。許多代理包含一個名為“路由器(router)”的節點或組件,負責決定下一步應該采取的行動。router可能是由LLM或分類器等驅動的,它們根據輸入信息選擇執行路徑。

每個行動通常由一個組件表示,這些組件是完成特定小任務的代碼塊,可能調用LLM、執行內部API調用或運行應用程序代碼。在LangGraph中,這些組件被稱為節點;而在LlamaIndex Workflows中,它們則被稱為步驟。一旦組件完成其工作,它可能返回路由器或移動到其他決策組件。

無論大模型代理是否使用框架,我們都看到了解決方案空間越來越小的趨勢——也就是說每個代理可以做的事情越來越少。解決方案空間越小,代理就越容易定義,這通常會使代理更強大。

大模型代理的架構模式

代理的部署通常遵循一些常見的架構模式。最簡單的形式可能僅包括一個LLM路由器和一個工具調用,我們稱之為“單一路由器與功能”架構。在這種架構中,路由器根據系統輸入決定調用哪個工具或功能。

稍微復雜的架構則是“單一路由器與功能集”,其中路由器調用的不再是簡單的工具或函數調用,而是更復雜的工作流程或功能集,這些可能包含多個組件和深度鏈接的動作鏈。

更高級的架構則將LLM調用與工具和狀態混合,形成復雜的分支結構。路由器根據用戶問題調用不同的功能,每個功能可能更新共享狀態,并可能涉及一個或多個LLM調用來生成用戶響應。

為了應對代理的復雜性,出現了如LangGraph和LlamaIndex Workflows等框架,它們旨在通過提供結構化的方式來簡化代理開發。LangGraph基于Pregel圖的概念,定義了節點和邊,使代理能夠沿其移動。而在LlamaIndex Workflows中,則使用事件和事件監聽器來在不同節點間移動。

大模型代理的一些思考

是否應使用框架開發大模型代理

在決定是否使用大模型代理框架來開發代理時,我們需要權衡其提供的額外結構與復雜性之間的平衡。對于大型、復雜的大模型代理應用,大模型代理框架提供的結構和最佳實踐可以大大降低開發難度。然而,對于高度定制化或特定需求的代理,直接使用代碼可能更為靈活。

以我們一個項目為例,我們在開發自己的代理時采用了多層路由器架構,雖然我們沒有直接使用LangGraph等框架,但我們的設計在一定程度上借鑒了它們的抽象概念。我們發現,對于當前的項目需求而言,直接使用代碼比依賴框架更為高效。然而,我們也認識到隨著框架的不斷完善,未來可能會考慮采用這些框架來加速開發進程。

你真的需要大模型代理嗎?

在決定構建大模型代理之前,我們首先需要明確代理的適用場景。如果你的應用遵循基于輸入數據的迭代流程,需要根據先前的行動或反饋進行調整,或者存在一個可遍歷的狀態空間,那么代理可能是一個很好的選擇。

然而,代理并非萬能的解決方案。它們在復雜任務分解、長期規劃和性能一致性方面仍面臨挑戰。為了克服這些挑戰,我們需要采用一系列策略,如縮小解空間、引入領域和業務啟發式、明確行動意圖和創建可重復的過程等等,真是落地還需要很多實際業務場景的探索

使用大模型代理常見問題及可能的解決方案

問題

1.長期規劃難題:Agent在分解復雜任務和避免陷入循環方面存在困難,常需人類干預。

2.不一致的性能:由于解決空間的龐大,Agent難以實現一致結果,且成本高昂。市場傾向于使用受限Agent以限制解決空間。

可能的應對策略

1、縮小解決空間:通過預先定義可能的行動和結果范圍來減少不確定性。2、引入業務邏輯:將領域和業務啟發式融入Agent的決策系統中,提升決策質量。

3、明確行動意圖和標準化流程:清晰定義每個行動的目的,標準化執行步驟,增強可靠性和可糾錯性。

4、代碼化編排:使用代碼替代LLM進行編排,提高過程的確定性和可控性。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/75568.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/75568.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/75568.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

26考研——線性表_ 線性表的鏈式表示_雙循環鏈表(2)

408答疑 文章目錄 三、 線性表的鏈式表示雙循環鏈表單鏈表與雙鏈表的比較單鏈表的特點雙鏈表的特點 雙鏈表上基本操作的實現雙鏈表的插入操作雙鏈表的刪除操作 雙鏈表的代碼實操定義結點創建一個結點帶頭結點的雙鏈表初始化創建雙鏈表打印雙鏈表查找結點插入結點在指定節點后插…

【備忘】在Docker中安裝寶塔面板,實現環境隔離,又能快速遷移服務器環境

我的環境是阿里云服務器(新環境) 【待繼續】 【新方法】 我已經安裝了docker,所以這里我先卸載。 卸載命令: sudo yum remove docker* containerd.io -y Docker默認保存位置是/var/lib/docker/,卸載Docker時&#x…

池化技術的深度解析與實踐指南【大模型總結】

池化技術的深度解析與實踐指南 池化技術作為計算機系統中的核心優化手段,通過資源復用和預分配機制顯著提升系統性能。本文將從原理、實現到最佳實踐,全方位剖析池化技術的核心要點,并結合實際案例說明其應用場景與調優策略。 一、池化技術的…

HCIP【BGP協議(詳解)】

目錄 1 BGP協議產生背景 2 BGP協議特性 2.1 自治系統間路由傳播 2.2 路由矢量協議 2.3 防環機制 2.4 基于TCP傳輸 2.5 路由更新機制 2.6 豐富的路由屬性 2.7 支持CIDR和路由聚合 2.8 路由過濾和策略控制 2.9 動態對等體功能 3 BGP基本術語 4 BGP規劃問題 4.1 路…

VirtualBox 配置雙網卡(NAT + 橋接)詳細步驟

在 VirtualBox 中為 CentOS 虛擬機配置雙網卡(NAT 橋接),使其既能訪問外網(NAT),又能與宿主機(Windows 10)或局域網通信(橋接)。 步驟 1:關閉虛…

Upload-labs靶場通關

之前搭好了靶場,Upload-labs 靶場搭建 及一句話木馬的原理與運用-CSDN博客 今天開始通關并寫詳細流程 Pass-1 來到靶場的第一關 先隨便上傳php 代碼 點擊上傳 發現文件類型被限制了 方法1: 改文件后綴為合法文件(.jpg .png .gif&#xf…

[GN] Python3基本數據類型 -- 與C的差異

Python3 面向對象 文章目錄 Python3的基本數據類型6個標準的數據類型NumbersStringListtupleSetsDictionaries Python運算符邏輯 運算符成員運算符身份運算符 Python3 數字Python3 序列序列切片序列相加序列相乘序列相關內置函數 Python3 列表訪問列表的值更新列表刪除列表元素…

MCP over MQTT:EMQX 開啟物聯網 Agentic 時代

前言 隨著 DeepSeek 等大語言模型(LLM)的廣泛應用,如何找到合適的場景,并基于這些大模型構建服務于各行各業的智能體成為關鍵課題。在社區中,支持智能體開發的基礎設施和工具層出不窮,其中,Ant…

AI助力高效PPT制作:從內容生成到設計優化

隨著人工智能技術的不斷發展,AI在各個領域的應用日益普及,尤其是在文檔和演示文稿的創建過程中。PowerPoint(PPT)作為最常用的演示工具之一,借助AI的技術手段,可以極大地提高制作效率并提升最終呈現效果。在…

學透Spring Boot — 009. Spring Boot的四種 Http 客戶端

目錄 常見的HttpClient Spring 提供的HttpClient RestTemplate Spring 提供的模板類 XXXTemplate RestTemplate的使用 RestTemplate的使用技巧 RestTemplate的問題 RestClient RestClinet的基本使用 RestClient的自動配置 RestClient 序列化對象 異常處理 onStatus …

leetcode117 填充每個節點的下一個右側節點指針2

LeetCode 116 和 117 都是關于填充二叉樹節點的 next 指針的問題,但它們的區別在于 樹的類型 不同,117與 116 題類似,但給定的樹是 普通二叉樹(不一定完全填充),即某些節點可能缺少左或右子節點。 樹的結構…

軟考系統架構師 — 4 嵌入式軟件

目錄 4.1 考點分析 4.2 嵌入式微處理器 4.2.1嵌入式微處理器體系結構 5.2.2 嵌入式微處理器分類 4.2.3 多核處理器 4.3 嵌入式軟件 4.4 嵌入式系統 4.4.1 嵌入式系統的組成 4.4.2 嵌入式系統分類 4.4.3 嵌入式數據庫系統DBMS 4.4.4 嵌入式操作系統OS 4.4.5 嵌入式實…

RocketMQ 中的 ProducerManager 組件剖析

一、引言 在分布式系統的消息傳遞領域,RocketMQ 以其高性能、高可用性和強大的擴展性脫穎而出。ProducerManager 作為 RocketMQ 中的一個關鍵組件,在消息生產環節發揮著至關重要的作用。它負責管理消息生產者(Producer)的生命周期…

k8s進階之路:本地集群環境搭建

概述 文章將帶領大家搭建一個 master 節點,兩個 node 節點的 k8s 集群,容器基于 docker,k8s 版本 v1.32。 一、系統安裝 安裝之前請大家使用虛擬機將 ubuntu24.04 系統安裝完畢,我是基于 mac m1 的系統進行安裝的,所…

深度學習數據集劃分比例多少合適

在機器學習和深度學習中,測試集的劃分比例需要根據數據量、任務類型和領域需求靈活調整。 1. 常規劃分比例 通用場景 訓練集 : 驗證集 : 測試集 60% : 20% : 20% 適用于大多數中等規模數據集(如數萬到數十萬樣本),平衡了訓練數…

【TS學習】(15)分布式條件特性

在 TypeScript 中,分布式條件類型(Distributive Conditional Types) 是一種特殊的行為,發生在條件類型作用于裸類型參數(Naked Type Parameter) 時。這種特性使得條件類型可以“分布”到聯合類型的每個成員…

NSSCTF [HGAME 2023 week1]simple_shellcode

3488.[HGAME 2023 week1]simple_shellcode 手寫read函數shellcode和orw [HGAME 2023 week1]simple_shellcode (1) motalymotaly-VMware-Virtual-Platform:~/桌面$ file vuln vuln: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpret…

PostgreSQL的擴展(extensions)-常用的擴展-pg_dirtyread

PostgreSQL的擴展(extensions)-常用的擴展-pg_dirtyread pg_dirtyread 是 PostgreSQL 的一個特殊擴展,它允許讀取已被刪除但尚未被 VACUUM 清理的數據行,是數據恢復的重要工具。 原理: pg_dirtyread 通過直接訪問表的…

linux3 mkdir rmdir rm cp touch ls -d /*/

Linux 系統的初始目錄結構遵循 FHS(Filesystem Hierarchy Standard,文件系統層次標準),定義了每個目錄的核心功能和存儲內容。以下是 Linux 系統初始安裝后的主要目錄及其作用: 1. 核心系統目錄 目錄用途典型內容示例…