AI大模型實(shí)戰(zhàn)篇:Reflexion,為AI Agent開啟強(qiáng)化學(xué)習(xí)之路
前面的文章中,作者分享了一種偏重反思的AI Agent設(shè)計(jì)模式,即Basic Reflection。但面對復(fù)雜度很高的產(chǎn)品時(shí),還有另一種框架可以解決。就是本文介紹的Reflexion設(shè)計(jì)模式。
在文章《AI大模型實(shí)戰(zhàn)篇:Basic Reflection,AI Agent的左右互搏之術(shù)》中,風(fēng)叔結(jié)合原理和具體源代碼,詳細(xì)介紹了第一種偏重反思的AI Agent設(shè)計(jì)模式,即Basic Reflection。Basic Reflection 的思路非常樸素,就是通過左右互搏讓兩個(gè)Agent相互進(jìn)化,實(shí)現(xiàn)成本也較低。
但是在實(shí)際應(yīng)用中,Basic Reflection的Generator生成的結(jié)果可能會過于發(fā)散,和我們要求的結(jié)果相去甚遠(yuǎn)。同時(shí),當(dāng)面對一些復(fù)雜度很高的問題時(shí),Basic Reflection框架也難以解決。有兩種方法來優(yōu)化Basic Reflection,一種是邊推理邊執(zhí)行的Self Discover模式,一種是增加了強(qiáng)化學(xué)習(xí)的Reflexion模式。
上篇文章《AI大模型實(shí)戰(zhàn)篇:Self Discover框架,萬萬想不到Agent還能這樣推理》,風(fēng)叔沿著“邊推理邊執(zhí)行”的優(yōu)化路線介紹了Self Discover。這篇文章中,風(fēng)叔沿著“強(qiáng)化學(xué)習(xí)”這條優(yōu)化路線,詳細(xì)介紹下Reflexion設(shè)計(jì)模式。
01 Reflexion的概念
Reflexion本質(zhì)上是強(qiáng)化學(xué)習(xí),可以理解為是Basic reflection 的升級版。Reflexion機(jī)制下,整個(gè)架構(gòu)包括Responder和Revisor,和Basic Reflection機(jī)制中的Generator和Reflector有點(diǎn)類似。但不同之處在于, Responder自帶批判式思考的陳述,Revisor會以 Responder 中的批判式思考作為上下文參考對初始回答做修改。此外,Revisor還引入了外部數(shù)據(jù)來評估回答是否準(zhǔn)確,這使得反思的內(nèi)容更加具備可靠性。
下圖是Reflexion的原理:
- Responder接收來自用戶的輸入,輸出initial response,其中包括了Response、Critique和工具指示(示例圖中是Search)
- Responder將Initial Response給到執(zhí)行工具,比如搜索接口,對Initial Response進(jìn)行初步檢索
- 將初步檢索的結(jié)果給到Revisor,Revisor輸出修改后的Response,并給出引用來源Citations
- 再次給到執(zhí)行工具,循環(huán)往復(fù),直到循環(huán)次數(shù)
- Revisor將最終結(jié)果輸出給用戶
02 Reflexion的實(shí)現(xiàn)過程
下面,風(fēng)叔通過實(shí)際的源碼,詳細(xì)介紹Basic Reflection模式的實(shí)現(xiàn)方法。關(guān)注公眾號【風(fēng)叔云】,回復(fù)關(guān)鍵詞【Reflexion源碼】,可以獲取到Reflexion設(shè)計(jì)模式的完整源代碼。
第一步 構(gòu)建Responder
在下面的例子中,我們先構(gòu)建一個(gè)Responder
為Responder確定Prompt模板,并建立一個(gè)Responder。通過Prompt,我們告訴Responder,“你需要反思自己生成的答案,要最大化嚴(yán)謹(jǐn)程度,同時(shí)需要搜索查詢最新的研究信息來改進(jìn)答案”。
第二步 構(gòu)建Revisor
接下來我們開始構(gòu)建Revisor,通過Prompt告訴Revisor
- 應(yīng)該使用之前生成的critique為答案添加重要信息
- 必須在修改后的答案中包含引用,以確保答案來源可驗(yàn)證
- 在答案底部要添加參考,形式為[1] https://example.com
- 使用之前的批評從答案中刪除多余的信息,并確保其不超過 250 個(gè)字。
第三步構(gòu)建Tools
接下來,創(chuàng)建一個(gè)節(jié)點(diǎn)來執(zhí)行工具調(diào)用。雖然我們?yōu)?LLM 賦予了不同的模式名稱,但我們希望它們都路由到同一個(gè)工具。
第四步構(gòu)建Graph
下面,我們構(gòu)建流程圖,將Responder、Revisor、工具等節(jié)點(diǎn)添加進(jìn)來,循環(huán)執(zhí)行并輸出結(jié)果。
以上內(nèi)容就是Reflexion的核心思想,其實(shí)完整的Reflexion框架要比上文介紹的更復(fù)雜,包括Actor、Evaluator和self-Reflection三塊,上文的內(nèi)容只涵蓋了Actor。
- 參與者(Actor):主要作用是根據(jù)狀態(tài)觀測量生成文本和動作。參與者在環(huán)境中采取行動并接受觀察結(jié)果,從而形成軌跡。前文所介紹的Reflexion Agent,其實(shí)指的就是這一塊
- 評估者(Evaluator):主要作用是對參與者的輸出進(jìn)行評價(jià)。具體來說,它將生成的軌跡(也被稱作短期記憶)作為輸入并輸出獎(jiǎng)勵(lì)分?jǐn)?shù)。根據(jù)人物的不同,使用不同的獎(jiǎng)勵(lì)函數(shù)(決策任務(wù)使用LLM和基于規(guī)則的啟發(fā)式獎(jiǎng)勵(lì))。
- 自我反思(Self-Reflection):由大語言模型承擔(dān),能夠?yàn)槲磥淼脑囼?yàn)提供寶貴的反饋。自我反思模型利用獎(jiǎng)勵(lì)信號、當(dāng)前軌跡和其持久記憶生成具體且相關(guān)的反饋,并存儲在記憶組件中。Agent會利用這些經(jīng)驗(yàn)(存儲在長期記憶中)來快速改進(jìn)決策。
關(guān)于Reflexion完整的實(shí)現(xiàn)方案可參考:https://github.com/noahshinn/reflexion
總結(jié)
Reflexion是我們介紹的第一個(gè)帶強(qiáng)化學(xué)習(xí)的設(shè)計(jì)模式,這種模式最適合以下情況:
智能體需要從嘗試和錯(cuò)誤中學(xué)習(xí):自我反思旨在通過反思過去的錯(cuò)誤并將這些知識納入未來的決策來幫助智能體提高表現(xiàn)。這非常適合智能體需要通過反復(fù)試驗(yàn)來學(xué)習(xí)的任務(wù),例如決策、推理和編程。
傳統(tǒng)的強(qiáng)化學(xué)習(xí)方法失效:傳統(tǒng)的強(qiáng)化學(xué)習(xí)(RL)方法通常需要大量的訓(xùn)練數(shù)據(jù)和昂貴的模型微調(diào)。自我反思提供了一種輕量級替代方案,不需要微調(diào)底層語言模型,從而使其在數(shù)據(jù)和計(jì)算資源方面更加高效。
需要細(xì)致入微的反饋:自我反思利用語言反饋,這比傳統(tǒng)強(qiáng)化學(xué)習(xí)中使用的標(biāo)量獎(jiǎng)勵(lì)更加細(xì)致和具體。這讓智能體能夠更好地了解自己的錯(cuò)誤,并在后續(xù)的試驗(yàn)中做出更有針對性的改進(jìn)。
但是,Reflexion也存在一些使用上的限制:
- 依賴自我評估能力:反思依賴于智能體準(zhǔn)確評估其表現(xiàn)并產(chǎn)生有用反思的能力。這可能是具有挑戰(zhàn)性的,尤其是對于復(fù)雜的任務(wù),但隨著模型功能的不斷改進(jìn),預(yù)計(jì)自我反思會隨著時(shí)間的推移而變得更好。
- 長期記憶限制:自我反思使用最大容量的滑動窗口,但對于更復(fù)雜的任務(wù),使用向量嵌入或 SQL 數(shù)據(jù)庫等高級結(jié)構(gòu)可能會更有利。
- 代碼生成限制:測試驅(qū)動開發(fā)在指定準(zhǔn)確的輸入輸出映射方面存在限制(例如,受硬件影響的非確定性生成器函數(shù)和函數(shù)輸出)。
在下一篇文章中,風(fēng)叔將介紹目前最強(qiáng)大的AI Agent設(shè)計(jì)模式,集多種技術(shù)的集大成者,LATS。
本文由人人都是產(chǎn)品經(jīng)理作者【風(fēng)叔】,微信公眾號:【風(fēng)叔云】,原創(chuàng)/授權(quán) 發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來自Unsplash,基于 CC0 協(xié)議。
- 目前還沒評論,等你發(fā)揮!