第33天:提示工程進階「反思(Reflexion)」
-
1. 反思(Reflexion)的定義▹核心概念:
「反思」是一種能夠協助 LLM 達成自我學習與進化的進階提示技術,主要結合了「思維鏈 (CoT)」與「自我修正(Self-Correction)」。
透過反思Prompt模板的指令,LLM 可在生成內容後,先進行自我修正,然後檢視自我修正與原初生成內容的對照,形成一個「對自我生成內容的系統性回顧、反思與批判」的工作歷程,並將這些反思結果納入未來的決策中,從而實現持續性的自我改進。
也可以說,「反思」是一種持續自動化的回溯與修正機制。
2. 反思(Reflexion)的本質和實施條件
▹「是設置在應用程式的提示工程技術」:
「反思」通常是在應用層 (Application Layer) 實現。透過Prompt模板的設計,來引導、指示 LLM 依序執行「生成」、「評估」、「反思」和「記憶」等步驟,從而協助 LLM 完成整個「反思」歷程。
▹「是一個包含了『自我修正』的工作流」:
「反思」可說是「自我修正」的超集。「反思」首先包含了一次性的自我修正循環,然後再增加了「生成反思」和「記憶儲存」這兩個核心功能,完備了整個「反思」,形成一個閉環的工作流。藉此,LLM 才能對錯誤經驗中得到學習,並避免再犯,實現長期的自我進化。
▹「應用『反思』的 LLM 必須足夠強大」:
雖然「反思」通常是在應用程式端設置,但要實現「反思」仍要求 LLM 本體必須具備以下能力:
(a)強大的推理能力:有能力依據反思Prompt指示,執行複雜的自我評估和反思。
(b)龐大的上下文 (Context):能夠在單一對話中容納大量的「反思報告」,或者有能力調動外部「記憶庫(ex向量資料庫)」,存取過往的經驗。
▹「是多方配合、通力合作的成果」:
「反思」要能實現,以下三方缺一不可:
(a)應用程式端→良好的 Prompt 模板設計,協調流程
(b) LLM 本體→可乘載大上下文,與強大推理能力(如上段所述)
(c)外部資料庫→才能讓反思真正持續生效
3.「反思」的運作流程
前面已提到「反思」是一個包含了『自我修正』的工作流。所以,在開始說明「反思」的運作流程之前,我們可以再多了解一點「反思」與「自我修正」的關聯。同時也先回顧一下「自我修正」的工作流。
▹「自我修正」的升級版
相較於「自我修正」,「反思」是一個更為複雜和持續的過程。不同於「自我修正」是讓 LLM 做出一次性的修正,「反思」不僅止於檢查當前的生成內容(i.e.自我修正),更要求 LLM 進一步地檢視原初生成內容與修改版之間的差異,藉此「反思」LLM的整個思考決策(CoT)過程,然後再將這些反思的內容「記憶」保存下來,如此便可讓 LLM 用以指導未來的決策,避免未來犯同樣的錯誤。
▹「自我修正」的工作流
(請參考之前筆記所做的簡圖)
「反思」的運作流程,就是奠基在上面這個流程之上,再增加了「反思生成」與「記憶儲存」的步驟。下一部分便會展開說明。
▹「反思」的運作流程
作為一個閉環的代理人工作流 (Agentic Workflow),「反思」的運作流程是一個由應用程式(as a Coordinator) 與 LLM(as a content Generator)共同完成的「閉環對話」。
主要階段有:
(a)初始行動 (Initial Action)
◇應用程式端的 Prompt 模板:標準的(1st)初始 Prompt 提供給 LLM。
◇ LLM:產出完整的生成內容和推理過程,回傳至應用程式端。
(b)自我評估 (Self-Evaluation)
◇應用程式端的 Prompt 模板:
將 LLM 產出的「生成內容」+「(2nd)自我檢視 Prompt」( Prompt:請嚴格審查並評估這個生成內容,檢查是否準確、邏輯是否有漏洞、是否完整),一併提供給 LLM。
◇ LLM:產出評估結果,回傳至應用程式端。
(c)反思生成 (Reflexion Generation)
◇應用程式端的 Prompt 模板:
將 LLM 產出的「生成內容」+「評估結果」+「(3rd)反思報告 Prompt」( Prompt:請根據這份評估結果進行反思,並提供「結構化」的「反思報告」包含內容:核心錯誤、為何錯誤、未來改進),一併提供給 LLM。
◇ LLM:
接收到(大量)完整上下文後,LLM 生成一份專屬此事件的「反思報告」,回傳至應用程式端。
(d)記憶儲存 (Memory Storage)
◇應用程式端的 Prompt 模板:
將 LLM 生成的「反思報告」(完整或精要節錄) 儲存在外部資料庫(ex向量資料庫/Vector Database)。
(e)再行動 (Re-Action)
◇應用程式端的 Prompt 模板:
當下一次類似、同質的新請求提出時,應用程式會進行:
1-先執行RAG步驟,搜尋外部資料庫,提取出所有相關的過往「反思報告」。
2-將所有相關「反思報告」+新的用戶請求+Promt (請參照反思報告完成用戶請求),一併提供給 LLM。
◇ LLM:
因參考「反思報告」避免再犯,而能一次就產出優質的生成內容。 (**重要說明:這也正是「反思」與「自我修正」最大區別:因持續記憶並應應用於之後行動,從而避免重蹈覆徹。)