從 AlphaGo 說起

2016 年在 Appier,有一次跟底下的小夥伴聊天,他突然丟下一句話:

「不能聊了,我要去看 AlphaGo 對李世石的直播了,這可能會改變 AI 的一切。」

後來 AlphaGo 沒有改變世界,但是徹底改變了圍棋,從一個高度嚴肅、菁英化的競技運動,變成了新時代「戰鷹」這類網紅的舞台。(PS. 沒有貶意,圍棋界的精英不止一次公開講,非常感激戰鷹為圍棋續命)

但 AlphaGo 背後真正關鍵的技術——MCTS(蒙地卡羅樹搜尋),當時其實沒有在工程界掀起太大浪花。原因很簡單:適合的場景不多。於是大家記住了「深度學習」,卻慢慢忘了「搜尋」。


為什麼 MCTS 現在又香起來了?

直到現在,我們大量在做 AI Agent。

而 Agent 面對的問題,跟傳統 chatbot 完全不同。不是聊一句話就好,而是高複雜、多步驟、不能亂猜的決策任務:寫程式、規劃流程、調用工具、處理失敗、修正策略。

這些事情,用「一條路走到黑」的線性 Agent,其實非常容易翻車。

像常見的 ReAct 架構,本質還是:想 → 做 → 想 → 做。中間假設錯了,Agent 幾乎不會回頭,只能一路錯下去,最後 hallucinate。

這時候,MCTS 又開始香起來了。只是這一次,它披上了語言模型的外衣,變成:LATS(Language Agent Tree Search)


LATS 的核心概念

LATS 的核心概念很簡單,但影響很大:不要只讓 Agent 產生一個答案,而是同時探索多條可能路徑,並從中選出最好的。

它讓 Agent 像下棋一樣思考:多想幾步、走錯能回頭、失敗會反思。而且不是靠「想像評分」,而是靠真實世界的回饋——錯誤訊息、執行結果、測試是否通過。

這跟傳統 Agent 的差異是本質性的。傳統 Agent 在決策當下只看「當前這一步」,不會推演「接下來會發生什麼」。LATS 則是在行動之前,就已經在腦中模擬了多種可能的未來。

LATS 樹狀搜尋示意圖


LATS 的四個核心步驟

LATS 的運作邏輯繼承自 AlphaGo 的 MCTS,但針對語言模型做了調整:

選擇(Selection): Agent 不會盲目探索所有可能性,而是根據「價值分數」選擇最有希望的節點往下走。這個分數怎麼來的?可以用 LLM 評估,也可以用環境反饋(比如測試通過率)。

擴展(Expansion): 到達選定節點後,Agent 會生成多個可能的下一步動作,這就在決策樹上長出了新的分枝。不是只想一個答案,而是同時考慮多種可能。

LATS 擴展步驟

評估與反思(Evaluation & Reflection): 這是 LATS 最獨特的地方。Agent 執行動作後,會觀察環境的反饋。如果失敗了,LATS 會生成一段「自我反思」,分析失敗原因、真正問題是什麼、下次應該怎麼做。這段反思會被記錄下來,幫助 Agent 在未來的搜尋中避開類似的錯誤。

LATS 評估與反思步驟

反向傳播(Backpropagation): 一旦得到結果,Agent 會將這個結果的「分數」反向傳遞回樹的根部。成功路徑上的節點勝率會增加,失敗路徑上的節點勝率會下降。下次遇到類似問題,Agent 就知道該往哪個方向走。

LATS 反向傳播步驟


LATS vs 其他 Agent 架構

這是我整理的關鍵差異:

特性 ReAct Tree of Thoughts LATS
決策模式 線性(想 → 做 → 想 → 做) 樹狀結構 樹狀結構 + 外部反饋
回溯能力 無(錯了就錯了) 強(基於環境反饋)
從錯誤學習 強(語言反思機制)
外部環境互動 無(純推理)
適用場景 簡單工具調用 邏輯推理、數學題 程式碼生成、複雜決策

很多人會問:LATS 跟 Tree of Thoughts(ToT)有什麼不同?

關鍵差異在於「外部環境反饋」。ToT 純粹靠 LLM 內部的「自我評估」來判斷哪條路比較好,沒有真正執行動作,沒有環境反饋。但 LLM 的自我評估常常太過樂觀,它可能覺得自己的推理很完美,但跑起來就是錯的。

LATS 用外部環境「打臉」LLM 的幻覺,這是關鍵。它會真正執行動作(跑程式碼、呼叫 API),觀察結果,用真實的成功或失敗來校準評估。


坦白說:LATS 的代價

LATS 的缺點其實非常明確,不需要遮掩:

慢。 LATS 需要多輪搜尋、評估、反思,本質上就是用時間換成功率。傳統 ReAct Agent 可能 8-10 秒就有結果,LATS 可能需要 30-60 秒,因為它要探索多條路徑。

貴。 分支越多、反思越深,Token 消耗就越可觀。粗估下來,LATS 的成本大約是 ReAct 的 5-8 倍。每個節點可能展開 3-5 個選項,每個節點都需要 LLM 評分,失敗時還要生成反思。

架構複雜。 要處理狀態、價值函數、回溯邏輯,不是套個 prompt 就能搞定。用 LangGraph 之類的框架可以簡化,但還是比 ReAct 複雜很多。需要管理樹狀結構的狀態、節點的展開/回溯邏輯、價值分數的更新、終止條件的判斷。

不適合所有任務。 簡單任務用 LATS,反而是過度設計,還可能拖慢系統。「幫我翻譯這句話」、「今天天氣如何」這種問題,用 LATS 是浪費資源。


什麼時候該用 LATS?

也正因為有這些代價,LATS 特別適合這類場景:

程式碼生成與自動除錯。 這是 LATS 最典型的應用場景。寫程式本身就是一個需要多次嘗試、不斷修正的過程。LATS 可以同時探索多種實作方式,用測試結果來判斷哪條路走得通。

多步驟任務規劃。 需要規劃複雜流程的任務,每一步的決策都會影響後續的可能性。LATS 可以在行動之前就推演多種可能的未來,避免走進死胡同。

高風險、低容錯的企業決策。 法律文件審查、金融合規檢查、醫療資訊查詢。這些場景的特點是:錯誤的成本遠高於計算成本。多花 30 秒和幾毛錢,換來更可靠的答案,是划算的。

成本錯一次就很痛的自動化流程。 批次處理、背景任務、不需要即時回應的場景。用戶提交任務後可以去做別的事,等 Agent 探索完再回來看結果。

反過來說,需要即時回應的聊天機器人、客服對話,或是成本敏感的免費服務,就不適合用 LATS。


與 Deep Research 架構的關係

上一篇 Agent 模式 Part 3,我們討論了 Deep Research 架構。有人可能會問:這兩者有什麼關係?

兩者都引入了「自我修正」的能力,但切入角度不同:

Deep Research 的重點是「事後驗證 + 迭代」。執行 → 審查 → 不通過 → 重新執行 → 審查 → 通過 → 輸出。它用 Critic 節點做事後審查,發現問題再重來。

LATS 的重點是「事前探索 + 回溯」。推演多條路 → 選最好的 → 走到死路 → 回溯 → 換條路 → 成功 → 輸出。它在行動之前就探索多種可能,走錯了可以回頭。

理論上兩者可以結合:用 LATS 做搜尋,用 Critic 做最終驗證。但這樣複雜度會更高,成本也會更高。我目前沒有實際測試過這種組合,留待未來驗證。


關鍵洞察

LATS 的本質是「用計算換準確性」。 這不是「更好的架構」,而是「不同的權衡」。更多的搜尋等於更高的成功率,更多的回溯等於更少的死胡同,代價就是更多的時間和金錢。選擇用不用,取決於你的業務場景對「錯誤」的容忍度。

反思機制是 LATS 的靈魂。 沒有反思,LATS 只是「暴力搜尋」——嘗試所有可能性直到找到對的。有了反思,LATS 變成「智慧搜尋」——從失敗中學習,下次避開類似的坑。

外部環境反饋是關鍵。 這是 LATS 跟 Tree of Thoughts 的核心差異。LLM 的自我評估常常不可靠。用環境反饋(測試結果、API 回應)來「校準」評估,才能得到可靠的價值分數。

適材適用,不是所有任務都需要 LATS。 大部分任務用 ReAct 就夠了。LATS 適合「錯誤成本高、需要探索多種可能性」的場景。


結語

MCTS 沒有消失,它只是等到 AI Agent 這個足夠複雜的舞台,才真正派上用場。

LATS 是我目前看到最「像人類專家」的 Agent 架構。專家在處理複雜問題時,不會只看眼前這一步,而是會推演多種可能性、評估風險、遇到死路就回溯換方向。

這個能力在 AI Agent 上的實現,可能是從「勉強能用」到「真正可靠」的關鍵一步。


常見問題 Q&A

Q: LATS 跟 Chain-of-Thought (CoT) 有什麼不同?

CoT 是讓 LLM「一步步推理」,但還是線性的——推完一條路就結束。LATS 是「同時推演多條路」,而且可以回頭。CoT 像是一個人一直往前走不回頭,LATS 像是在迷宮裡有地圖、可以試錯、可以回溯。

Q: 我想在現有的 Agent 框架上加入 LATS,該怎麼開始?

最簡單的起點是 LangGraph。它原生支援樹狀結構和狀態管理,有現成的 LATS 範例可以參考。不建議從零開始實作,因為狀態管理和回溯邏輯比想像中複雜。另外,先在小規模任務上測試,確認成本和效益符合預期再擴大。

Q: LATS 的「反思」跟 Reflexion 有什麼關係?

LATS 的反思機制其實借鑑了 Reflexion 的概念。Reflexion 是讓 Agent 在失敗後生成語言化的「經驗教訓」,下次任務時帶入 context。LATS 把這個機制嵌入樹搜尋中——每次探索失敗,就生成反思,附加到該節點,影響後續的路徑選擇。

Q: 成本這麼高,有沒有辦法降低?

有幾個方向:限制搜尋深度和廣度(比如最多 3 層、每層最多 3 個分支)、用小模型做初步評估再用大模型精煉、對重複出現的狀態做快取。但本質上 LATS 就是「用錢換準確率」,如果任務不值得這個成本,就不該用 LATS。

Q: LATS 適合用在 RAG 系統嗎?

可以,但要看場景。如果是「查一個事實」這種簡單檢索,用 LATS 太重。但如果是「根據多個文件做複雜推理」或「需要多次查詢不同資料源」的任務,LATS 可以幫助 Agent 探索不同的檢索策略,找到更好的答案。


延伸閱讀


AI Agent 系列導航

本文是 AI Agent 完整指南 的一部分。

相關文章: