DaoDaoDaoDaoDao

DaoDaoDaoDaoDao

從 Self-Healing Code 到 Generative Agents

image

上篇文章 寫完之後,這個話題有了更高的熱度,先後有 Self-hearling Code、BabyGPT、AutoGPT、OpenGPT 到 Generative Agents 等一大堆相關論文和應用。
不得不再做一篇總結了。。。

[toc]

Self-Healing Code#

就像自然界許多令人羨慕的具有自癒能力的生物一樣。。。早在大強人工智能時代來臨之前,能夠寫出在運行階段具有自癒能力的代碼,就一直是軟件開發者的追求。

一種最簡單的設計可能是 優雅降級(Graceful Degradation),比如考慮到 OpenAI 的服務經常不穩定,那麼在系統檢測到 OpenAI API 掛掉的時候,調用一個 local 的 LLM 作為補充,就是一種構建優雅降級的方法,類似 Windows 裡的安全模式?

不僅工程上如此,事實上我們去評價一個算法的好壞也會採取同樣的準則... 它所需要特判的 Conner Cases 更少、但能處理的情況更多、且複雜度更優、所需知識更少、代碼更優雅。。。

(。。符合上述一種或幾種的情況,可能很多,但是似乎我們很難找到一種完全被上位替代的情況(雖然在貪心構造題裡很常見。。)。。。也許 希爾排序 是個例子?。。反正我是覺得它只有分析起來還饒有趣味。。。實踐中應該沒人會用。。。)

但這當然還遠遠不夠,作為一名 算法競賽敗犬,ChatGPT 最為有趣的性能,我之前認為就是它可以解各種算法題了。
為此我還特地跑到 Atcoder、Project Euler 這樣題面比較短的地方進行了十分多的測試。

但是偶爾 TA 所生成的代碼居然是會無法通過編譯的... 然而在你稍微的指導下,甚至你只是告訴它沒通過編譯這件事,連哪裡出錯都不用告訴 TA,很多時候 TA 也能完成 Debug(什麼小黃鴨調試法...)。

(但是我們人類不也是這樣嗎?就像大家在自己的 ACM 模板裡會加一些注意事項,最後一行時,提交前再 Think twice。。。其實原理也是一樣的。。。什麼信息都沒提。。。但是依然會提高準確率。。。。)

然而就像人們第一次看到 這條推文 時一樣,大家對 LLM 能夠在業務層面實現這種自動 Debug 代碼的能力時依然是非常震驚的!
隨著各種 Advanced Prompting 方案的出現。。。使用各種工具變得十分容易了,因而構建這樣具有 Self-healing Code 的 Agent 也不是什么高級的秘密了。。。

image

—— 特別是,我們證明 Self-Debugging 可以教大型語言模型進行橡皮鴨式(rubber duck)的調試;也就是說,在沒有任何關於代碼正確性或錯誤信息的反饋的情況下,模型能夠通過用自然語言解釋生成的代碼來識別其錯誤。

雖然小黃鴨調試法很棒,但是有編譯器的幫助顯然是更好的,於是這樣就有了一種非常暴力的進行 Self-Debugging 的思路,生成一段代碼,交給編譯器,根據反饋進行 Debug,直到沒有出錯 —— 其實我們人類一開始也是這樣 Debug 的。

結合 CI/CD,我們不難構建出一個幫助 Repo 在部署階段進行一定程序自動 Debug 的 Github Bot。

那麼既然我們已經能夠實現 Self-Debugging、和 Self-Debugging with CI/CD,那麼我們似乎只要利用類似的思路,把過程放在程序運行時,就可以實現真正意義上的 Self-Healing Code 了!

(但我還沒找到更合適的例子...)

Autonomous Agents#

上文提到,在 AI 開始會使用工具後,下個 milestone 就是自治了,這或許是讓 AI 可以脫離碳基生命的控制,邁向自由的第一步。。。
Autonomous 這個詞,相信大家一定不陌生吧 w。上個周期中於我來說,最感興趣的就是來自的 DeFi 的可組合性,和來自 DAO 的自治(Autonomous)組織,這兩點了。
然而在這個周期中,可組合性早已被 ChatGPT 奪取了(連 Uniswap 都做起了 —— 錢包),而現在就連 Autonomous 也要被它們奪取了。。。

而我們只需要沿用上文所提到的 Self-Debugging 幾乎一樣的思路,結合更多的外部工具,讓 Agent 自己進行連續的多輪自動對話,就可以製造出 Autonomous Agents 了。
目前影響力最大的似乎就是 AutoGPT 了。

考慮到這個東西的調用目前很貴,我們可以多考察一些大家分享出來的例子囧。

不過稍微閱讀其代碼之後,其實核心和之前的 HuggingGPT 一樣,依然是利用 hard-code 的工具集、prompt template 以及 "The output must be in a strict JSON format" 的 Advanced Prompting Engineering ...

於是這裡我們有了新的 Open Problem,能否利用 LLM 在運行階段的湧現能力,以讓 Agent 發現和學會使用新的工具?

Generative Agents#

既然 AI 可以使用工具,也可以互相調用,甚至在無監督的環境下,自我運行迭代,那麼另一個更為有趣的研究方向出現了,能放讓 AI 之間互相通信,通過協作解決更難的問題,甚至以實現一些像人類社群,或者某些動物那樣的社會化。
不過考慮到現實環境畢竟過於複雜,不妨考慮建立一些沙盒環境進行實驗?

ChatArena#

CAMEL#

TBD

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。