Self Discover框架,萬萬想不到AI Agent還能這樣推理
前面我們分享了Basic Reflection這種偏重反思的AI Agent設(shè)計(jì)模式,在面對復(fù)雜的問題時(shí),就需要更強(qiáng)大的Self-discover設(shè)計(jì)模式來進(jìn)行。這篇文章,作者的分享一定不能錯過。
在上篇文章《AI大模型實(shí)戰(zhàn)篇:Basic Reflection,AI Agent的左右互搏之術(shù)》中,風(fēng)叔結(jié)合原理和具體源代碼,詳細(xì)介紹了第一種偏重反思的AI Agent設(shè)計(jì)模式,即Basic Reflection。
Basic Reflection 的思路非常樸素,使用成本較低,但是在實(shí)際應(yīng)用中,Basic Reflection面對一些比較復(fù)雜的問題時(shí),需要Generator具備更強(qiáng)大的推理能力。
在這篇文章中,沿著“更強(qiáng)大的推理能力”這條優(yōu)化路線,風(fēng)叔將介紹Self-discover設(shè)計(jì)模式。這個(gè)設(shè)計(jì)模式非常有意思,相信看到最后,大家會發(fā)現(xiàn)令人驚奇的結(jié)果。
一、Self Discover的概念
Self-Discover 是由Google的研究人員提出的一種AI Agent框架,可實(shí)現(xiàn)自動發(fā)現(xiàn)和構(gòu)建推理結(jié)構(gòu),以解決各種推理任務(wù)。這種方法的核心是一個(gè)自發(fā)現(xiàn)過程,它允許大型語言模型在沒有明確標(biāo)簽的情況下,自主地從多個(gè)原子推理模塊(如批判性思維和逐步思考)中選擇,并將其組合成一個(gè)推理結(jié)構(gòu)。
Self-Discover框架包含兩個(gè)主要階段,自發(fā)現(xiàn)特定任務(wù)的推理結(jié)構(gòu)、應(yīng)用推理結(jié)構(gòu)解決問題。如下圖所示:
階段一:自發(fā)現(xiàn)特定任務(wù)的推理結(jié)構(gòu)
主要包含三個(gè)主要動作:選擇(SELECT)、適應(yīng)(ADAPT)和實(shí)施(IMPLEMENT)。
選擇:在這個(gè)階段,模型從一組原子推理模塊(例如“批判性思維”和“逐步思考”)中選擇對于解決特定任務(wù)有用的模塊。模型通過一個(gè)元提示來引導(dǎo)選擇過程,這個(gè)元提示結(jié)合了任務(wù)示例和原子模塊描述。選擇過程的目標(biāo)是確定哪些推理模塊對于解決任務(wù)是有助的。
適應(yīng):一旦選定了相關(guān)的推理模塊,下一步是調(diào)整這些模塊的描述使其更適合當(dāng)前任務(wù)。這個(gè)過程將一般性的推理模塊描述,轉(zhuǎn)化為更具體的任務(wù)相關(guān)描述。例如對于算術(shù)問題,“分解問題”的模塊可能被調(diào)整為“按順序計(jì)算每個(gè)算術(shù)操作”。同樣,這個(gè)過程使用元提示和模型來生成適應(yīng)任務(wù)的推理模塊描述。
實(shí)施:在適應(yīng)了推理模塊之后,Self-Discover框架將這些適應(yīng)后的推理模塊描述轉(zhuǎn)化為一個(gè)結(jié)構(gòu)化的可執(zhí)行計(jì)劃。這個(gè)計(jì)劃以鍵值對的形式呈現(xiàn),類似于JSON,以便于模型理解和執(zhí)行。這個(gè)過程不僅包括元提示,還包括一個(gè)人類編寫的推理結(jié)構(gòu)示例,幫助模型更好地將自然語言轉(zhuǎn)化為結(jié)構(gòu)化的推理計(jì)劃。
階段二:應(yīng)用推理結(jié)構(gòu)
完成階段一之后,模型將擁有一個(gè)專門為當(dāng)前任務(wù)定制的推理結(jié)構(gòu)。在解決問題的實(shí)例時(shí),模型只需遵循這個(gè)結(jié)構(gòu),逐步填充JSON中的值,直到得出最終答案。
二、Self Discover的實(shí)現(xiàn)過程
下面,風(fēng)叔通過實(shí)際的源碼,詳細(xì)介紹Self Discover模式的實(shí)現(xiàn)方法,具體的源代碼地址可以在文章結(jié)尾處獲取。在手機(jī)端閱讀源碼的體驗(yàn)不太好,建議大家在PC端打開。
第一步 定義Select、Adapt和Implement
第一步要做的事情,是前面所講的階段一,定義好select、adapt和implement這三個(gè)過程。
首先,定義select。給Select的prompt是,“對于給定的任務(wù),找出最相關(guān)的reasoning module,即確定通過什么方法來解決任務(wù)”
然后,定義adapt。給Adapt的prompt是,“在不需要給出完整解決方案的情況下,讓大模型調(diào)整上一步得到的reasoning module,以更好地適應(yīng)任務(wù)?!?/p>
接下來,定義implement。給Implement的prompt是,“在不需要給出完整解決方案的情況下,利用上一步得到的優(yōu)化后的reasoning module,創(chuàng)建一個(gè)可執(zhí)行的推理結(jié)構(gòu)?!?/p>
第二步 執(zhí)行推理結(jié)構(gòu)
第二步要做的事情,就是前面所講的階段二,應(yīng)用這個(gè)推理結(jié)構(gòu)獲得最終答案
第三步 提出問題,開始推理
第三步就是將這個(gè)過程進(jìn)行推理實(shí)現(xiàn),如下面的代碼所示,這一步非常關(guān)鍵,大家可以逐條仔細(xì)看:
這段代碼非常簡單。首先,我們提出了39種reasoning modules,即推理的具體方法,大家也可以自己提煉出一些推理方法,通過prompt告知給Agent。
然后,我們提出一個(gè)具體的推理任務(wù):“Lisa 有 10 個(gè)蘋果。她給了朋友 3 個(gè)蘋果,然后從商店買了 5 個(gè)蘋果。Lisa 現(xiàn)在有多少個(gè)蘋果?”
然后大模型會自動選出最合適的推理方法。實(shí)踐中發(fā)現(xiàn),大模型選擇了方法9和10。
接下來,針對目標(biāo)任務(wù),大模型自動優(yōu)化推理方法的描述。
然后,大模型自動給出了具體的推理結(jié)構(gòu)。
至此,Self Discover的原理和流程就介紹完了。
風(fēng)叔在嘗試這個(gè)case之前,完全沒想到大模型還能在給定的推理方法中,自主選擇最合適特定的問題的推理方法,并完成推理結(jié)構(gòu)和推理語言的輸出,這項(xiàng)能力確實(shí)是讓風(fēng)叔眼前一亮。通過這種推理方式,未來Agent就能解決更加多樣化的問題,因?yàn)槿魏晤愋偷膯栴},總能有其對應(yīng)的推理和思考方式。
大家可以關(guān)注公眾號【風(fēng)叔云】,回復(fù)關(guān)鍵詞【SD源碼】,獲取self discover設(shè)計(jì)模式的完整源代碼,然后自己嘗試一些更復(fù)雜的提問,看看大模型的回答效果。
總結(jié)
整個(gè)Self-Discover的關(guān)鍵在于,它允許模型在沒有人類干預(yù)的情況下,自主地生成適合特定任務(wù)的推理結(jié)構(gòu)。這樣不僅提高了模型的推理能力,而且提高了推理過程的可解釋性。通過這種方式,模型能夠更有效地處理復(fù)雜和多樣化的任務(wù)。
本篇文章提到的例子,雖然結(jié)構(gòu)很清晰,但不足之處在于沒有使用Tools。對于需要使用搜索工具、數(shù)學(xué)工具等外部工具的場景,我們也可以讓大模型在adapt環(huán)節(jié)給出適合解決目標(biāo)任務(wù)的外部工具,然后在后續(xù)過程中執(zhí)行。
在下一篇文章中,風(fēng)叔將介紹另一種優(yōu)化Basic Reflection的方式,增加強(qiáng)化學(xué)習(xí),Reflexion。
本文由人人都是產(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ā)揮!