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