RePrompt:提示詞自動(dòng)化優(yōu)化策略 精華
1. 為什么要提出 RePrompt?
大語言模型問世后,在多項(xiàng)任務(wù)上取得成功,并且通過LLM智能體的研發(fā),拓展了大語言模型在自動(dòng)駕駛、機(jī)器人控制等更廣泛領(lǐng)域的應(yīng)用。
但是這些應(yīng)用的成功,都得益于提示工程的作用。不同的提示詞可以顯著影響任務(wù)的成功率,所以有人提出了APE(自動(dòng)提示工程),可以使得大語言模型自動(dòng)撰寫提示詞,相比簡單提示詞,找到更快找到更好的提示詞。
但是APE在收斂到高質(zhì)量提示詞需要時(shí)間和計(jì)算資源,且當(dāng)前應(yīng)用框架存在局限,難以超越精心編寫的提示。LLMs在理解不同提示對自身的影響上,并不比人類更勝一籌。無法學(xué)習(xí)新發(fā)現(xiàn)的范式,而人類在嘗試如GPT-4或LLAMA-2等流行模型時(shí),能不斷獲得編寫優(yōu)質(zhì)提示的新思路。LLMs在面對潛在失敗時(shí),往往無法識別正確解決方案,僅對提示進(jìn)行微小調(diào)整,而未能實(shí)現(xiàn)真正的改進(jìn)。
所以作者提出了一種新的自動(dòng)提示詞優(yōu)化方法:RePrompt,結(jié)合了CoT(思維鏈)和 ReAct的實(shí)踐,并利用這些結(jié)果的對話歷史更新提示詞,通過總結(jié)并逐句優(yōu)化對話歷史。RePrompt聚焦于使用LLM進(jìn)行特定推理任務(wù)的場景,比如旅行規(guī)劃、輔助編程等。
2. RePrompt的工作原理
RePrompt是一種基于交互式動(dòng)作生成的提示優(yōu)化工具,與傳統(tǒng)的機(jī)器學(xué)習(xí)訓(xùn)練過程相似,但訓(xùn)練對象是輸入模型的提示詞,而非模型參數(shù)本身。
本文致力于通過優(yōu)化提示來完善LLM代理的規(guī)劃能力。我們著眼于任務(wù)已知的LLM代理問題,以O(shè)penAI的多樣GPT模型為例。我們提出的RePrompt方法,是一種基于交互式動(dòng)作生成的提示優(yōu)化工具,
RePrompt訓(xùn)練需要一個(gè)小規(guī)模的推理任務(wù)數(shù)據(jù)集,首先讓LLM使用當(dāng)前的提示生成回答。這個(gè)過程可能包括與反饋提供者如ReAct或Reflexion的交互,但不對交互方式或反饋的準(zhǔn)確性設(shè)限,也稱之為行為循環(huán)。
收集到一批聊天歷史后,將這些歷史數(shù)據(jù)輸入LLM模型中,以提煉出最關(guān)鍵的焦點(diǎn)。這些焦點(diǎn)可能是頻繁出現(xiàn)并導(dǎo)致長迭代的問題,或者是有助于生成更好回答的特定建議(比如ReAct里的thought)。
要求總結(jié)團(tuán)隊(duì)對不同情景進(jìn)行提煉,去除特定情景信息和建議,同時(shí)避免過度總結(jié),以免需要額外推理能力或在LLM對任務(wù)不夠擅長時(shí)引入錯(cuò)誤。
與先前的自動(dòng)提示工程工作相比,如APE和ProTeGi,通過批量總結(jié)來防止提示優(yōu)化過程過度擬合到單一異常數(shù)據(jù)點(diǎn)上。
利用總結(jié)的典型錯(cuò)誤,使用另一個(gè)LLM來更新實(shí)際提示,并要求優(yōu)化器LLM在提出潛在解決方案時(shí)遵循以下規(guī)則:
? 改進(jìn)應(yīng)集中于通用提示部分,而非隨著數(shù)據(jù)變化的情景特定提示。
? 改進(jìn)應(yīng)優(yōu)先識別特定問題是否出現(xiàn)在給定情景中。例如,如果存在預(yù)算限制,而歷史記錄顯示這可能是導(dǎo)致解決方案失敗的主要問題,那么在提供解決方案時(shí),應(yīng)嘗試使用工具計(jì)算典型計(jì)劃的成本。如果違反了預(yù)算約束,應(yīng)優(yōu)先考慮預(yù)算約束;否則,應(yīng)忽略這個(gè)問題。
根據(jù)上面提到的原則,RePrompt的具體實(shí)現(xiàn)步驟如下:
? 1.針對問題提出幾種可能的解決方案。
? 2.逐一分析這些方案,找出最符合規(guī)則的那一個(gè)。
? 3.挑選出最佳方案。與APE及后續(xù)一些研究不同,不要求LLM給出句子的具體數(shù)值評估。
? 4.剖析原提示中的原始步驟,判斷所選方案是否應(yīng)前置于當(dāng)前步驟,或該方案是否為步驟的具體細(xì)節(jié),需要用方案替換當(dāng)前步驟的提示。如果屬于步驟,在此添加提示。
? 5.輸出融合了原始提示和更新提示的最終版本。
圖片
上圖是RePrompt算法的偽代碼實(shí)現(xiàn)。
完成這些步驟后,將獲得一個(gè)經(jīng)過更新的提示,并可以繼續(xù)迭代,類似于機(jī)器學(xué)習(xí)模型訓(xùn)練的更多輪次,直至提示收斂。這個(gè)收斂后的提示詞有助于提升首輪生成結(jié)果的質(zhì)量。
在測試階段,只需應(yīng)用這個(gè)經(jīng)過收斂的更新提示,并在新的測試集上進(jìn)行測試。測試時(shí),不必要求與生成響應(yīng)完全相同的流程,例如,如果反饋生成成本高昂,可以完全從行為環(huán)節(jié)中移除。
請注意,在優(yōu)化過程中,RePrompt僅調(diào)整分步指導(dǎo)環(huán)節(jié),而非問題描述或格式要求的其他部分。這將導(dǎo)致算法最終可能形成兩種提示格式:
? 如果當(dāng)前提示類似ReAct風(fēng)格,已包含分步指導(dǎo),例如ReAct中的思考步驟,用以囊括所有潛在分析,我們的提示將通過不斷添加提示來更新這一思考步驟。與動(dòng)態(tài)引入提示的其他提示工程相比,RePrompt 成為一個(gè)提供更具體分析焦點(diǎn)的算法。
? 如果提示是分步的,如解決數(shù)學(xué)或邏輯問題,RePrompt 很可能向計(jì)劃生成的程序中增加更多步驟。這將為規(guī)劃過程提供更明確的嘗試和關(guān)注方向,引導(dǎo)LLM得出正確答案,并充當(dāng)將高級任務(wù)細(xì)化的規(guī)劃者。
盡管ICL(語境學(xué)習(xí))對推理效果影響很大,但是如果每一步都更新示例會存在一些困難,所以RePrompt沒有對提示詞中的示例進(jìn)行修改。而且示例一般是對LLM的輸出格式、相關(guān)能力的指導(dǎo),而不是如何給出具體的分步提示,所以作者也沒有發(fā)現(xiàn)不更新這些示例帶來的任何實(shí)際問題。
圖片
上圖提示詞提取優(yōu)化提示的損失值。
圖片
上圖提示詞用于在優(yōu)化后的提示中定位并修正占位符。
圖片
3. 局限性
RePrompt 并不一定每次都能成功創(chuàng)建更優(yōu)質(zhì)的提示。作者列舉了常見的幾類錯(cuò)誤:
3.1 不完整的提示詞
圖片
RePrompt 有時(shí)會生成不完整的提示詞。如上圖所示,LLMs可能僅輸出一個(gè)需要用戶自行復(fù)制粘貼補(bǔ)全的提示模板。這種情況通常發(fā)生在初始提示較長時(shí),推測LLMs傾向于盡可能簡短地響應(yīng),卻未能遵循生成完整提示的指令。為解決這一問題,引入了一個(gè)額外的LLM來協(xié)助填充模板,并在附錄中提供了該LLM的提示。這一額外步驟幫助我們在旅行規(guī)劃領(lǐng)域成功生成了完整的提示。我們沒有采用基于規(guī)則的自動(dòng)修復(fù)工具,因?yàn)樯傻奶崾灸0蹇赡馨喾N符號,如 <> 或 {}。為了簡化工作流程,我們讓LLM自動(dòng)識別并替換這些符號。
3.2 偶然的錯(cuò)誤更改
在某些情況下,特定領(lǐng)域的輸出格式可能與常用格式相似,導(dǎo)致LLMs錯(cuò)誤地更改提示的某些部分。例如,在PDDL領(lǐng)域,要求LLMs生成動(dòng)作的前提條件,而非完整的PDDL文件。實(shí)驗(yàn)中,即便提示明確指示LLMs不得更改任何內(nèi)容,尤其是輸出格式,但更新后的提示有時(shí)會錯(cuò)誤地改變輸出格式,如將"Preconditions"的大寫錯(cuò)誤地更改為小寫的"precondition"。為糾正這一問題,依賴語法檢查器的反饋。盡管生成的結(jié)果可能存在錯(cuò)誤,但它們應(yīng)當(dāng)在語法上正確且完整。如果語法分析器無法從LLMs的輸出中找到"Precondition"一詞,即表明使用的提示有誤,會重新運(yùn)行REPROMPT來生成正確的提示。鑒于當(dāng)前代碼的失敗率不到10%,這一臨時(shí)方案已足夠應(yīng)對。
3.3 其他局限性
? 首先,優(yōu)化提示的過程與微調(diào)類似,意味著提示詞的質(zhì)量受限于訓(xùn)練數(shù)據(jù),可能會影響LLMs的泛化能力。換言之,如果訓(xùn)練數(shù)據(jù)中出現(xiàn)的特異性僅存在于特定場景而不具備普遍性,優(yōu)化后的提示可能反而不如原始版本高效。
? 其次,提示有效性依賴于LLM代理能夠使用的全面工具集。由于優(yōu)化策略直接源自LLMs,而非通過搜索算法得出,REPROMPT可能會提議使用一些在實(shí)際環(huán)境中并不可用的統(tǒng)計(jì)工具??紤]將LLM自行編碼那些額外的、常用但當(dāng)前不可用的工具,作為未來研究的方向。
? 再者,無法控制的反饋生成器有時(shí)可能產(chǎn)生無效甚至錯(cuò)誤和誤導(dǎo)的反饋。鑒于REPROMPT基于反饋進(jìn)行總結(jié),如果反饋經(jīng)常出現(xiàn)錯(cuò)誤,REPROMPT會將這些錯(cuò)誤納入提示中。由于本文未考慮從提示中移除無效步驟,這樣的錯(cuò)誤將徒增使用的標(biāo)記數(shù)量,卻無助于提升結(jié)果質(zhì)量。未來的研究可以考慮引入基于搜索的機(jī)制來識別并修復(fù)這類錯(cuò)誤,但這可能需要更多來自環(huán)境的真實(shí)反饋,并可能限制其在特定領(lǐng)域的應(yīng)用。
? 最后,RePrompt 在提示階段就進(jìn)行規(guī)劃,這可能不適用于需要完全不同處理流程的廣泛領(lǐng)域,例如解決數(shù)學(xué)問題的LLM代理。然而,對于特定任務(wù),如利用LLM代理解決高中幾何問題,我們的方法能夠高效地學(xué)習(xí)規(guī)劃,實(shí)驗(yàn)結(jié)果已經(jīng)證明了這一點(diǎn)。
? 論文原文: https://arxiv.org/abs/2406.11132
本文轉(zhuǎn)載自??大語言模型論文跟蹤??,作者:HuggingAGI
