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