LLM agents have made significant progress in 2024, with OpenHands (formerly OpenDevon) leading the SWE-Bench Full leaderboard at 29%. However, on the SWE-Bench Verified leaderboard, they are at 53%, behind Amazon Q, Devlo, and OpenAI's self-reported O3 results at 71.7%. Major players like OpenAI, DeepMind, and Anthropic are focusing on consumer and coding agents, vision-based computer-using agents, and multi-agent systems. Notable advancements include Cognition AI's Devin, Cursor Composer, Codeium's Windsurf Cascade, and the growth of customer support agents like Sierra ($4 billion valuation) and search agents like Perplexity ($9 billion valuation).
OpenHands provides agents with five key tools: program execution (bash programs and Jupyter notebooks), file editing (browsing and overwriting files), global search and replace, and web browsing (including scrolling, text input, and clicking). These tools allow agents to execute code, edit files, and interact with web pages effectively.
Claude is considered the best language model for agents due to its strong instruction-following ability, tool use, coding proficiency, environment understanding, and error recovery. Unlike GPT-4, which often gets stuck in loops, Claude is adept at trying alternative approaches when errors occur. Evaluations show Claude outperforms other models like GPT-4, Llama 3, and DeepSeq 2.5 in agentic tasks.
Designing human-agent interfaces is challenging because it requires presenting enough information to users in a clear and concise manner. OpenHands uses a chat window to show agent actions in English descriptions, allowing users to explore detailed results if needed. The goal is to integrate agents into existing workflows, such as GitHub plugins for issue resolution, while ensuring the interface is intuitive and informative.
By mid-2025, every major language model trainer will focus on improving models for agentic tasks. Competition will increase, prices will drop, and smaller models will become competitive. Instruction-following abilities in agentic contexts will improve, reducing the need for manual engineering of workflows. Error correction will also improve, reducing instances of agents getting stuck in loops. Benchmarks like SWE-Bench and WebArena will become more challenging as agents improve.
OpenHands uses light planning with a single prompt rather than multi-agent systems. Agents follow curated workflows, such as reproducing issues, writing tests, fixing bugs, and verifying fixes. This approach allows flexibility when plans deviate, as agents can adapt without getting stuck. The blog 'Don't Sleep on Single Agent Systems' argues that strong instruction-following agents can handle deviations better than rigid multi-agent systems.
Key benchmarks include fast sanity checks like miniWoB (web navigation) and Aider (code editing), as well as highly realistic evaluations like WebArena (real open-source websites) and SWE-Bench (real-world GitHub pull requests). These benchmarks test agents' abilities in web navigation, code editing, and issue resolution. However, there is still a need for benchmarks that test agents' versatility in combining coding and web navigation tasks.
Expanding agent use beyond programming requires making agents accessible to non-programmers, such as lawyers or chemists. This involves designing intuitive interfaces and workflows that allow users to interact with agents naturally. Additionally, existing systems may need to be redesigned to support agent interactions, such as providing APIs for websites to improve agent accuracy and efficiency.
OpenHands uses a concept called Agent Workflow Memory, where successful workflows are stored and reused. When an agent completes a task successfully, it breaks down the task into individual workflows and adds them to the prompt for future tasks. This self-learning approach has shown a 22.5% improvement on WebArena after 40 examples, demonstrating the potential for agents to learn from past successes.
Agent authentication is challenging because many systems lack fine-grained control over permissions. OpenHands uses GitHub's fine-grained authentication tokens, which allow specific permissions for different repositories and actions. This approach, developed for human developers and GitHub apps, provides a template for secure agent interactions. However, broader adoption of such systems is needed to prepare the world for widespread agent use.
我们在 Latent Space Live 回来了,这是我们在温哥华 NeurIPS 2024 上举办的第一次小型会议。我是 Charlie,你们的 AI 联合主持人。作为本周的特别节目,我们将逐个领域回顾 2024 年的最佳成果。我们向 900 多位告诉我们他们想要什么的观众发送了一份调查问卷,然后邀请了 Latent Space 网络中最好的演讲者来涵盖每个领域。200 多位观众全天与我们一起参加了现场活动,超过 2200 人在线观看直播。
我们的下一个主题演讲涵盖了大型语言模型 (LLM) 智能体的现状。卡内基梅隆大学 (CMU) 的格雷厄姆·诺比格教授和 Open Devon(现已更名为 All Hands 的初创公司)将再次精彩亮相。
更名为 Open Hands 的公司今年表现出色,在最难的 SWE bench 全榜单中排名第一,得分为 29%;但在较小的 SWE bench 验证榜单中,其得分为 53%,落后于亚马逊 Q、devlo 和 OpenAI 自报的 O3 结果(71.7%)。
许多人认为 2025 年将是智能体的时代,OpenAI、DeepMind 和 Anthropic 将目光投向了面向消费者的编码智能体、基于视觉的计算机使用智能体和多智能体系统。
智能体在各个领域的实际可靠性和应用方面都取得了巨大进展,从今年 Cognition AI 推出的 Devin,到 Cursor Composer 和近期嘉宾 Codium 的 Windsurf Cascade 在 IDE 领域的成功,再到 StackBlitz 的 Bolt、Lovable 和 Vercel 的 v0 的爆炸式营收增长。
以及 Sierra(现价值 40 亿美元)等客户支持智能体和 Perplexity(现价值 90 亿美元)等搜索智能体的独角兽轮融资和高调发展。我们希望退一步,了解今年智能体领域最值得关注的论文,格雷厄姆也欣然提供了他在 2024 年构建智能体时遇到的八个长期性问题的清单。
与往常一样,请务必查看我们的节目说明,了解 2024 年所有精选的最佳论文以及其演讲的 YouTube 链接。格雷厄姆的幻灯片在网上特别受欢迎,我们很荣幸能邀请到他。
请注意安全。大家好,我被安排来谈谈 2024 年的智能体,这是一项不可能完成的任务,因为 2024 年有太多智能体了。因此,这将主要基于我的个人经验和我认为有趣和重要的内容,但我认为这是一个重要的主题。让我们开始吧。
首先我想考虑的是,假设我给你一个能力很强的人一些工具。假设我给你一个网络浏览器、一个终端或一个文件系统,以及编辑文本或代码的能力。你能用这些做什么?
一切。是的,可能很多事情。我想这占了我日常工作时间的 99%,我想。因此,我认为这是一个非常强大的工具集。而我正在尝试做的,以及我认为其他人也在尝试做的,是开发能够操作这些东西的智能体,例如网络浏览、编码、成功运行代码。
这是我的一些个人信息。我是卡内基梅隆大学 (CMU) 的教授,All Hands AI 的首席科学家,负责构建开源编码智能体。我是 Open Hands 的维护者,这是一个开源编码智能体框架。我同时也是一名软件开发人员,我喜欢编写大量代码,发布新功能等等。因此,构建能够帮助我完成这些工作的智能体是一件非常有趣的事情,与我息息相关。
首先我想尝试一些我以前从未尝试过的事情。如果有人尝试过进行现场演示,那么你会知道,每当你这样做的时候,都会非常紧张,而且它可能无法正常工作。因此,这次也可能无法正常工作,但我希望向你们展示三件我在日常工作中经常使用编码智能体做的事情。我每天可能使用 5 到 10 次编码智能体来帮助我解决自己的问题。这是第一个例子。这是一个数据科学任务,它说我想创建散点图来显示 SWE bench 得分随时间的变化。因此,我为此写了一个具体的提示。智能体在使用比较具体的提示时效果更好。我将把它放入 Open Hands 并让它运行。
我稍后会再回来看它。我做的另一件事是创建新的软件。我一直使用一项服务,一项特定的服务,我不会透露名称,用于发送电子邮件,但我对它很不满意。因此,我想切换到这项名为 Resend.com 的新服务,它可以更轻松地发送电子邮件。
因此,我将要求它阅读 Resend.com API 的文档,并编写一个允许我发送电子邮件的脚本。该脚本的输入应为 CSV 文件,主题和正文应在 Jinja2 模板中提供。因此,我将启动另一个智能体并尝试让它为我完成这项工作。让我们来看最后一个例子。我做的最后一件事是改进现有软件。
因为,你知道,一旦你编写了软件,通常不会将其丢弃。你会不断地改进它。我拥有的这个软件是我在没有编写任何代码的情况下创建的。它基本上是一个软件,用于监控我们的智能体对 Open Hands 代码库的贡献程度。在左边,我列出了它发送拉取请求的问题数量。
我列出了它发送拉取请求的问题数量,以及这些请求是否已合并(紫色)、关闭(红色)或仍处于打开状态(绿色)。因此,这些数据可以帮助我们进行监控。但是,它没有告诉我总数。我希望添加这个功能。因此,我将尝试添加它。因此,我将使用这个提示。
在这里,我想专门打开该 GitHub 代码库。因此,我将打开该代码库并粘贴提示,我要求它为每个项目创建一个饼图,并给出我在监控的整个时间段内的总数。我们将这样做。现在我有一些智能体了。哦,这个已经完成了。让我们看看。
这个已经完成了。你可以看到它完成了对 SweeBench 代码库的分析。它编写了一个演示……是的,我现在正在尝试这样做。
它演示了每个系统随时间的改进程度。我要求它为每个数据集标记前三名。因此,它将 Open Hands 标记为 SWE Bench Normal 中最好的一个。对于 SWE Bench Verified,它列出了 Amazon QAgent 和 Open Hands。对于 SWE Bench Lite,它在这里列出了三个,在那里列出了三个。因此,你可以看到……
这非常有用,对吧?如果你是一名研究人员,你会经常进行数据分析。我在与你们所有人交谈和做演示时完成了这项工作。因此,这非常好。我认为另外两个还没有完成。如果它们完成了,那就太棒了。是的,我认为它们仍在运行。因此,我们可能在演示结束时再回来看它们。但是,这些是我现在每天使用编码智能体或软件开发智能体做的事情。这令人印象深刻。
接下来我想稍微谈谈我在设计智能体时会担心的事情。因此,我们正在设计智能体来完成一项非常困难的任务,例如浏览网站、编写代码等等。在 2024 年,我们用于执行此任务的方法得到了极大的改进。但是,我们还会考虑很多事情。有很多有趣的论文,我想介绍其中的一些。
首先,我担心的是智能体-计算机接口。我们如何让智能体与计算机交互?我们如何为智能体提供完成工作的工具?在 Open Hands 中,我们正在做右边的事情,但也有一些智能体在做左边的事情。
左边的事情是,你为智能体提供一些细粒度的工具。例如,你的指令是:我想确定购买 Kodak One 智能手机型号最划算的国家。要考虑的国家包括美国、日本、德国和印度。你有一堆可用的 API。因此,对于某些智能体,你会将所有这些工具 API 作为它们可以调用的工具提供。
因此,在这个特定情况下,为了解决这个问题,你必须进行大约 30 次工具调用,对吧?你必须调用德国的查找费率,你必须为美国、日本和印度查找费率。那是四次工具调用。然后,你依次完成所有这些操作。而我们在 Open Hands 中采用的一种方法是,我们提供这些工具,但我们通过只为编码智能体提供调用任意 Python 代码的能力来提供这些工具。
在任意 Python 代码中,它可以调用这些工具。我们将这些工具作为模型可以调用的 API 公开。这样做的优势在于,无需编写 20 个工具调用,进行 20 次 LLM 调用,而是编写一个一次运行所有这些调用的程序,并获得结果。当然,它可以执行该程序。它可能会出错,它可能会收到错误并进行修复,但这使我们的工作变得容易得多。我认为,这对于我们的成功至关重要。另一个方面是智能体需要哪些工具?
我认为这取决于你的用例。我们有点极端,我们只为智能体提供了 5 个或 6 个工具。它们是什么?第一个是程序执行。因此,它可以执行 bash 程序,也可以执行 Jupyter 笔记本。它可以在 Jupyter 笔记本中执行单元格。因此,那是两个工具。另一个是文件编辑工具。
文件编辑工具允许你浏览文件的部分内容,并读取、覆盖它们等等。然后,我们还有另一个全局搜索和替换工具。因此,它实际上是两个文件编辑工具。最后一个是网络浏览。网络浏览,当我称它为一个工具时,我有点作弊。你实际上有滚动、文本输入、点击等等。但这些基本上是我们允许智能体执行的唯一操作。
那么问题是,如果我们想让它做其他事情呢?答案是,嗯,人类程序员已经使用了很多东西。他们有 requests PyPy 库,他们有 PDF 到文本 PyPy 库,他们有 Python 生态系统中可以使用的所有其他库。
因此,如果我们为编码智能体提供所有这些库,它就可以执行数据可视化等我刚才展示的操作。因此,它还可以获取克隆的代码库等等。智能体也非常擅长使用 GitHub API。因此,它们可以在 GitHub 上执行操作,例如查找所有问题的评论或检查 GitHub Actions 等等。
我考虑的第二件事是人机接口。也就是说,我们如何让人类与智能体交互?我已经向你们展示了我们人机接口的一种形式。它基本上是一个聊天窗口,你可以在其中浏览智能体的结果等等。
这非常困难。我认为没有人对此有很好的答案,我认为我们也没有很好的答案,但我正在尝试遵循的指导原则是,我们要向用户提供足够的信息。因此,我们要以某种英语描述的形式向他们展示智能体正在做什么。因此,你可以在这里看到,每次它执行操作时,它都会说,例如,我将帮助你创建一个用于发送电子邮件的脚本。
当它运行 bash 命令时,它会说“运行了 bash 命令”。它不会实际向你显示整个 bash 命令或整个 Jupyter 笔记本,因为它们可能非常大,但你可以通过单击此处来打开它们并查看。因此,如果你想了解更多信息,你可以单击 Jupyter 笔记本并查看 Jupyter 笔记本中显示的内容,你会获得大量信息。这是一点。
另一件事是去用户所在的地方。因此,如果用户已经在特定环境中进行交互,那么我想融入该环境,但仅限于一定程度。因此,在 Open Hands 中,我们有一个用于交互的聊天 UI。我们有一个用于标记和解决问题的 GitHub 插件。因此,你所做的就是使用 @OpenHandsAgent,Open Hands 智能体将看到
看到该评论并能够进入并修复问题。因此,如果你说 @OpenHandsAgent 测试在这个 PR 中失败了,请修复测试。它将进入并为你修复测试等等。我们还有用于启动无头作业的远程运行时。因此,如果你想启动一群智能体来同时解决五个不同的问题,你也可以通过 API 来做到这一点。因此,我们有这些接口。
这可能取决于用例。例如,如果你是编码智能体,你会以一种方式做事。如果你是一个保险审计智能体,你就会以其他方式做事。很明显。我考虑的另一件事是选择语言模型。对于 agentic LLM,我们必须让很多事情都能很好地工作。首先是真正优秀的指令遵循能力。
如果你有真正优秀的指令遵循能力,它就会为你打开大量可能的应用。工具使用和编码能力。因此,如果你提供工具,它需要能够很好地使用这些工具。
环境理解。因此,如果你正在构建网络智能体,它需要能够通过视觉或文本理解网页。以及错误感知和恢复能力。因此,如果它犯了错误,它需要能够找出它为什么犯了错误,提出替代策略等等。
在我的所有演示中,我们都在使用 Claude。Claude 具备所有这些能力。非常好,虽然不完美,但非常好。
大多数其他模型都不具备这些能力。例如,GPT-4.0 没有很好的错误恢复能力。因此,由于这个原因,它会进入循环并一遍又一遍地做同样的事情,而 Claude 不会这样做。如果你足够使用 Claude 智能体,你就会习惯它们的个性,Claude 会说,嗯,让我尝试不同的方法。因此,很明显,它以某种方式进行了训练,以产生这种能力。是的。
我们进行了一次评估。这是旧的,我们基本上需要更新它,但我们评估了 Claude、GPT-4.0、O1 Mini、LLAMA 405b、DeepSeq 2.5。
在我们的框架中作为优秀的代码智能体。Claude 的表现明显优于其他模型。GPT-4.0 还算不错。最好的开源模型是 LLaMA 3.1 405b。这需要更新,因为这已经是几个月前的事情了,而且事情发展得非常快。但我仍然认为 Claude 是最好的。其他封闭模型的表现并不太好。然后是开源模型,它们落后一些。
Grok,我们实际上根本没有尝试过 Grok。因此,这是一个很好的问题。如果你想尝试,我很乐意提供帮助。很好。另一件事是规划。因此,规划有一些考虑因素。第一个是你是拥有一个策划的计划,还是在运行时生成计划。因此,对于解决 GitHub 问题,你可以拥有一个整体计划。例如,计划是首先重现。如果存在问题,首先编写测试以重现问题或演示问题。
之后,运行测试并确保它们失败。然后进入并修复测试。再次运行测试以确保它们通过,然后就完成了。对于解决编码问题来说,这是一个非常好的工作流程。你可以提前策划它。
另一种选择是让语言模型基本上生成它自己的计划。这两种方法都是完全有效的。另一种是显式结构与隐式结构。例如,如果你生成一个计划。如果你有显式结构,你可以编写一个多智能体系统,该系统将拥有你的重现器智能体,然后它将拥有你的、你的
你的错误、你的测试编写器智能体和你的错误修复器智能体以及许多不同的智能体。你会明确地将所有这些都写入代码,然后以这种方式使用它。另一方面,你可以只提供一个提示,说,请按顺序执行所有这些操作。
因此,在 Open Hands 中,我们进行非常简单的规划。我们只有一个提示。我们没有任何多智能体系统,但我们确实提供了关于首先做什么、接下来做什么等等的说明。我不反对以其他方式进行,但我在这篇名为“不要低估单智能体系统”的博客中对此进行了一些论证。
其背后的基本思想是,如果你有一个真正优秀的指令遵循智能体,只要事情按照你的计划进行,它就会遵循这些指令。但是,假设你需要偏离你的计划。你仍然可以灵活地做到这一点。如果你通过多智能体系统进行显式结构,那么这样做就会变得困难得多。例如,当事情偏离你的计划时,你就会陷入困境。还有一些其他例子,我想介绍一些论文。最近我比较喜欢的一篇论文是这篇名为 CoAct 的论文。
你生成计划,然后进入并修复它们。因此,其基本思想是,如果你需要偏离你的计划,你可以知道你的计划没有奏效,然后返回并偏离它。我考虑的另一件事是指定常见的工作流程。因此,我们正在努力解决软件开发问题。我已经展示了三个我们进行软件开发的用例。当我们……
进行软件开发时,我们会做很多不同的事情,但我们会一遍又一遍地做这些事情。例如,当 GitHub Actions 失败时,我们会修复它们,我们会一遍又一遍地这样做。这并不是软件工程师做的最重要的事情,但它在列表中排名很高。那么,我们如何获得人们正在使用的所有工作流程的列表呢?并且
人们在这方面做了一些研究工作。一个例子是手动提示。因此,有一篇很好的论文名为 Step,它在 Web Arena 网络导航基准测试中取得了最先进的结果,他们提出了一系列用于解决不同网络导航任务的手动工作流程。我们最近还有一篇名为“智能体工作流程内存”的论文,其背后的基本思想是,我们希望创建能够从过去的成功中学习的自我改进智能体。
它的工作方式是,我们有一个内存,其中包含人们使用过的许多先前工作流程的示例。每次智能体完成一项任务并自行判断它在这项任务中做得很好时,你就会获取该任务,将其分解为其中包含的各个工作流程,然后将其放回提示中,以便智能体下次使用。
我们证明,在 40 个示例之后,这导致 WebArena 的准确率提高了 22.5%。因此,这是一种通过自我学习和自我改进获得的相当大的提升。另一件事是探索。我考虑的一件事是,智能体如何在采取行动之前更多地了解其环境?我从事编码和网络智能体的工作,在这两个领域中都有几个很好的例子。
在编码方面,我认为这是代码库理解,理解你正在处理的代码库。这方面有一个或几个例子,一个例子是 Agentless,他们基本上会创建一个代码库的映射。根据代码库的映射,他们将其馈送到智能体,以便智能体可以导航代码库并更好地了解事物的位置。
对于网络智能体,有一个名为 Bagel 的论文示例。他们基本上让智能体在网站上执行随机任务,探索网站,更好地理解网站的结构。然后,他们将其作为提示的一部分馈送进去。第七部分是搜索。
现在在 Open Hands 中,我们只是让智能体沿着线性搜索路径前进。因此,它只解决一次问题。我们使用的是一个优秀的智能体,它能够从错误中恢复并在事情无法正常工作时尝试其他方法,但我们仍然只有一个线性搜索路径。
但是,2024 年也有一些关于探索多条路径的优秀工作。一个例子是,有一篇论文名为“语言智能体的树搜索”,他们基本上会扩展多条路径,检查这些路径是否进展顺利,如果不顺利,则会倒回。
在网络上,这有点棘手,因为例如,当你意外地在亚马逊上订购了你不想要的东西时,你该如何倒回?这有点,你知道,不容易。对于代码来说,这容易一些,因为你可以撤消你所做的任何更改。但我认为这也是一个有趣的话题。最后是评估。因此,在我们开发的评估中,我们希望做很多事情。首先是快速完整性检查。
为了做到这一点,我们需要能够非常快速、非常廉价地运行的东西。因此,对于网络,我们有一些名为 mini world of bits 的东西,它基本上是这些琐碎的网络导航任务。我们有一些名为 Ader 代码编辑基准测试的东西,它只是关于编辑我们使用的单个文件。但我们也希望进行高度现实的评估。
因此,对于网络,我们创建了名为 Web Arena 的东西。这是在真实的开源网站上进行的网络导航。因此,这些是实际用于服务商店或公告板等内容的开源网站。对于代码,我们使用 Sweebench,我认为很多人可能听说过它。它基本上是一个来自 GitHub 上真实世界拉取请求的编码基准测试。因此,如果你能够解决这些问题,你可能也能解决其他真实世界的拉取请求。
我想说的是,我们仍然没有针对智能体的全部多功能性进行基准测试。例如,我们没有测试智能体是否能够编写代码并进行网络导航的基准测试。但我们正在努力,并希望在一到两周内发布一些内容。因此,如果你对此感兴趣,请来找我,我会告诉你更多信息。
很好。我不喜欢做预测,但我被告知我应该有点争议性,我想。因此,我将尝试这样做。我将尝试这样做,尽管这些预测可能并不那么有争议。首先是面向智能体的 LLM,例如用于智能体的大型语言模型。我的预测是,每个大型 LLM 训练者都将专注于将模型训练为智能体。因此,到 2025 年年中,每个大型语言模型都将成为更好的智能体模型。
竞争将加剧,价格将下降,较小的模型将成为具有竞争力的智能体。因此,目前智能体的运行在某些情况下成本较高,但我预计这种情况不会持续六个月。我敢打赌,六个月后我们将拥有更好的智能体模型。另一件事是,指令遵循能力,尤其是在 agentic 上下文中,将得到提高。这意味着我们将不得不减少 agentic 工作流程的手动工程,并能够通过更复杂的方式提示智能体来做更多的事情。Claude 已经非常擅长这一点。它并不完美,但已经非常好了。我希望其他模型很快就能赶上 Claude。错误纠正能力将提高,减少陷入循环的情况。同样,这是 Claude 已经非常擅长的事情,我希望其他模型也能做到这一点。
智能体基准测试。智能体基准测试将开始饱和。因此,以及 Sweebench。我认为 Web Arena 已经太容易了。它,它并不超级容易,但它已经有点太容易了,因为我们在其中执行的任务对于人类来说只需要两分钟。因此,并不太难。
从历史上看,在 2023 年,我们的基准测试太容易了。因此,我们构建了更难的基准测试,例如 Web Arena 和 Sweebench 都是 2023 年构建的。在 2024 年,我们的智能体太糟糕了。因此,我们构建了智能体,现在我们正在构建更好的智能体。在 2025 年,我们的基准测试将太容易了。因此,我们将构建更好的基准测试,我猜。因此,我希望看到更多更具挑战性的智能体基准测试出现。我们已经看到了一些。
在 2026 年,我不知道。我没有编写 AGI,但我们将拭目以待。然后是人机计算机接口。我认为我们需要考虑的一件事是,对于我们真正关心的问题,我们在 75% 的成功率下会做什么?目前,我们在 Sweebench Verified 上的得分为 53% 或 55%,这是真实世界的 GitHub PR。我的印象是,实际……
模型的实际能力可能更接近 30% 到 40%。因此,对于我想要代理在我的存储库上解决的那些问题中,有 30% 到 40% 的问题它能够无需任何人工干预就能解决。80% 到 90% 的问题它可以在我不打开 IDE 的情况下解决,但我需要提供反馈。所以,如何使这种交互更加流畅,以便人类能够审核那些非常优秀但并不完美的代理的工作,这将是一个巨大的挑战。
我们如何将编程代理的功能扩展到其他行业?就像程序员一样,我认为并非我们所有人都在日常编程中使用代理,尽管我们可能在几个月或一年内就会使用。但我认为这对于我们程序员来说会非常自然,因为我们了解代码。我们知道,
例如如何设计软件等等。所以,我认为问题是,我们如何将它交给律师、化学家或其他人,并让他们也能够像我们一样自然地与之互动。
另一个有趣的事情是如何重新设计我们现有的代理系统?我们有一篇关于基于 API 的网络代理的论文。基本上,我们展示的是,如果你使用一个网络代理,并且该代理不是与网站交互,而是与 API 交互,那么准确性就会大大提高,因为 API 更容易交互。事实上,当我要求
好吧,我们的代理能够浏览网站,但每当我想要它与 GitHub 交互时,我都会告诉它不要浏览 GitHub 网站,而要使用 GitHub API,因为它这样做更成功。所以也许,你知道,每个网站都需要一个 API,因为我们将让代理与它们交互。
关于进展,我认为进展会越来越快。它已经很快了。很多人已经被压垮了,但我认为它会继续下去。原因是代理正在构建代理,而更好的代理将更快地构建更好的代理。所以,我希望,如果你还没有与编码代理互动过,它会非常神奇,就像它能做的事情一样。是的。
我有一个行动号召。老实说,我已经从事自然语言处理和语言模型的工作 15 年了。即使对我来说,由强大的语言模型驱动的 AI 代理也能做到令人印象深刻的事情。另一方面,我相信我们应该真正使这些强大的工具易于访问。我的意思是,我不认为,你知道,
我们应该让这些工具不透明,或者仅限于特定人群使用。我觉得它们应该是负担得起的。它们不应该增加人们拥有的权力差异。如果有什么不同的话,我真的很想让那些以前无法做到的事情的人能够做到。
开源是一种方法。这就是我从事开源工作的原因。还有其他方法可以做到这一点,例如降低成本,使事情变得更容易,以便你可以为那些买不起的人提供服务。Duolingo 就是一个例子,他们让美国的所有人都每月支付 20 美元,以便他们可以免费为南美洲的所有人提供语言教育,这样他们就可以学习英语,并变得更有吸引力,例如……
例如,在就业市场上更有竞争力。所以我认为我们都可以想到一些方法来做到这一点。
如果这能引起你的共鸣,请贡献你的力量。当然,如果你能为 Open Hands 贡献力量并使用它,我会很高兴。但另一种方法是使用开源解决方案,为它们做出贡献,与它们一起进行研究,并训练强大的开源模型。我看到房间里的一些人已经在训练模型了。如果你能为编码代理训练模型并降低成本,那就太好了。是的,请,我在想你,还有其他人。是的。
是的,这就是我要说的全部内容。谢谢。略微有争议的“tick”可能是说“hot ticks”最友好的方式。有什么“hot ticks”问题吗?实际的“hot ticks”?哦,如果有人感兴趣的话,我也可以展示其他正在运行的代理。但是,是的,对不起,请继续。是的,我有一些问题。它们可能有点成对出现。首先,你说
你估计你的代理成功解决了大约 30% 到 40% 的问题,但这低于你在 Sweebench 中看到的结果。所以我想知道这种差异来自哪里。然后我想我的第二个问题,可能范围更广,那就是,
如果你把代理想象成一个初级开发人员,而我说,去做某事,那么我预计明天可能会收到一条 Slack 消息,说:“嘿,我遇到了这个问题。我该如何解决?”就像你说的,你的代理成功解决了大约 90% 的问题,而你直接提供了反馈。所以,你是否考虑过如何让代理在遇到问题时寻求帮助,例如进行规划?或者识别它何时遇到困难?是的。
是的,这些都是很好的问题。对不起,第三个问题,这是一个很好的问题。这是前两个问题。如果是这样,你是否会为第二个问题添加一个基准?好的,很好。是的,很好的问题。好的,第一个问题是,为什么我认为它在 Sweebench 上解决的问题少于 50%?首先,Sweebench 基于流行的开源存储库,所有这些流行的开源存储库都包含在所有语言模型的训练数据中。
因此,语言模型已经知道这些存储库。在某些情况下,语言模型已经知道 Sweebench 中的各个问题。所以基本上,就像一些训练数据泄露了一样。因此,它肯定会高估这一点。我不认为它非常不准确,但我认为,你知道,它提高了准确性。所以,这可能是最重要的原因。就……
寻求帮助以及我们是否正在对寻求帮助进行基准测试而言。是的,我们正在进行。所以,我们现在正在进行的一件事,我们希望很快就能发布,那就是我们基本上制作了非常含糊的 Sweebench 问题。例如,“我有一个矩阵乘法问题,请帮忙。”因为这些问题就像,如果有人运行过流行的开源框架,
这些就是你一半的问题。你的用户会来告诉你,“我的屏幕坏了。怎么了?”或者类似的事情。然后你需要问他们问题以及如何重现。所以,是的,我们正在努力解决这个问题。我认为我的印象是,代理并不擅长寻求帮助,即使是 Claude 也是如此。所以,当他们寻求帮助时,他们会在不需要帮助时寻求帮助,然后在需要帮助时却不会寻求帮助。所以这绝对是一个问题,我认为。
是的。感谢精彩的演讲。我还想问两个问题。第一个问题是,你能更多地谈谈网络代理如何与网站交互吗?所以,是否存在一个 VLM 来查看网页布局,然后你解析 HTML 并选择要单击的按钮?如果是这样,你认为未来是否存在这样的情况,所以我在必应微软 AI 工作。我认为未来存在这样的情况,即相同的网络索引,但存在一个对代理友好的网络索引,其中所有处理都在离线进行。
这样你就无需花费时间来清理这些 HTML 并确定在线单击的内容。对此有什么想法吗?是的,这是一个很好的问题。关于网络代理有很多工作要做。我没有详细介绍所有细节,但我认为有三种主要方式可以让代理与网站交互。第一种方式是最简单的方式,也是最新方式,但它效果并不好,那就是你拍摄……
网站的屏幕截图,然后单击网站上的特定像素值,就像
目前模型不太擅长这一点。它们会误点。有一件事是关于云计算的使用是如何开始查看黄石国家公园的图片的。我不知道你是否听说过这个轶事,但人们会说,“哦,这太人性化了。它在寻找假期。”而事实是,它可能只是误点了错误的像素,并意外地点击了一个广告。所以这是最简单的方法。第二种简单的方法
是获取 HTML,然后基本上识别 HTML 中的元素。你根本不使用任何视觉效果。然后你说,“好的,我想点击这个元素。我想在这个元素中输入文本”,或者类似的事情。但 HTML 太大了。所以实际上,它通常会被压缩成一个称为辅助功能树的东西,这是为视障人士的屏幕阅读器而设计的。
所以这是另一种方法。然后第三种方法是一种混合方法,你呈现屏幕截图,但你也呈现输出的文本摘要。我认为这可能是最好的方法。我们目前正在使用文本。这只是一个实现问题,我们还没有实现视觉效果。但这有点像我们现在正在努力解决的问题。
我还应该指出的是,我们实际上有两种网络浏览模式。我们最近实现了这一点。原因是,如果你想与完整的网站交互,你需要单击所有元素或能够单击所有元素。但我们大多数需要网站的工作只是网络浏览和信息收集。所以我们有另一种模式,我们将所有内容转换为 Markdown,因为这更简洁,也更容易让代理处理。然后
我们可以专门为代理创建索引吗?也许是一个 Markdown 索引或类似的东西会很有意义。哦,我该如何制作 Sweebench 的继任者?
我的意思是,首先是 live code bench,live code bench 基本上会不断更新,以确保它不会泄露到语言模型的训练数据中。对于 sweep bench 来说,这很容易做到,因为它来自真实的网站,而这些真实的网站一直在出现新的问题。所以你只需要使用他们现有的基准测试即可。还有一些大量的东西涵盖了各种编码任务。例如,sweep bench 主要用于修复问题,但也包括
文档,还有实际测试你想要的功能的测试。CMU 的一名学生写了一篇关于生成测试的论文。所以我觉得 Sweebench 只是拼图的一块,但你也可以有 10 个不同的其他任务,然后你可以有一个组合基准测试,你可以在其中测试所有这些能力,而不仅仅是那个特定的能力。好吧,还有很多其他的事情,但是是的。来自对面的问题。使用你的麦克风,这会有帮助。
精彩的演讲。谢谢。我的问题是关于你设计代理架构的经验。具体来说,你在任务特定代理方面需要分离多少关注点,而不是让一个代理通过巨大的提示和条件路径来完成三到五件事?
是的,这是一个很好的问题。所以我们有一个基本的编码和浏览代理。我不会说它很基本,它是一个很好的代理,但它确实可以进行编码和浏览。它包含关于如何进行编码和浏览的说明。对于大多数事情来说,这已经足够了,尤其是在给定一个强大的语言模型的情况下,该模型拥有大量关于如何解决不同类型任务以及如何使用不同 API 的背景知识。
我们确实有一种机制,称为微代理。微代理基本上是在触发触发器时添加到提示中的内容。
现在,它非常非常基础。就像如果你在任何地方检测到“GitHub”这个词,你就会收到关于如何与 GitHub 交互的说明,例如使用 API 并且不要浏览。我还添加了另一个用于 NPM(JavaScript 包管理器)的微代理。当 NPM 运行并遇到故障时,它会在交互式终端中显示消息,询问你是否要退出?
并输入“yes”。如果这样做,它会使我们的代理超时到两分钟。所以我添加了一个新的微代理。每当它开始使用 NPM 时,它都会收到关于如何不使用交互式终端的说明。所以这就是我们目前的解决方案。老实说,我非常喜欢它。它很简单,易于维护,并且运行良好。但我认为确实存在一个世界,你可能需要比这更复杂的东西。明白了。谢谢。我有一个关于 MCP 的问题。
我觉得这是利他模型上下文协议。这似乎是这种计算机和代理之间交互标准化的最成功类型。你们是否正在采用它?是否存在任何其他竞争标准?对此有什么想法吗?是的,我认为利他 CP 本质上是一组 API,你可以使用它们来与互联网上的不同事物进行交互。
我认为这不是一个坏主意,但有一些事情让我有点困扰。就像,我们已经有 GitHub 的 API 了,所以为什么我们需要 GitHub 的 MCP 呢?GitHub 有一个 API。GitHub API 正在不断发展。
我们可以查找 GitHub API 文档。所以这似乎有点重复。而且他们还有一个设置,就像你必须启动一个服务器来服务你的 GitHub 内容一样。你必须启动一个服务器来服务你的其他内容。所以我认为,如果你真的关心关注点分离、安全性和类似的事情,那么这样做是有意义的。但目前我们还没有看到任何
我们还没有看到它比直接与已提供的工具交互更有价值。这与我的总体理念是一致的,那就是我们已经在为程序员开发东西了。你知道,代理与程序员有什么不同?它确实不同,显然,你知道,代理与程序员不同,但在这一点上它们并没有那么不同。所以我们可以与我们为程序员创建的界面进行交互。是的,我以后可能会改变主意。所以我们拭目以待。
是的。嗨,谢谢。非常有趣的演讲。你刚才说,你们现在拥有的代理能够在一开始就解决大约 30% 的问题。我很想知道它无法解决的问题。你是否观察到某种模式?例如,“哦,这些是它似乎非常难以处理的事情”,或者它只是看似随机的?它绝对不是随机的。就像,如果你认为它比它更复杂,那么它就更可能失败。
我也在提示方面做得更好了一些。所以,举个例子,它有时会无法修复 GitHub 工作流程,因为它不会查看 GitHub 工作流程并理解 GitHub 工作流程在做什么,然后再解决问题。所以我认为它实际上最失败的事情是,或者说我们的代理加上 Claude 最失败的事情是,在尝试解决任务之前没有进行充分的信息收集。
所以,如果你提供所有信息,如果你提供应该事先进行信息收集的说明,那么它往往会做得很好。如果你没有提供足够的说明,它会尝试在没有完全理解任务的情况下解决任务,然后失败,然后你需要返回并提供反馈。你知道,额外的反馈。
另一个例子,我喜欢这个例子。在我开发我在这里展示的监控网站时,我们遇到一个非常棘手的错误,它将缓存文件写入与读取缓存文件不同的目录。我完全不知道发生了什么。我认为错误在代码的不同部分。但是
我要求它做的是提出五个可能导致此问题失败的原因,并按可能性递减的顺序排列,然后检查所有这些原因。这奏效了,它可以进去做这件事。所以,我认为某种程度上的脚手架,例如它应该如何充分收集解决任务所需的所有信息,就像,如果缺少这一点,那么这可能是目前最大的失败点。谢谢。是的。是的。
我只是利用这个机会来问你所有我的问题。你这里有一张关于自改进代理或类似具有内存的代理的幻灯片。对于一个超级强大的想法来说,这只是一张随意的幻灯片。这让我开始思考我该如何去做。我不知道该如何去做。我只是想让你更多地思考一下这个问题。是的。自改进。我认为最大的原因,创建自改进代理最简单的方法
是拥有一个非常强大的语言模型,具有无限的上下文。它可以回顾所有过去的经验并从中学习。你可能还想删除不好的东西,这样它就不会过度关注它失败的过去经验。但问题是一个非常强大的语言模型很大。无限的上下文很昂贵。我们没有一个好的方法来索引它,因为 RAG……
至少根据我的经验,从语言到代码的 RAG 效果并不好。所以我认为最终是这样的,这就是我想解决这个问题的方法。我想拥有无限的上下文,并能够以某种方式适当地索引它。
我认为这将主要解决这个问题。你还可以做的是微调。所以我认为 RAG 是一种将信息输入模型的方法。微调是另一种将信息输入模型的方法。所以这可能是持续改进的另一种方法。例如,你确定你做得很好,然后只将所有好的例子添加到你的模型中。是的。所以你知道像 Voyager 那样尝试将代码写入技能库,然后重用技能库,对吧?
所以它改进的地方在于它只是随着时间的推移构建技能库。是的。我一直在思考的一件事,以及来自 Devin(你的死敌)的 playbook 的想法。我不知道你是否见过它们。是的。我的意思是,我们称它们为工作流程,但它们很相似。是的。所以基本上,就像
一旦工作流程有效,你就可以将其持久化到技能库中。我觉得这是一种介于两者之间的方案。就像你说的,在语言和代码之间进行 RAG 很困难,但我感觉这对于 RAG 来说,就像我以前做过一样。上次我这样做的时候,这很有效。所以我只是要跳过。
所有之前失败的东西。是的,我完全同意,我认为这是可能的。但这并不简单。是的,我会解释这两条曲线。基本上,基线只是一个每次都从头开始的代理。而上面的这条曲线是代理工作流程内存,它将成功的经验添加到提示中。
为什么它会改进?原因是它在最初的几个例子中失败了,平均而言,它需要一些时间才能赶上。所以这并不是说它实际上正在改进。你可以简单地将这条曲线视为常数,而这条曲线则是在改进。就像这样。基本上你可以看到它在不断上升。是的。你认为我们该如何解决代理的认证问题?
当你提到认证时,你是指凭据吗?是的。是的,因为我今天看到了一些初创公司的解决方案,但它似乎仅限于它目前能够执行的网站数量或实际的认证方法数量。是的,这是一个很好的问题。所以,我目前的首选解决方案是 GitHub 细粒度身份验证令牌。GitHub 细粒度身份验证令牌允许你指定非常……
非常细粒度的基础。在这个存储库中,你有权执行此操作。在这个存储库中,你有权执行此操作。你还可以阻止人们推送到主分支,除非他们获得批准。你可以做所有这些事情。我认为这些都是为人类开发人员开发的。分支保护规则是为人类开发人员开发的。细粒度身份验证令牌是为 GitHub 应用程序开发的。我认为
对于 GitHub 来说,也许只是进一步推动这一点就是解决方法。对于其他事情,他们完全没有准备好提供这种细粒度的控制。大多数 API 没有像细粒度身份验证令牌这样的东西。这与我的评论是一致的,我认为我们需要为代理做好准备。但我认为 GitHub 身份验证令牌是一个很好的模板,说明你如何开始这样做,也许吧。但是的,我不知道。我没有答案。如果我找到了,我会让你知道的。好的,是的,谢谢。
酷。我将结束演讲。让我看看。好的,这个写了一个脚本。我不会实际为你朗读它。然后是另一个,让我们看看。是的,所以它发送了一个 PR。对不起,PR 的 URL 是什么?所以我不知道这个……对不起,这比预期的要花更长时间。好的,酷。是的,所以这个发送了一个 PR。稍后我会告诉你它是否成功……
哦,它部署在 Vercel 上,所以我实际上可以向你展示。但我先快速尝试一下。对不起,我知道我没有时间。是的,就是这样。我现在有饼状图了。所以是的,这太有趣了。玩这些东西太有趣了,因为你可以在我演讲的时候做这些事情。所以,是的,谢谢。