Agent 的基本架構(gòu)
根據(jù)《A survey on large language model based autonomous agents》智能體綜述文章,Agent核心是需要具備以下幾個核心特性與模塊:
- Profile模塊: Profile 模塊的目的主要是做Agent角色認(rèn)定,回答的核心問題有: 我是誰?我在哪?我該干什么?無論是在當(dāng)前的人與人之間的協(xié)同,還是人與智能體的協(xié)同,亦或是智能體與智能體間的協(xié)同。
- Memory模塊: Memory即記憶模塊,主要用來存儲、獲取、檢索信息。
- Planning模塊: 制定計劃,可以根據(jù)過去的行為與目標(biāo)動態(tài)規(guī)劃下一步的行動。
- Action模塊: 執(zhí)行模塊,執(zhí)行智能體的具體決策。
Profile 模塊
角色模塊的目的是識別代理的角色。代理通常通過承擔(dān)特定角色來執(zhí)行任務(wù),如程序員、教師和領(lǐng)域?qū)<?。角色模塊通過將代理的配置文件寫入提示中,影響LLM的行為。代理配置文件通常包括基本信息(如年齡、性別和職業(yè))、心理學(xué)信息(反映代理的個性)和社交信息(詳細(xì)說明代理之間的關(guān)系)。
角色生成策略:
- 手工方法:代理配置文件由人工指定。例如,Generative Agent通過姓名、目標(biāo)和與其他代理的關(guān)系等信息描述代理。
- LLM生成方法:代理配置文件由LLMs自動生成。例如,RecAgent首先創(chuàng)建幾個種子配置文件,然后利用ChatGPT生成更多配置文件。
- 數(shù)據(jù)集對齊方法:代理配置文件從現(xiàn)實世界數(shù)據(jù)集中獲取。例如,[29]根據(jù)美國國家選舉研究(ANES)中參與者的背景信息為GPT-3分配角色。
Memory 模塊
記憶模塊在代理架構(gòu)設(shè)計中起著非常重要的作用。它存儲從環(huán)境中感知到的信息,并利用記錄的記憶來促進(jìn)未來的行動。記憶模塊幫助代理積累經(jīng)驗、自我進(jìn)化,并以更一致、合理和有效的方式行事。
記憶結(jié)構(gòu):
- 統(tǒng)一記憶:僅模擬人類的短期記憶,通常通過上下文學(xué)習(xí)實現(xiàn)。例如,RLP和SayPlan使用上下文信息作為短期記憶。
- 混合記憶:明確模擬人類的短期和長期記憶。例如,Generative Agent和AgentSims使用向量數(shù)據(jù)庫實現(xiàn)長期記憶。
記憶格式:
- 自然語言:記憶信息直接使用自然語言描述。例如,Reflexion和Voyager使用自然語言存儲體驗反饋。
- 嵌入:記憶信息被編碼為嵌入向量。例如,MemoryBank和ChatDev將對話歷史編碼為向量。
- 數(shù)據(jù)庫:記憶信息存儲在數(shù)據(jù)庫中。例如,ChatDB和DB-GPT使用數(shù)據(jù)庫作為記憶模塊。
- 結(jié)構(gòu)化列表:記憶信息被組織成列表。例如,GITM使用層次樹結(jié)構(gòu)存儲子目標(biāo)的動作列表。
記憶操作:
- 記憶讀取:從記憶中提取有意義的信息以增強(qiáng)代理的行動。例如,Generative Agent和GITM使用近期性、相關(guān)性和重要性評分函數(shù)提取信息。
- 記憶寫入:將感知到的環(huán)境信息存儲在記憶中。例如,ChatDB和RET-LLM使用不同的策略處理記憶重復(fù)和溢出問題。
- 記憶反思:模擬人類反思能力,生成更抽象、復(fù)雜和高層次的信息。例如,Generative Agent和GITM通過反思生成高層次見解。
Planning 模塊
規(guī)劃模塊旨在賦予代理類似人類的能力,即將復(fù)雜任務(wù)分解為更簡單的子任務(wù)并分別解決。規(guī)劃模塊根據(jù)代理在規(guī)劃過程中是否可以接收反饋分為兩類:無反饋規(guī)劃和有反饋規(guī)劃。
無反饋規(guī)劃:
- 單路徑推理:最終任務(wù)被分解為幾個中間步驟,每個步驟只導(dǎo)致一個后續(xù)步驟。例如,Chain of Thought(CoT)和Zero-shot-CoT使用推理步驟作為提示。
- 多路徑推理:推理步驟被組織成樹狀結(jié)構(gòu),每個中間步驟可能有多個后續(xù)步驟。例如,Self-consistent CoT(CoT-SC)和Tree of Thoughts(ToT)使用樹狀推理結(jié)構(gòu)生成計劃。
- 外部規(guī)劃器:利用外部規(guī)劃器生成計劃。例如,LLM+P和LLM-DP使用外部規(guī)劃器處理PDDL。
有反饋規(guī)劃:
- 環(huán)境反饋:從環(huán)境中獲取反饋以影響代理的未來行為。例如,ReAct和Voyager使用環(huán)境反饋進(jìn)行計劃。
- 人類反饋:直接與人類互動以獲取反饋。例如,Inner Monologue使用人類反饋調(diào)整其行動策略。
- 模型反饋:利用預(yù)訓(xùn)練模型生成反饋。例如,Reflexion和SelfCheck使用模型反饋改進(jìn)其推理過程。
Action 模塊
行動模塊負(fù)責(zé)將代理的決策轉(zhuǎn)化為具體的結(jié)果。該模塊位于最下游位置,直接與環(huán)境交互。行動模塊受到角色、記憶和規(guī)劃模塊的影響。
行動目標(biāo):
- 任務(wù)完成:代理的行動旨在完成特定任務(wù)。例如,Voyager和ChatDev中的代理完成任務(wù)。
- 溝通:代理的行動旨在與其他代理或真實人類溝通。例如,ChatDev和Inner Monologue中的代理進(jìn)行溝通。
- 環(huán)境探索:代理的行動旨在探索不熟悉的環(huán)境。例如,Voyager中的代理探索未知技能。
行動生成:
- 通過記憶回憶行動:行動是根據(jù)當(dāng)前任務(wù)從代理記憶中提取信息生成的。例如,Generative Agent和GITM使用記憶信息指導(dǎo)行動。
- 通過計劃跟隨行動:代理按照其預(yù)先生成的計劃采取行動。例如,DEPS和GITM中的代理遵循計劃。
行動空間:
- 外部工具:利用外部API、數(shù)據(jù)庫和外部模型擴(kuò)展行動空間。例如,HuggingGPT、ChatDB和ChemCrow使用外部工具。
- 內(nèi)部知識:依賴LLMs的內(nèi)部知識指導(dǎo)行動。例如,DEPS、ChatDev和Generative Agent使用LLMs的規(guī)劃、對話和常識理解能力。
行動影響:
- 改變環(huán)境:代理通過行動直接改變環(huán)境狀態(tài)。例如,GITM和Voyager中的代理改變環(huán)境。
- 改變內(nèi)部狀態(tài):代理采取的行動改變代理本身。例如,Generative Agent和SayCan中的代理更新記憶。
- 觸發(fā)新行動:一個代理行動觸發(fā)另一個行動。例如,Voyager中的代理在收集到所有必要資源后建造建筑物。
通過上述模塊的協(xié)同作用,基于LLM的自主代理能夠模擬人類行為,有效執(zhí)行多樣化任務(wù)。