ChatGPT 一推出沒多久,我們就在市面上看到有人用大型語言模型打造出一個虛擬村莊 - 史丹福的虛擬小鎮。這個時候筆者就一直對於它背後的原理,AI Agent (智慧型代理)很好奇。再來,像是 ChatGPT 最近在 11 月才推出的 GPTs,它背後的重要支柱之一,也是用了 AI Agent 的基本架構。從史丹福的虛擬小鎮到 ChatGPT 一路推出 GPTs,市場上的這些連續動作讓我們清楚地看到,AI Agent 在大型語言模型應用領域裡,以及逐漸扮演了一個相關關鍵的角色。接下來的幾篇文章,我們就會深入探討這個主題,跟大家一起來了解一下什麼是 AI Agent 以及它的核心原理。
什麼是 AI Agent?
那麼,如何定義 AI Agent(智慧型代理)呢?簡而言之,AI Agent 是一種能夠自動完成任務、學習和適應其環境的智慧系統。這些代理通過一個簡化的模仿生物的架構來感知外部環境、做出決策,進而與環境進行互動。智慧型代理已經逐漸演變為人工智慧領域的一個重要分支,它們透過自主性、創造力和協作能力,推動了技術創新和應用變革。這些代理不僅能夠獨立解決複雜問題,與人類及其他代理協作,提高效率和產出,而且在模擬人類行為、處理大量數據甚至提供情感陪伴等方面,正逐步改變我們的工作和生活方式。
AI Agent 的工作流程
一個 AI Agent 的基本工作流程可分為以下幾個步驟:
感知和分析(Perception):AI Agent 首先需要對其環境進行感知,這可能涉及數據的收集和分析。
決策和計劃(Planning):基於收集到的信息,Agent 將制定計劃或作出決策。
執行(Action):按照計劃,Agent 將執行相應的動作。
學習和適應(Feedback):Agent 會根據執行結果和環境的反饋進行學習和行為調整。
這些步驟使 AI Agent 能夠在多變的環境中有效工作,並隨時間進步提升其性能。
從這個流程圖,我們可以如此理解 AI Agent 的整體運作機制。在處理任務之前,AI代理首先要感知(Perception) 當前環境。這包括了解系統的現狀 (State)、回顧過往經驗 (Experience),並利用賦予的世界知識 (World Knwoledge)。這些信息形成了全面的背景知識 (Context),使AI代理能夠為我們制定合適的計劃和做出決策 (Plan)。然後,我們設定的策略保證模組 (Policy ) 將確保代理的行動不會脫離控制或逾越許可的行為範圍。一旦通過這一模組,AI Agent 就會採取適當的行動,如果需要與外界互動 (Action),則會透過工具 (Tool Use) 來執行。最終,AI代理與環境的互動將引來新的反饋 (Feedback),這些反饋通過代理的觀察 (Observation )被感知,並且將需要記住的信息選擇性地儲存於適當的記憶模組中。
AI Agent 各元件的說明
在先前的段落中,我們概述了 AI Agent 的整體運作流程。現在,我們將深入探討各個組件的具體細節。
規劃單元的細節
AI Agent 的規劃單元,核心是建立在一個先進的大型語言模型上,充當推論引擎。這個單元的主要職責可以分為兩個主要類別:
任務分解與子目標的設定: 這部分的主要目標是將綜合性的任務細分成更小、更具體的子目標。這就像是將一項抽象的工作具體化,以便更容易處理和執行。
自我評估與作業改進: 這一工作主要涉及利用反饋信息來提升和反思AI代理自身的性能。這一步骤對於使 AI Agent 更加人性化至關重要。想想看,即使是我們人類,面對一項具有挑戰性的任務,也常常是通過嘗試、調整並改進來一步步接近正確的目標,不是嗎?
為了讓大家對上述的規劃單元有一個更具體的了解,讓我們通過一些基礎的實例來進行說明。
任務分解實例 - 思維鏈技術
談到任務分解,一個經典的手段就是所謂的「思維鏈」技巧。這個概念指的是AI在面對問題時,不會立刻給出結論,而是會經過一系列類似於人類的中間思考步驟。這個過程可以比喻為解數學題目時,我們會把每一步的計算過程寫下來。
例如,當問AI:“小明原先有5顆蘋果,再買了3顆,他現在共有幾顆?”一般的AI可能會直接給出“8顆”的答案。但是運用了思維鏈的AI會這樣回答:“小明開始時有5顆蘋果,他又買了3顆,5加上3等於8,因此他現在有8顆蘋果。”
這種方法的優勢是什麼?首先,它使得AI的推理過程變得更加透明,使我們能夠更清楚地理解AI如何得出其答案。其次,對於較為複雜的問題,這種方法尤其有效,因為它允許AI分步驟地解題,而非嘗試一躍到達終點
自我反省模型示例 - ReAct 模型
談到自我反省,ReAct(Reason+Act)模型堪稱是此領域的經典之作。這是一個結合了推理與行動的策略,特別針對解決複雜問題或任務。在《ICLR 2023》的會議論文中,這個模型被詳細闡述。文獻描述了ReAct方法如何改良了傳統的機器學習模型,它不單單依靠直接的行動輸出,而是將推理過程與行動決策緊密結合。
ReAct模型首先進行推理,探索解決問題或完成任務的途徑。這一步骤深入分析問題,制定解決方案或行動計劃。然後,根据這一計劃採取相應行動。這個方法的核心在於,它融合了推理與行動,讓系統能更智能和靈活地應對複雜情境。
以下是ReAct論文中的一個實例,透過這個例子可以讓我們對其優勢及實際運作方式有更深入的了解:
這項任務主要利用HotspotQA問答集中的問題來考驗AI代理的解題能力,下面是完整的問答過程:
(1)問題:太陽馬戲團表演Mystere的酒店有多少客房?
HotpotQA標籤:2,664 (這是過時的答案)
(1a)標準回答
答案:3,000 ❌
(1b)僅限思維鏈
推理:讓我們分步驟來思考。太陽馬戲團表演Mystere的酒店是Treasure Island。Treasure Island有2,885個客房,因此答案是2,885。
答案:2,885 ❌
(1c)僅限行動
行動1:搜尋[Cirque du Soleil]
觀察1:Cirque du Soleil是一家加拿大娛樂公司...
行動2:查詢[Mystere]
觀察2:沒有相關結果
行動3:搜尋[Mystere(Cirque du Soleil節目)]
觀察3:找不到相關信息...
行動4:搜尋[Mystere(Cirque du Soleil)]
觀察4:Mystere(發音為my-steer)是其中一個...
行動5:查詢[Treasure Island Hotel and Casino]
......(沒有結果)❌
(1d)ReAct(推理+行動)
思考1:我需要搜尋太陽馬戲團的Mystere表演,確認它的酒店,然後找出該酒店的客房數量。
行動1:搜尋[Cirque du Soleil表演Mystere]
觀察1:找不到Cirque du Soleil表演Mystere。相關信息包括:[Cirque du Soleil]...
思考2:要找到酒店,我應該搜尋Mystere(Cirque du Soleil)。
行動2:搜尋[Mystere(Cirque du Soleil)]
觀察2:Mystere(發音為my-steer)是...在Treasure Island Hotel and Casino的專門劇院進行...
思考3:Mystere在Treasure Island Hotel and Casino的專門劇院上演。因此我需要搜索Treasure Island Hotel and Casino以找出酒店的客房數量。
行動3:搜尋[Treasure Island Hotel and Casino]
觀察3:Treasure Island Hotel and Casino...共有2,884個客房和220個套房...
思考4:Treasure Island Hotel and Casino有2,884個客房和220個套房。所以總數是3,104。
行動4:確認答案[3,104]
透過這個例子,我們可以觀察到ReAct模型在問答過程中的優勢及其運作的精細之處。ReAct之所以效率較高,是因為它強調了在採取任何行動前進行全面的推理分析。這種方法激勵解題者(在這裡指的是 AI Agent)進行更有系統、有目的的探索,而非單憑直覺或初步印象。同時,它要求解題者在過程中不斷自我檢視和調整答案,有助於發現並糾正錯誤,從而提高準確性。在例子(1d)中,通過逐步分析和驗證,最終得到了正確的結果,這證明了ReAct模型在保證解題質量和效率方面的顯著優勢。
記憶單元的功能
在AI代理的運作中,記憶模式對其功能至關重要,通常分為兩類。第一類是短期記憶,也稱作工作記憶。舉例來說,當我們在提示訊息時利用上下文 (In-context learning)帶入的資訊進行學習,即是運用了短期記憶的方式。第二類是長期記憶,這更像是我們人類一生中幾乎能夠存儲無限信息的能力。長期記憶的一個實例是檢索增強式生成(Retrieval Augmented Generation, RAG)中使用的向量資料庫檢索,這為 AI Agent 提供了一個幾乎無限的存儲空間。當 AI Agent 需要特定資料時,通過一個 “回想” 機制,這些資料會被載入並供 AI Agent 進一步應用。
動作執行單元的細節
所謂 AI Agent 的 “動作” (Action) 本質上可以視為工具的運用。工具使用的核心價值在於它使 AI Agent 能夠與外部環境進行交互,比如網頁搜尋、進行精密計算,或是執行外部代碼等。
對於 ChatGPT 的使用者來說,工具的應用概念應該已經相當熟悉。如果你是ChatGPT的付費用戶,你可能已經使用過插件(plugins),或者是最近推出的GPTs系列中包含的設定檔中的動作(action)——這些都是動作執行單元的實例。此外,OpenAI API版本中的 function calling,或者LangChain的 Tools,同樣也就是這個概念。
結論
在上一段,我們簡要介紹了AI代理的關鍵組件,特別是記憶單元和動作執行單元。由於篇幅所限,我們將不在這篇文章中展開詳細說明。然而,隨著 ChatGPT GPTs 的推出,如果您已經付費使用 ChatGPT,並且參考過我們先前的文章: 如何建立自己的 GPTs - 以 Vercel 以及我的待辦清單為例,您可能會想起建立 GPTs 的設定界面(如下圖所示)。
圖中的(1)就是我們給予 GPTs 的角色設定提示,對建立 GPTs 比較熟悉的朋友,或許你也有嘗試過把比較屬於短期的參考資料記載於此。而(2)可以對應到前文提到的長期記憶單元,(3)則代表了 GPTs,即 AI Agent 與外部環境互動的工具,在此被稱作Action。
閱讀至此處,希望大家對 AI Agent 以及其技術細節有了更加深刻的理解。今天的介紹就到此為止,後續我們將分享更多關於 AI Agent 的詳細文章。感謝大家的閱讀。
good article. the reference list is also contentful. thanks,