在基於LLM的多智能體系統中開創了第一個實用的基於LLM的通用儲存程式自動電腦(馮諾依曼架構)框架,透過產生廣泛且一致的輸出來解決複雜的任務,不受LLM固定上下文視窗約束的限制。
?可能。 2024 年 7 日至 11 日:我們將在 2024 年國際學習表徵會議 (ICLR) 上展示 L2MAC。請透過 sih31 (at) cam.ac.uk 與我聯繫,以便我們見面,也接受虛擬會議!
?四月。 2024年12月23日:L2MAC完全開源,發布初始版本。
2024 年 1 月 16 日:論文 L2MAC:用於擴展程式碼產生的大型語言模型自動電腦被接受在 ICLR 2024 上發表!
LLM-自動電腦 (L2MAC) 實例化,用於根據單一使用者提示為整個應用程式編碼大型複雜程式碼庫。在這裡,我們為 L2MAC 提供了額外的工具來檢查程式碼中的任何語法錯誤並執行任何單元測試(如果存在)。
確保您的系統上安裝了 Python 3.7+。您可以使用以下命令進行檢查:
python --version
。您可以像這樣使用 conda:conda create -n l2mac python=3.9 && conda activate l2mac
pip install --upgrade l2mac
# or `pip install --upgrade git+https://github.com/samholt/l2mac`
# or `git clone https://github.com/samholt/l2mac && cd l2mac && pip install --upgrade -e .`
詳細安裝指導請參考安裝
您可以透過執行以下命令來初始化 L2MAC 的配置,或手動建立~/.L2MAC/config.yaml
檔案:
# Check https://samholt.github.io/L2MAC/guide/get_started/configuration.html for more details
l2mac --init-config # it will create ~/.l2mac/config.yaml, just modify it to your needs
您可以根據範例和文件配置~/.l2mac/config.yaml
:
llm :
api_type : " openai " # or azure etc. Check ApiType for more options
model : " gpt-4-turbo-preview " # or "gpt-4-turbo"
base_url : " https://api.openai.com/v1 " # or forward url / other llm url
api_key : " YOUR_API_KEY "
安裝後,您可以使用L2MAC CLI
l2mac " Create a beautiful, playable and simple snake game with pygame. Make the snake and food be aligned to the same 10-pixel grid. " # this will create a codebase repo in ./workspace
或將其用作庫
from l2mac import generate_codebase
codebase : dict = generate_codebase ( "Create a beautiful, playable and simple snake game with pygame. Make the snake and food be aligned to the same 10-pixel grid." )
print ( codebase ) # it will print the codebase (repo) complete with all the files as a dictionary, and produce a local codebase folder in ./workspace
?加入我們的 Discord 頻道!期待在那裡見到您! ?
如果您對此項目有任何疑問或回饋,請隨時與我們聯繫。我們非常感謝您的建議!
我們將在 2-3 個工作天內回覆所有問題。
要了解最新的研究和開發動態,請在 Twitter 上關注 @samianholt。
若要在出版物中引用 L2MAC,請使用以下 BibTeX 條目。
@inproceedings {
holt2024lmac,
title = { L2{MAC}: Large Language Model Automatic Computer for Unbounded Code Generation } ,
author = { Samuel Holt and Max Ruiz Luyten and Mihaela van der Schaar } ,
booktitle = { The Twelfth International Conference on Learning Representations } ,
year = { 2024 } ,
url = { https://openreview.net/forum?id=EhrzQwsV4K }
}
LLM-自動電腦 (L2MAC) 實例化,用於根據單一使用者提示為整個應用程式編碼大型複雜程式碼庫。程式碼庫產生系統設計任務結果顯示已完全實現的指定功能特性的百分比 ( Features % )、生成程式碼中的語法錯誤數 ( #Errors )、程式碼行數 ( LOC ) 以及程式碼行數 (LOC)。 (測試通過)。 L2MAC 透過產生具有最小語法錯誤和大量透過自生成單元測試的全功能程式碼,在所有任務中完全實現了最高百分比的用戶指定任務功能要求,因此它是最先進的生成大型輸出程式碼庫,並且在生成大型產出任務方面具有類似的競爭力。結果是 10 個隨機種子的平均值。
LLM-自動計算機(L2MAC)在HumanEval編碼基準上取得了強勁的表現,目前在HumanEval全球編碼行業標準排行榜上名列全球最佳AI編碼代理第三名。
保留在方法任務指令中並在上下文中使用的使用者指定的功能要求的百分比。
為了探索操作期間的基準測試方法是否包含其上下文中的信息以直接完成任務,我們調整了特徵百分比指標來計算方法任務指令中保留的用戶指定的任務特徵要求的數量,即在其運行過程中最終輸入其上下文視窗的指令,如上圖所示。根據經驗,我們觀察到 L2MAC 能夠在其提示程式中保留大量使用者指定的任務特徵要求,並執行面向指令的長時間運行任務。我們注意到,AutoGPT 最初也將使用者指定的任務特徵需求翻譯成任務指令;然而,它是透過更高的壓縮來實現的——將資訊壓縮成僅僅六句話的描述。此過程會導致正確完成整個任務所需的關鍵任務資訊遺失,使其與詳細的使用者指定任務保持一致。
文件存取熱圖。指示線上聊天應用程式任務的一個情節期間每個寫入操作步驟的讀取、寫入以及何時建立檔案。
我們希望了解,在執行任務指令的操作過程中,L2MAC 是否能夠理解程式碼庫中現有的生成程式碼檔案——這些程式碼檔案可能是在許多指令之前創建的,並透過其理解,創建與該指令相關的新文件。為了獲得洞察力,我們在上圖中的一個情節中繪製了讀取、寫入以及每個寫入操作步驟中文件創建時間的熱圖。我們觀察到,L2MAC 了解現有的生成程式碼,使其能夠更新現有的程式碼文件,甚至是那些最初在許多指令步驟之前創建的程式碼文件,並且可以在不確定時查看文件並透過寫入文件來更新文件。相較之下,AutoGPT 通常在最初建立文件時只會寫入一次文件,並且只能更新它所知道的保留在目前上下文視窗中的文件。儘管它也有一個讀取檔案工具,但由於其上下文視窗處理方法總結了其上下文視窗中最舊的對話訊息,即對先前取得的進度進行連續有損壓縮,因此它經常忘記許多迭代之前創建的文件。
(b)程式碼庫中語法錯誤的數量。 (c)通過且失敗的自生成單元測試的堆積直方圖。
當使用機率模型(LLM)作為生成器輸出程式碼時,其輸出自然會出現錯誤。因此,我們希望驗證當錯誤確實出現時,相應的基準測試方法是否可以對程式碼庫進行錯誤修正。我們繪製了運行期間出現錯誤的程式碼庫中語法錯誤的數量,如上圖 (b)所示。我們觀察到,L2MAC 可以正確地修正先前產生的包含錯誤的程式碼庫,這些錯誤可能是由於最後寫入的檔案或依賴最近寫入的檔案(現在包含錯誤)的其他檔案的語法錯誤而引起的。它透過在出現錯誤時顯示錯誤輸出並修改程式碼庫以解決錯誤,同時仍完成當前指令來實現此目的。相較之下,AutoGPT 無法偵測程式碼庫中何時發生錯誤並繼續運行,這可能會增加程式碼庫中形成的錯誤數量。
此外,L2MAC 與功能程式碼一起產生單元測試,並使用它們作為錯誤檢查器來檢查生成的程式碼庫的功能,並可以使用這些錯誤來修復程式碼庫以通過單元測試,這些單元測試在更新部分現有程式碼後會失敗。我們在上圖 (c)中展示了這一點,並觀察到AutoGPT 雖然被提示為生成的所有程式碼編寫單元測試,但無法使用這些測試作為完整性錯誤檢查,這可能會因為AutoGPT 忘記了哪些內容而變得更加複雜。
我們推出了 L2MAC,這是第一個基於 LLM 的通用儲存程式電腦框架,它可以透過記憶體儲存有效且可擴展地增強 LLM,以執行先前無法成功實現的長輸出生成任務。具體來說,L2MAC 在應用於長程式碼生成任務時,超越了現有的解決方案,並且是快速開發的非常有用的工具。我們歡迎貢獻並鼓勵您使用和引用該項目。點擊此處開始。
我們提供了一個完全由 LLM 自動計算機 (L2MAC) 根據單一輸入提示產生的範例應用程式庫。 L2MAC 擅長解決大型複雜任務,例如產生大型程式碼庫的最先進技術,甚至可以編寫整本書,所有這些都繞過了 LLM 固定上下文視窗約束的傳統約束。
只需輸入l2mac "Create a beautiful, playable and simple snake game with pygame. Make the snake and food be aligned to the same 10-pixel grid."
,您將獲得一個完全可玩的遊戲的完整程式碼庫,如下所示。
點擊此處獲取 github 上的完整文件或在此處下載。產生此程式碼的程式碼和提示位於此處。
點擊此處獲取 github 上的完整文件或在此處下載。產生此程式碼的程式碼和提示位於此處。
只需給 L2MAC 提示“ Write a complete recipe book for the following book title of "Twirls & Tastes: A Journey Through Italian Pasta". Description: "Twirls & Tastes" invites you on a flavorful expedition across Italy, exploring the diverse pasta landscape from the sun-drenched hills of Tuscany to the bustling streets of Naples. Discover regional specialties, learn the stories behind each dish, and master the art of pasta making with easy-to-follow recipes that promise to delight your senses.
它可以自動產生一本完整的26頁長度的書。
點擊此處查看完整書籍; L2MAC 製作了本書的所有文本,所有圖像均由 DALLE 創建。
完整的輸出文字檔位於 github 上;您可以在這裡下載它們。產生此程式碼的程式碼和提示位於此處。
點擊此處獲取 github 上的完整文件或在此處下載。產生此程式碼的程式碼和提示位於此處。
我們正在積極尋找您在這裡上傳您自己的精彩應用程序,方法是使用您製作的應用程式提交 PR、透過 GitHub 問題共享它或在 Discord 頻道上共享它。