在基于LLM的多智能体系统中开创了第一个实用的基于LLM的通用存储程序自动计算机(冯诺依曼架构)框架,通过生成广泛且一致的输出来解决复杂的任务,不受LLM固定上下文窗口约束的限制。
?可能。 2024 年 7 日至 11 日:我们将在 2024 年国际学习表征会议 (ICLR) 上展示 L2MAC。欢迎在奥地利维也纳的 ICLR 与我们见面!请通过 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 频道上共享它。