【AI Agent】Agent的原理介紹與應(yīng)用發(fā)展思考
Agent是什么?
Agent一詞起源于拉丁語中的Agere,意思是“to do”。在LLM語境下,Agent可以理解為在某種能自主理解、規(guī)劃決策、執(zhí)行復(fù)雜任務(wù)的智能體。
Agent并非ChatGPT升級版,它不僅告訴你“如何做”,更會幫你去做。如果Copilot是副駕駛,那么Agent就是主駕駛。
自主Agent是由人工智能驅(qū)動的程序,當給定目標時,它們能夠自己創(chuàng)建任務(wù)、完成任務(wù)、創(chuàng)建新任務(wù)、重新確定任務(wù)列表的優(yōu)先級、完成新的頂級任務(wù),并循環(huán)直到達到目標。
最直觀的公式
Agent = LLM+Planning+Feedback+Tool use
Agent決策流程
感知(Perception)→ 規(guī)劃(Planning)→ 行動(Action)
感知(Perception)是指Agent從環(huán)境中收集信息并從中提取相關(guān)知識的能力。
規(guī)劃(Planning)是指Agent為了某一目標而作出的決策過程。
行動(Action)是指基于環(huán)境和規(guī)劃做出的動作。
Agent通過感知從環(huán)境中收集信息并提取相關(guān)知識。然后通過規(guī)劃為了達到某個目標做出決策。最后,通過行動基于環(huán)境和規(guī)劃做出具體的動作。Policy是Agent做出行動的核心決策,而行動又為進一步感知提供了觀察的前提和基礎(chǔ),形成了一個自主的閉環(huán)學(xué)習(xí)過程。
Agent 大爆發(fā)
回顧一下幾個月前的這股AI Agent大爆發(fā)。
3月21日,Camel發(fā)布。
3月30日,AutoGPT發(fā)布。
4月3日,BabyAGI發(fā)布。
4月7日,西部世界小鎮(zhèn)發(fā)布。
5月27日,英偉達AI智能體Voyager接入GPT-4后,直接完勝了AutoGPT。通過自主寫代碼,它完全獨霸了《我的世界》,可以在游戲中進行全場景的終身學(xué)習(xí),根本無需人類插手。
就在同一時間,商湯、清華等共同提出了通才AI智能體 Ghost in the Minecraft (GITM),它同樣能夠通過自主學(xué)習(xí)解決任務(wù),表現(xiàn)優(yōu)異。這些表現(xiàn)優(yōu)異的AI智能體,簡直讓人看到了AGI+智能體的雛形。
Agent 是讓 LLM 具備目標實現(xiàn)的能力,并通過自我激勵循環(huán)來實現(xiàn)這個目標。
與其說交互是線性的,不如說它可以是
并行
的(同時使用多個提示,試圖解決同一個目標)和
單向
的(無需人類參與對話)。
這個過程在為Agent創(chuàng)建一個目標或主任務(wù)后,主要分為以下三個步驟:
獲取第一個未完成的任務(wù)
收集中間結(jié)果并儲存到向量數(shù)據(jù)庫中
創(chuàng)建新的任務(wù),并重新設(shè)置任務(wù)列表的優(yōu)先級
人是如何做事的?
在工作中,我們通常會用到PDCA思維模型?;赑DCA模型,我們可以將完成一項任務(wù)進行拆解,按照
作出計劃
、
計劃實施
、
檢查實施效果
,然后
將成功的納入標準,不成功的留待下一循環(huán)去解決。
目前,這是人們高效完成一項任務(wù)非常成功的經(jīng)驗總結(jié)。
如何讓LLM替代人去做事?
要讓LLM替代人去做事,我們可以基于PDCA模型進行規(guī)劃、執(zhí)行、評估和反思。
規(guī)劃能力(Plan)-> 分解任務(wù):
Agent大腦把大的任務(wù)拆解為更小的,可管理的子任務(wù),這對有效的、可控的處理好大的復(fù)雜的任務(wù)效果很好。
執(zhí)行能力(Done)-> 使用工具
:Agent能學(xué)習(xí)到在模型內(nèi)部知識不夠時(比如:在pre-train時不存在,且之后沒法改變的模型weights)去調(diào)用外部API,比如:獲取實時的信息、執(zhí)行代碼的能力、訪問專有的信息知識庫等等。這是一個典型的平臺+工具的場景,我們要有生態(tài)意識,即我們構(gòu)建平臺以及一些必要的工具,然后大力吸引其他廠商提供更多的組件工具,形成生態(tài)。
評估能力(Check)-> 確認執(zhí)行結(jié)果
:Agent要能在任務(wù)正常執(zhí)行后判斷產(chǎn)出物是否符合目標,在發(fā)生異常時要能對異常進行分類(危害等級),對異常進行定位(哪個子任務(wù)產(chǎn)生的錯誤),對異常進行原因分析(什么導(dǎo)致的異常)。這個能力是通用大模型不具備的,需要針對不同場景訓(xùn)練獨有的小模型。
反思能力(Action)-> 基于評估結(jié)果重新規(guī)劃
:Agent要能在產(chǎn)出物符合目標時及時結(jié)束任務(wù),是整個流程最核心的部分;同時,進行歸因分析總結(jié)導(dǎo)致成果的主要因素,另外,Agent要能在發(fā)生異常或產(chǎn)出物不符合目標時給出應(yīng)對措施,并重新進行規(guī)劃開啟再循環(huán)過程。
LLM作為一種智能代理,引發(fā)了人們對人工智能與人類工作的關(guān)系和未來發(fā)展的思考。它讓我們思考人類如何與智能代理合作,從而實現(xiàn)更高效的工作方式。而這種合作方式也讓我們反思人類自身的價值和特長所在。
來自斯坦福的虛擬小鎮(zhèn)
Generative Agents: Interactive Simulacra of Human Behavior, 2023.04, Stanford
代碼已開源:https://github.com/joonspk-research/generative_agents
虛擬小鎮(zhèn),一個agent就是一個虛擬人物,25個agents之間的故事。
架構(gòu)
記憶(Memory)
短期記憶:在上下文中(prompt)學(xué)習(xí)。它是短暫且有限的,因為它受到Transformer的上下文窗口長度的限制。
長期記憶:代理在查詢時可以注意到的外部向量存儲,可以通過快速檢索訪問。
反思(Reflection)
反思是由代理生成的更高級別、更抽象的思考。因為反思也是一種記憶,所以在檢索時,它們會與其他觀察結(jié)果一起被包含在內(nèi)。反思是周期性生成的;當代理感知到的最新事件的重要性評分之和超過一定閾值時,就會生成反思。
讓代理確定要反思什么
生成的問題作為檢索的查詢
計劃(Plan)
計劃是為了做更長時間的規(guī)劃。
像反思一樣,計劃也被儲存在記憶流中(第三種記憶),并被包含在檢索過程中。這使得代理能夠在決定如何行動時,同時考慮觀察、反思和計劃。如果需要,代理可能在中途改變他們的計劃(即響應(yīng),reacting)。
類 LangChain 中的各種概念
Models:也就是我們熟悉的調(diào)用大模型API。
Prompt Templates:在提示詞中引入變量以適應(yīng)用戶輸入的提示模版。
Chains:對模型的鏈式調(diào)用,以上一個輸出為下一個輸入的一部分。
Agent:能自主執(zhí)行鏈式調(diào)用,以及訪問外部工具。
Multi-Agent:多個Agent共享一部分記憶,自主分工相互協(xié)作。
Agent落地的瓶頸
Agent本身用到兩部分能力,一部分是由LLM作為其“智商”或“大腦”的部分,另一部分是基于LLM,其外部需要有一個控制器,由它去完成各種Prompt,如通過檢索增強Memory,從環(huán)境獲得Feedback,怎樣做Reflection等。
Agent既需要大腦,也要外部支撐。
LLM本身的問題
:自身的“智商”不夠,可進行LLM升級為GPT-5;Prompt的方式不對,問題要無歧義。
外部工具
:系統(tǒng)化程度不夠,需要調(diào)用外部的工具系統(tǒng),這是一個長期待解決的問題。
現(xiàn)階段Agent的落地,除了LLM本身足夠通用之外,也需要實現(xiàn)一個通用的外部邏輯框架。不只是“智商”問題,還需要如何借助外部工具,從專用抵達通用——而這是更重要的問題。
解決特定場景的特定問題——將LLM作為一個通用大腦,通過Prompt設(shè)計為不同的角色,以完成專用的任務(wù),而非普適性的應(yīng)用。關(guān)鍵問題,即Feedback將成為Agent落地實現(xiàn)的一大制約因素,對于復(fù)雜的Tools應(yīng)用,成功概率會很低。
Agent從專用到通用的實現(xiàn)路徑
假設(shè)Agent最終將落地于100種不同的環(huán)境,在目前連最簡單的外部應(yīng)用都難以實現(xiàn)的前提下,最終能否抽象出一個框架模型來解決所有外部通用性問題?
先將某一場景下的Agent做到極致——足夠穩(wěn)定且魯棒,再逐步將它變成通用框架,也許這是實現(xiàn)通用Agent的路徑之一。
多模態(tài)在Agent的發(fā)展
多模態(tài)只能解決Agent感知上的問題,而無法解決認知的問題。
多模態(tài)是必然趨勢,未來的大模型必然是多模態(tài)的大模型,未來的Agent也一定是多模態(tài)世界中的Agent。
Agent新的共識正在逐漸形成
Agent需要調(diào)用外部工具
調(diào)用工具的方式就是輸出代碼——由LLM大腦輸出一種可執(zhí)行的代碼,像是一個語義分析器,由它理解每句話的含義,然后將其轉(zhuǎn)換成一種機器指令,再去調(diào)用外部的工具來執(zhí)行或生成答案。
盡管現(xiàn)在的 Function Call 形式還有待改進,但是這種調(diào)用工具的方式是非常必要的,是解決幻覺問題的最徹底的手段。
出門問問希望做通用的Agent。在中國的市場環(huán)境下,如果做一個與企業(yè)深度結(jié)合的Agent,最終將成為“外包”,因為它需要私有化部署,集成到企業(yè)工作流里。很多公司都會去爭搶保險公司、銀行、汽車領(lǐng)域的大客戶。這將與上一代AI公司的結(jié)局非常相似,邊際成本很難降低,且沒有通用性。出門問問目前的魔音工坊、奇妙文等AIGC產(chǎn)品都屬于面向內(nèi)容創(chuàng)作者的、介于深度和淺度之間的應(yīng)用,既不完全屬于consumer,也不完全屬于enterprise,同時還有面向企業(yè)用戶的CoPilot,其定位也是在企業(yè)里找到具體的「場景」,做相對通用的場景應(yīng)用。
未來是Agent的世界,在今天的Agent進程下,依然重復(fù)昨天AI的故事,私有化部署將面臨挑戰(zhàn)。
參考引用
[大模型下半場,關(guān)于Agent的幾個疑問](https://mp.weixin.qq.com/s/tXxCEtAA_W1eS0ti-Yydxg)
https://github.com/yoheinakajima/babyagi
[Agent:OpenAI的下一步,亞馬遜云科技站在第5層](https://mp.weixin.qq.com/s/5N5H2yqiCKWtM34ngjk6Hw)