Manus背后的引擎:CodeAct让大语言模型成为更好的Agent

全网最简洁 Code Agent,50行代码极速入门,带你通往AGI! 在人工智能领域,Code Agent不仅是技术进步的一个标志,更是我们迈向人工通用智能(AGI)的关键一步。AGI旨在创造能够执行任何智能任务的AI,而Code Agent的能力——自动编写和优化代码——是实现这一目标的基石之一。通过自动处理复杂的编程任务,Code Agent不仅提高了软件开发的效率,更重要的是,它使机器能够理解和执行与软件开发相关的高级认知任务,这是向AGI过渡的必要条件。 阅读详情
AI摘要

本文介绍了CodeAct架构,它将LLM Agent转变为动态微型程序员。CodeAct使用可执行Python代码执行操作,与Python解释器集成,能动态调整操作,还可利用现有软件包。实验表明,CodeAct在复杂任务上成功率更高、操作更少。此外,还介绍了基于CodeAct的开源代理及大模型AI学习阶段。

如果 LLM 大语言模型不只是用 JSON 描述操作,而是可以编写代码来执行操作,结果会怎样?如果它可以在其行动过程中直接利用 Python 等编程语言的全部功能(包括其循环、条件、变量和庞大的库生态系统),结果会怎样?

***这是CodeAct*背后的核心思想,CodeAct 是研究人员提出的一种突破性架构,被用作人工智能助手 Manus.im 的核心技术。CodeAct 代表了一种范式转变,将 LLM Agent从简单的工具用户转变为动态微型程序员,能够以更大的灵活性和效率处理更为复杂的任务。

*摘要*

大型语言模型 (LLM) 代理能够执行广泛的操作,例如调用工具和控制机器人,在应对现实世界的挑战方面表现出巨大的潜力。LLM 代理通常通过生成 JSON 或预定义格式的文本来提示执行操作,这通常受到受限的操作空间(例如,预定义工具的范围)和受限的灵活性(例如,无法组合多个工具)的限制。这项工作提出使用可执行的 Python代码将 LLM 代理的操作合并到统一的操作空间 (CodeAct) 中。与 Python 解释器集成后,CodeAct可以执行代码操作并动态修改先前的操作或通过多轮交互根据新的观察发出新操作。我们对 API-Bank 上的 17 个 LLM 和新策划的基准进行了广泛的分析,结果表明CodeAct优于广泛使用的替代方案**(成功率高出 20%)。CodeAct令人鼓舞的性能促使我们构建一个开源 LLM 代理,它通过执行可解释的代码与环境交互并使用自然语言与用户协作**。为此,我们使用CodeAct收集了一个由 7k 次多轮交互组成的指令调整数据集CodeActInstruct 。我们表明,它可以与现有数据一起使用,以改进面向代理任务中的模型,而不会损害其一般能力。CodeActAgent是从Llama2和Mistral 微调而来的,与Python 解释器集成,并且经过独特定制,可以使用现有库执行复杂任务(例如模型训练)并自主进行自我调试。

1介绍

大型语言模型 (LLM) 已成为自然语言处理 (NLP) 领域的关键突破。当添加允许访问 API 的操作模块时,其操作空间将扩展到传统文本处理之外,从而使 LLM 能够获得工具调用和内存管理等功能并涉足现实世界的任务,例如控制机器人并进行科学实验。

我们探究:如何有效扩展 LLM 代理的行动空间以解决复杂的现实问题? 许多现有研究使用文本进行研究或JSON来产生动作(例如,图1左上角的工具使用)。然而,这两种方法通常都受到动作空间范围的限制(动作通常针对特定任务量身定制)和灵活性受限(例如,无法在单个动作中组合多个工具)。作为替代方法,有几项工作展示了使用 LLM 生成代码来控制机器人或游戏角色的潜力。然而,它们通常依赖于预先指定的控制原语和手工设计的提示,更重要的是,很难根据新的环境观察和反馈动态调整或发出动作。

这项研究提出了CodeAct,这是一个通用框架,允许LLM生成可执行 Python代码作为****动作(图1右上)。CodeAct旨在处理各种应用程序,并具有独特的优势:

img

img

图1:CodeAct和 Text / JSON 操作之间的比较。

  • (1)CodeAct****与 Python 解释器集成,可以执行代码操作并根据通过多轮交互收到的观察结果(例如,代码执行结果)动态调整先前的操作或发出新的操作。
  • **(2)代码操作允许 LLM 利用现有的软件包。**CodeAct可以使用现成的Python包来扩展操作空间,而不是手工制作特定于任务的工具。它还允许 LLM 使用大多数软件中实现的自动反馈(例如错误消息),通过自我调试其生成的代码来改进任务解决。
  • **(3)代码数据在当今的 LLM 预训练中被广泛使用。**这些模型已经熟悉结构化编程语言,从而可以经济高效地采用CodeAct。
  • (4)与JSON 和具有预定义格式的文本相比,代码天生支持控制和数据流,允许将中间结果存储为变量以供重复使用,并允许组合多个工具以使用一段代码执行复杂的逻辑运算(例如,if语句、for循环),从而释放 LLM 利用其预先训练的编程知识来解决复杂任务的潜力。在图 1中,使用CodeAct的 LLM(右上)可以通过for循环(即控制流功能)将相同的工具序列(例如,使用数据流功能将一个工具的输出作为输入传递给另一个工具)应用于所有输入,只需一个操作;而文本或JSON必须对每个输入采取行动(左上)。

我们对 17 个 LLM(包括开源和专有 LLM)进行了广泛的实验,证实了CodeAct的上述优势(3和4)。为了证明优势(3),我们的第一个实验将CodeAct与基线在涉及原子工具使用(即每个操作只使用一个工具)的基本任务上进行了比较,消除了CodeAct提供的控制和数据流优势。结果表明,对于大多数LLM,CodeAct实现了与基线相当或更好的性能。 正如我们的第二个实验(优势4)所证明的那样, CodeAct****在复杂任务上的性能提升更为显著。我们策划了一个新的基准,由82 个人工策划的任务组成,这些任务通常需要在多轮交互中多次调用多个工具。这个基准中的问题通常需要复杂的协调和组合多种工具。凭借其在控制和数据流方面的优势,CodeAct在解决问题的成功率上实现了高达20%的绝对提升**,同时所需的****操作减少了30%**。随着 LLM 功能的增强,这些性能提升也越来越大(图1底部)。

CodeAct的出色性能促使我们开发一个开源LLM代理,该代理可以通过CodeAct有效行动,并通过自然语言与人类协作。为此,我们收集了一个指令调整数据集CodeActInstruct,该数据集包含7k 条高质量CodeAct多轮交互轨迹。CodeActInstruct受代理、用户和环境组成的通用代理框架(图 2)的启发,并专注于代理与计算机(信息查找、软件包使用、外部存储器)和物理世界(机器人规划)的交互。在 CodeActInstruct 上,我们进行仔细的数据选择,以提高从多轮交互中改进的能力(例如,自我调试)。

我们表明,CodeActInstruct可以与常用的指令调整数据一起使用,以提高模型在代理任务中的性能,而不会损害其一般能力(例如,基于知识的QA、编码、指令遵循)。我们的模型称为CodeActAgent,是根据 LLaMA-2和Mistral-7B并不仅使用CodeAct改进了out-of-domain代理任务,还使用预定义格式的文本操作。

CodeAct****还可以从多轮交互和现有软件中受益。如图3所示 ,CodeActAgent专为与Python无缝集成而设计,可以使用现有的 Python 包执行复杂的任务(例如模型训练、数据可视化)。来自环境的错误消息进一步使其能够通过多轮交互中的自我调试自主纠正错误。得益于 LLM 在预训练期间获得的丰富编程知识,这些无需上下文演示即可实现,从而减少了将CodeActAgent适应不同任务所需的人力。

img

图1:CodeAct和 Text / JSON 操作之间的比较。

2CodeAct让法学硕士成为更好的Agent

在本节中,我们首先描述CodeAct框架,并提供支持选择CodeAct的经验证据。我们专注于使用Python作为CodeAct的编程语言,因为它很受欢迎(在TIOBE指数中排名第一,2024)和众多开源软件包。我们旨在使用17个现成的LLM 来回答几个研究问题 (RQ)。在2.2中,我们研究了RQ1:由于大量代码预训练数据,LLM对代码的熟悉程度是否会使CodeAct比文本和JSON更具优势?我们将在2.3中讨论RQ2 :CodeAct是否受益于Python在复杂问题中的先天控制和数据流功能?最后,作为额外的好处,我们将在2.4和图 3中讨论如何使用CodeAct通过实现多轮交互并允许它们访问现有软件来进一步增强LLM代理。

img

图2:通用代理多轮交互框架,描述CodeAct的作用并激励我们构建数据混合。CodeActInstruct 专注于代理与环境的交互,并专门过滤自我改进的规划行为,而我们包含的一般对话数据则专注于代理与用户的交互(3.1)。

2.1什么是CodeAct**?**

在图 2中,我们首先介绍了一个适用于LLM代理在实际应用中的通用多轮交互框架,该框架考虑了三种角色:代理**、用户和环境**。我们将交互定义为代理与外部实体(用户或环境)之间的信息交换。对于每次交互,代理都会从用户(例如自然语言指令)或环境(例如代码执行结果)接收观察(输入),并可选择通过CoT思维链来规划其行动,并以自然语言或环境向用户发出动作(输出)。**CodeAct使用Python代码来整合代理与环境交互的所有动作**。在CodeAct中,每个向环境发出的动作都是一段Python代码,代理将接收代码执行的输出(例如结果、错误)作为观察结果。

<|im_start|>systemA chat between a curious user and an artificial intelligence assistant. The assistant gives helpful, detailed, and polite answers to the user’s questions.The assistant can interact with an interactive Python (Jupyter Notebook) environment and receive the corresponding output when needed. The code should be enclosed using "<execute>" tag, for example: <execute> print("Hello World!") </execute>.The assistant should attempt fewer things at a time instead of putting too much code in one <execute> block. The assistant can install packages through PIP by <execute> !pip install [package needed] </execute> and should always import packages and define variables before starting to use them.The assistant should stop <execute> and provide an answer when they have already obtained the answer from the execution result. Whenever possible, execute the code for the user using <execute> instead of providing it.The assistant’s response should be concise, but do express their thoughts.<|im_end|>

2.2CodeAct展现出作为强大工具使用框架的潜力

在本节中,我们进行了一项受控实验,以了解哪种格式(文本、JSON、CodeAct)更有可能使 LLM 生成正确的原子工具调用。此实验中的表现反映了LLM对相应格式的熟悉程度。我们假设使用CodeAct调用工具是使用模型的工具的更自然的方式,因为模型通常在训练期间会大量接触代码数据。

**设置。**我们重新利用API-Bank并测试LLM的API调用性能,比较CodeAct、JSON和文本操作。对于每个评估实例,我们指示LLM以预定义格式的Python函数调用、JSON对象或文本表达式的格式生成一个原子工具调用。具体示例如下表所示。我们使用 API-Bank 的1级指令和提供的工具集。为了评估API 调用,我们遵循它们的正确性指标,将真实的API输出与实际模型生成的 API 的执行输出进行匹配。

img

结果。我们在表3中展示了结果。对于大多数LLM,即使在原子操作(简单的工具使用场景)中,CodeAct也能实现相当或更好的性能,此时其控制和数据流的优势被削弱。与闭源LLM相比,CodeAct在开源模型中的改进更为突出。此外,与专门的JSON或文本工具调用格式相比,代码数据通常更易于访问,可用于微调开源LLM。尽管JSON对于开源模型来说始终弱于其他方法,但它在闭源 LLM 中实现了不错的性能,这表明这些闭源模型可能已经针对其JSON 功能进行了有针对性的微调。这些结果表明,与其他方法相比,针对CodeAct进行优化是开源LLM 提高其工具使用能力的更好途径,因为它们已经表现出良好的初始CodeAct能力,这是由于在预训练期间大量接触代码数据所致。

img

表 2: API-Bank 上的原子 API 调用正确性。

2.3CodeAct通过更少的交互完成更多工作

在本节中,我们研究LLM代理是否可以从需要复杂工具使用模式的问题的代码控制和数据流中受益。

**M3ToolEval。**如表A.7所示,据我们所知,现有的工具使用基准测试中没有一个包含需要组合多种工具的复杂任务,同时支持评估不同的操作格式。因此,我们策划了一个基准测试M3ToolEval来填补这一空白,它评估了LLM 解决复杂任务的能力,这些任务通常需要在多轮交互中多次调用多个工具。它包含82个人工策划的实例,涵盖网页浏览、金融、旅行行程规划、科学和信息处理等任务。每个领域都伴随着一组独特的手工制作的工具。我们有意保持提示简单,并避免提供任何演示来测试LLM使用工具的零样本能力,类似于不了解小样本提示的新手用户使用该模型的方式。

img

**设置。**我们允许模型生成功能齐全的Python代码,以支持控制和数据流(例如if语句、for循环)。我们遵循下表中描述的JSON和文本的操作格式。在每个回合中,模型可以发出一个操作或提出一个答案,通过与地面实况解决方案的精确匹配进行验证。当达到最多10个交互回合或提交了正确的解决方案时,交互将终止。

img

**指标。**我们通过计算模型提出的答案与真实解决方案相匹配的百分比来衡量成功率。我们还包括平均Turn(转弯)指标:所有评估实例的平均Turn(转弯)次数。

M3ToolEval的定量结果。 我们在表3中包含了完整结果,并在图1中包含了可视化结果的子集。CodeAct通常具有更高的任务成功率(在评估的 17个LLM 中12个),类似于2.2中的趋势。此外,使用CodeAct需要的平均Turn(转弯)次数较低(在评估的17 个LLM 中12 个)。例如,最佳模型gpt-4-1106-preview实现了20.7与下一个最佳行动格式(文本)相比,绝对改进百分比,同时要求2.1平均交互次数更少。然而,开源和闭源 LLM 的绝对CodeAct性能之间仍然存在显著差距,最佳开源模型达到13.4%,而最佳闭源模型gpt-4-1106-preview达到 74.4%。这可能是由于开源模型的任务解决能力较弱,无法在没有演示的情况下遵循复杂的指令,这表明迫切需要改进开源 LLM 以适应零样本设置下的实际现实任务。

img

图3:使用 CodeActAgent (Mistral-7b) 与 Python 包进行多轮交互的示例。模型中没有提供上下文演示。为节省空间,省略了一些消息。有关完整交互, 请参阅https://chat.xwang.dev/r/Vqn108G 。

2.4CodeAct受益于多轮交互和现有软件包

在图 3中,我们展示了LLM代理如何与 Python 集成(即我们3.2中训练的CodeActAgent),并使用现有软件在多轮交互中执行复杂任务。得益于在预训练期间学习到的丰富Python知识,LLM代理可以自动导入正确的Python库来解决任务,而无需用户提供的工具或演示。如图3所示,CodeActAgent可以使Pandas下载和处理表格数据,使用 Scikit-Learn进行机器学习训练测试数据拆分和回归模型训练,并使用 Matplotlib进行数据可视化。此外,使用交互式Python解释器执行代码可以自动显示错误消息,帮助 LLM 代理在多轮交互中“自我调试”其操作,并最终正确完成人类用户的请求。

3赋能开源 LLM Agent 更好地服务CodeAct

CodeAct取得的良好结果激励我们构建一个开源LLM代理,它既可以通过CodeAct与环境交互,也可以使用语言与人类交流。为了提高开源 LLM 的CodeAct能力,在3.1中,我们引入了CodeActInstruct,这是一个包含代理-环境交互轨迹的指令微调数据集。我们在3.1中讨论了数据选择程序,以促进交互行为的改进。此外,我们表明CodeAct可以与现有的代理-用户对话数据(4)一起使用,以平衡生成的 LLM 的对话能力。我们的模型CodeActAgent是从LLaMA-2和Mistral-7B在 CodeActInstruct和一般对话的混合上运行,提高了CodeAct 的性能,同时又不损害 LLM 在多种任务上的总体性能 (3.2)。

3.1CodeActInstruct:代理与环境交互

我们考虑了代理与环境交互中的四个主要用例,并重新利用不同领域的五个现有数据集来生成轨迹:

  • **信息搜索:**我们使用HotpotQA的训练子集生成信息搜索轨迹,其中LLM使用wikipedia_search API(作为Python函数提供)来搜索信息来回答问题。

  • **软件包(工具)使用:**我们使用APPS中的代码生成问题训练集和数学问题。代码生成任务已经涉及导入包和/或通过定义新的Python 函数创建新工具。对于MATH,我们提供了导入Python包(例如用于符号数学的sympy)以解决问题的上下文演示。

  • **外部记忆:**我们重新利用了WikiTableQuestion的训练子集并将其调整为两种需要访问外部存储器的表格推理任务: (1) 基于SQL,要求 LLM 通过sqlite3包与SQL数据库交互,通过SQL执行来回答问题; (2) 基于Pandas,要求模型与pandas表交互以执行数据操作(例如,选择、过滤)。

  • **机器人规划:**我们使用 ALFWorld,一个纯文本的具身环境模拟器,用于生成使用机器人控制API(重新用作Python函数)完成家务的轨迹。遵循 MINT, 我们提供了上下文演示,以鼓励使用for循环和if语句代码块来自动执行重复操作(例如,通过访问不同的位置来搜索项目)。

数据下采样。 我们通过仅保留最具挑战性的实例来对每个数据集进行下采样,旨在使轨迹生成更加高效和经济高效。此外,它还有助于删除现有 LLM 已经可以解决的简单实例。过滤后的数据集的统计数据可以在下表中找到。

有关下采样过程的详细信息如下。

• APPS 中的代码生成任务: 我们删除没有任何可用测试用例的实例。

• WikiTableQuestion 中的表格推理任务: 我们从原始数据集(14149个实例)中选取表格大小最大的3000个实例子集(即按行数和列数排序),并随机分配其中1500个作为基于pandas的问题,其余1500个作为基于SQL的问题。

• HotpotQA 中的网页搜索任务: 我们从原始数据集(有 90447 个实例)中选择了 15661 个标记为“难”的问题,然后随机将它们下采样为 3000 个问题。

• 数学推理: 我们删除了注释难度低于3的问题,得到5586个实例,如下表所示。

img

• ALFWorld 中的具体规划: 我们没有对AlfWorld进行下采样。

**重新利用数据进行多轮交互。**一些数据集(APPS、MATH、WikiTableQuestions)最初是单轮问题,每个指令需要一个解决方案,而在实际的代理用例中,我们通常需要多轮交互来完成每个任务(图1顶部)。遵循 MINT,我们将单轮问题重新设计为多轮问题,允许 LLM与环境交互多轮,然后再决定提交一个解决方案进行评估。具体来说,对于代码生成问题,我们提供了一个上下文示例,以指导LLM在提交解决方案之前在提供的测试用例上测试他们的解决方案。来自原始数据的指标将评估提交的解决方案以确定其正确性。

轨迹生成。 我们使用MINT的评估框架为上述数据集生成交互轨迹并确定每条轨迹的正确性。我们在下采样数据上运行来自OpenAI的GPT-3.5-turbo-0613、来自Anthropic的claude-1-instant和claude-2,除了代码生成之外,我们使用GPT-3.5的更长上下文版本 (GPT-3.5-turbo-0613-16k),因为自调试过程需要长上下文。在这些模型都无法解决的一组问题上,我们使用GPT-4-0613来生成轨迹。

**增强代理通过交互进行改进的能力。**我们从CodeActInstruct中挑选出所有生成轨迹的高质量子集,以提升代理基于先前观察改进下一步行动的能力(例如,从代码执行错误消息中进行自我调试,这是图2中的规划能力)。为了实现这一点,我们有选择地保留那些模型最初遇到错误但在以后的交互中纠正这些不准确的轨迹。对于这些情况,LLM 通常会在初始错误之后进行自我反思,从而主动增强其未来的行动。

给定具有超过2个回合的成功任务解决轨迹,我们应用以下启发式方法来选择可以促进LLM代理的代码即动作、自我完善和指令遵循能力的实例:

• 代码即操作: 我们排除LLM代理不遵守代码即操作框架的轨迹,这可能是由于API调用不正确或生成的操作格式不适合解析和执行。

• **自我改进:**我们选择性地保留那些模型最初遇到错误但随后在后续交互中纠正这些不准确的轨迹。此外,我们消除了在所有代码执行中都只产生错误的成功轨迹。这些被视为无效的演示,因为我们的目标是防止模型学习持续执行错误代码,同时仍设法提供正确答案。

• **遵循指令:**我们删除了LLM代理无法遵循指令并响应用户的罕见情况,通过奇数个交互轮次来识别。

在所有生成的轨迹中,我们保留了来自gpt-4-0613的411 条轨迹和来自gpt-3.5 和claude 的 6728 条轨迹。结果数据集CodeActInstruct 的统计数据如表4所示 。

img

表4:我们的训练混合统计数据以及与之前工作的比较。

**将CodeActInstruct与先前的工作进行比较。**与先前的工作 AgentInstruct相比主要关注使用文本作为动作,而CodeActInstruct 产生的模型在实际实现中更实用,因为使用CodeAct的模型可以直接与 Python解释器和开源工具包交互(图3),减少了动作解析和工具创建的开发工作量。CodeActInstruct是按照通用代理框架(图 2)系统地构建的。它涵盖了不同的领域(例如,与仅考虑QA任务和搜索 API 的 FireAct相比),包含高质量数据(例如,提升代理的自我调试能力)并且规模更大(与表4中的AgentInstruct/FireAct相比,数据轨迹多3.8 倍/3.5倍,标记多5倍/19倍)。正如我们在表5中通过经验显示的那样,与AgentInstruct和FireAct相比,CodeActInstruct的结果模型(相同主干)实现了24%和119%的相对改进。

CodeActInstruct可与现有的代理-用户对话数据一起使用。 我们使用 OpenOrca的子采样集专注于单轮思维链 (CoT) 推理,ShareGPT来自两个包含人类与 LLM 之间的多轮对话的来源,以及 CapyBara专注于多轮对话中的推理。统计数据和以下采样细节可在下列信息中找到。

• ShareGPT: 我们删除所有单轮对话,然后进行随机子采样以获得所需的最终数字。

• ShareGPT (GPT-4) (OpenChat) : 我们不对该数据集进行子采样。

• OpenOrca: 我们选择 OpenOrca 的 CoT 子集,然后执行随机子采样以得到所需的最终数字。

• CapyBara: 我们不对该数据集进行子采样。

3.2****CodeActAgent

我们微调 Llama-2 7B和 Mistral7B在CodeActInstruct 和一般对话的混合体上(表4)得到 CodeActAgent。

**训练设置。**我们对 Llama-2 的序列长度为 4,096 个标记,对 Mistral 的序列长度为 16,384 个标记,进行全参数监督微调。

实验细节如下:

所有SFT实验均在一个4xA100 40GB SXM节点上使用 Megatron-LLM 的一个分支训练吞吐量约为每秒9k个token。我们对所有多轮数据使用chatML格式,并且只计算和优化助手响应的损失。我们将短实例打包成较长的实例,并应用flash注意力来提高训练效率。

我们训练 LLaMA-2 和 Mistral LLM,张量并行度为4,学习率为1e-5,warmup步骤为 50,余弦衰减(最终学习率为1e-6)。我们训练 5 个 epoch,批处理大小为 32。我们对所有实验都使用第 3 个 epoch 检查点。

评估设置。 我们使用 MINT评估LLM与CodeAct在各种代理任务上的表现。CodeActAgent有一些训练领域与MINT的评估重叠(即 MINT 包括ALFWorld和MATH),因此我们分别报告MINT在域内和域外的表现。除非另有说明,否则我们用交互回合来衡量 MINT 任务的成功率钾=5我们还使用MiniWob++中的文本操作来评估域外代理任务(计算机任务) 和ScienceWorld (基于文本的小学科学课程模拟器) 来测试 CodeActAgent是否可以推广到不同的动作格式。最后,我们包括一套通用的 LLM 评估任务来评估通用能力:MMLU用于基于知识的问答,HumanEval用于单圈代码生成,GSM8K用于单转免工具数学推理,以及 MTBench来遵循指令。

CodeActAgent在CodeAct任务中表现出色。如下表5所示,CodeActAgent(两种变体)在 MINT 的域内和域外子集上的表现均优于所有评估过的开源LLM。在M3ToolEval上,我们发现 CodeActAgent (Mistral) 的表现优于类似规模(7B和13B)的开源 LLM,甚至达到与70B 模型相近的性能(表3)。令人惊讶的是,Llama-2 变体没有出现任何改进(有可能是训练数据潜在的影响)。

img

CodeActAgent 泛化至文本操作。 在对域外文本操作进行评估时,从未针对文本操作进行优化的CodeActAgent (LLaMA2, 7B) 实现了与 AgentLM-7B对文本操作进行了明确的调整。

CodeActAgent 保持或提高了一般LLM任务的性能。 在表5中,我们发现CodeActAgent(两种变体)在我们测试的一般LLM任务上表现更好,但CodeActAgent(Mistral7B)在MMLU上略有下降。

**消融研究(**Ablation Study)。 表A.8展示了消融实验,以确定 CodeActInstruct 和一般对话的重要性。CodeActInstruct和一般对话都有助于代理任务,而一般对话对于维持一般任务的性能至关重要。

4相关工作

4.1LLM 代理中的动作模块

基于 LLM 的自主代理通常围绕四个组件构建:定制配置文件**、长期记忆能力****、推理和规划算法****,以及最重要的行动模块**。行动模块在环境中是促进 LLM 代理与外部实体(包括人类)有效交互的关键和工具。在本研究中,我们解决了标准化LLM代理动作空间的关键问题。CodeAct与先前研究之间的根本区别促使 LLM 生成用于解决问题的代码。现有研究已经探索了在不同领域使用代码生成来解决任务,例如 Code4Struct进行结构化预测,PaL进行数学推理,Meta-GPT用于多智能体协作、代码即策略用于机器人控制,ViperGPT用于视觉问答,Voyager用于玩游戏,Data Interpreter用于数据科学任务等。

我们注意到一项同时进行的研究 TaskWeaver同样赞同使用代码。(TaskWeaver 值得表扬,因为它首次将代码集成到 LLM 代理的动作空间中,而CodeAct明确量化了 LLM 代理内代码操作的好处,引入了一个独特的指令调整数据集CodeActInstruct,专门用于增强代理执行基于代码的操作的能力,以及一个开源 LLM 代理CodeActAgent重新定义了 LLM 代理在实际应用中的潜力。)

4.2改进 LLM 代理

增强 LLM 代理的两种主要方法是快速工程和指令调整,正如下图中的论文快速工程, 已经引入了许多策略来改进Cot思维链推理,包括基于自我一致性的推理和基于树的方法。此外,LLM可以策略性地反思以前的计划,使他们能够通过反复试验来改进初始操作。与快速工程相比,指令调整本质上增强了LLM,特别是在其代理能力方面,为了进行有效的训练,人类注释者可以为特定的代理任务策划专家演示。为了最大限度地减少人工注释工作,先前的研究使用更强大的 LLM 创建合成数据集,将代理功能提炼到本地模型中,重点关注工具的使用、相互作用和社交技能。CodeActInstruct与后一种方法一致,并使用更强大的 LLM 创建数据集。

img

5结论

本研究引入了CodeAct,它使用可执行Python代码执行LLM代理的操作,这比使用文本或JSON操作更具优势,尤其是在复杂场景中。我们收集以CodeAct为中心的多轮交互轨迹 CodeActInstruct以进行指令调整,并训练专门设计用于与Python无缝集成的CodeActAgent,它可以利用现有的Python包执行复杂的任务(例如模型训练)并通过自我调试自动纠正错误。

如何学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

在这里插入图片描述

第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范
  • …

第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署
  • …

第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建
  • …

第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案
  • …

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】

在这里插入图片描述

CodeAct Agent 框架概览 CodeAct Agent 是 OpenHands 的核心组件之一,其设计理念在于将所有 LLM 代理的行为统一归纳到一个“代码”操作空间中,从而实现更简洁、高效的执行方式。受 CodeAct 概念(参考论文与相关推文)的启发,该代理能够在与人类进行自然对话的同时,直接执行代码操作,从而在任务处理上既实现了自然语言交流,又兼顾了直接代码执行的能力。代理可与用户进行自然语言交流,用以询问澄清问题、进行确认或请求更多细节,帮助更好地理解任务需求或解决不明确之处。 阅读详情

相关推荐

【AI Agent系列】【源码实战】CodeAct - 使用AgentScope完整实现 - 代码使LLM Agent更强大高效灵活

CodeAct 让大模型根据任务生成可执行代码来将所有工具的调用统一到一个环境中,与Python解释器集成,自动执行代码动作,并在多轮交互中根据新观察动态修改先前动作或发出新动作,大大提升 Agent 与环境之间的交互能力和灵活性。本文我们来使用AgentScope框架来完整实现一遍,从而对CodeAct有一个更具体和深入的认识。

同学小张的博客 1174

CodeAct

(4) 与JSON和预定义格式的文本相比,代码本质上支持控制和数据流,允许将中间结果存储为变量以供重用,并用一段代码允许组合多个工具来执行复杂的逻辑操作(例如,if-语句、for循环),从而释放大模型预训练的编程知识来处理复杂任务的潜力。然而,就CodeAct的绝对性能而言,开源和闭源LLM之间仍存在显著差距,最佳开源模型的绝对性能提高了13.4%,而最佳闭源模型gpt-4-1106-preview的绝对性能提高了74.4%。此外,使用CodeAct执行任务所需的平均交互轮数也较低。whaosoft ai

whaosoft143ai的博客 1817

汽车诊断之UDS入门-0x19 0x0A服务

0x19 0x0A解析

weixin_44842720的博客 3836

创新未来:让代码行动起来——深度探索CodeAct项目

创新未来:让代码行动起来——深度探索CodeAct项目 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在这个人工智能快速发展的时代,我们迎来了一个开创性的开源项目——Executable Code Actions Elicit Better LLM Agents(简称CodeAct)。CodeAct通过引入可执行的Python代码作为大型语言模型(LLMs)的行为表示...

gitblog_00016的博客 1952

SEMI E40标准的加工任务状态模型(Process Job State Model)解析

半导体制造设备的自动化控制离不开对加工任务(Process Job)的精细管理。SEMI E40标准定义了加工任务的全生命周期状态模型。分层建模,支持嵌套与并发子状态,确保复杂流程的灵活控制。SEMI E40通过。

bengg123的博客 1774

工业场景实战:基于YOLO与多格式标注的传送带异物检测数据集构建指南

本文详细介绍了基于YOLO与多格式标注的传送带异物检测数据集构建方法,涵盖数据采集、标注技巧(YOLO、COCO、VOC格式)、数据增强策略及实战案例。通过工业级解决方案,有效提升异物检测准确率与效率,适用于各类工业场景。

weixin_29168393的博客 463

Manus沙箱与MCP协议的工程权衡:可靠执行vs开放集成

AI智能体框架的核心挑战在于如何平衡执行可靠性与系统可扩展性。MCP(Model Context Protocol)作为面向解耦的开放协议,强调工具即服务、调用即接口,适合快速集成多源API;而Manus则代表端到端可控的沙箱范式,通过内置浏览器、SQL执行器与结构化日志,将规划-执行-验证全链路收束于确定性环境。二者差异本质是工程可信度的设计取舍:MCP依赖Server端实现质量,Manus将责任内化为沙箱行为契约。在金融对账、合规报告等强确定性场景,Manus的‘每步留痕’与‘降级可溯’能力构成关键价值

weixin_30721077的博客 421

基于STM32与MPU6050的实时姿态检测系统设计与实现(源码+硬件解析)

本文详细介绍了基于STM32单片机与MPU6050传感器的实时姿态检测系统设计与实现。通过硬件解析、传感器校准、卡尔曼滤波算法和欧拉角计算,实现高精度姿态检测。提供完整源码和调试技巧,适用于无人机、平衡车等嵌入式开发项目,解决噪声干扰和数据漂移等常见问题。

jupi8的博客 494

CodeActAgent :Executable Code Actions Elicit Better LLM Agents解读

大型语言模型(LLM)代理,能够执行广泛的操作,例如调用工具和控制机器人,在解决现实世界的挑战方面显示出巨大的潜力。通常,LLM代理通过生成JSON或预定义格式的文本来产生行为,这通常受限于有限的操作空间(例如,预定义工具的范围)和有限的灵活性(例如,无法组合多个工具)。本研究提出使用可执行的Python代码将LLM代理的操作整合到一个统一的操作空间(CodeAct)。通过集成Python解释器,CodeAct可以执行代码操作,并通过多轮交互根据新的观察结果动态调整先前的操作或发出新的操作。

jiayoudangdang的博客 2158

GB28181协议实战:5分钟搞定海康摄像头SIP注册失败问题(附Wireshark抓包分析)

本文详细解析了海康摄像头在GB28181协议下SIP注册失败的7个关键原因及解决方案,包括网络可达性、鉴权参数、NAT穿越等核心问题。通过Wireshark抓包分析,提供快速定位方法,帮助工程师高效解决SIP注册失败问题,提升实时图像联调效率。

weixin_29212867的博客 553

30天入门Python(办公篇)——第34天:pandas - 数据处理与分析利器

摘要 本文介绍了Python数据分析库pandas的核心功能,包括数据结构和基本操作。主要内容涵盖:1) Series和DataFrame两种核心数据结构的创建与使用;2) 多种文件格式的读写方法;3) 数据查看、筛选和清洗技巧;4) 基础统计分析功能;5) 数据透视表和交叉表制作;6) 数据排序与合并等变换操作。文章通过大量代码示例演示了pandas在数据处理各环节的应用,适合作为pandas入门的实践指南,帮助读者快速掌握这一强大工具的基本使用方法。

weixin_42636075的博客 303

CodeAct范式

在大模型agent领域,比较常见的是ReAct范式,它的核心思想是把推理(Reasoning)和行动(Acting,通常是工具调用)结合起来。LLM 一边输出“思考过程”,一边决定调用什么工具或采取什么行动,再根据观察结果继续推理。而CodeAct的核心思想是让 LLM 输出 可执行代码(而不是自然语言的行动指令),然后在安全环境里执行代码,执行结果再反馈给模型,进入下一轮。虽然CodeAct还有很多问题需要解决,但是随着大模型编程的能力越来越强,这些问题会大大缓解。

sinat_28694519的博客 959

PCL 建筑物点云立面和平面分割提取【2025最新版】

在建筑物点云中,立面点和平面点的法向量存在明显的差异,根据法向量在Z方向的分量设置相应得阈值即可实现立面点与平面点的分割。

点云侠的博客 1962

代码驱动的智能:解锁 LLM 代理的新潜力

在人工智能领域,语言模型(Large Language Models, LLMs)的崛起已然成为一场革命。它们不仅能够生成流畅的文本,还能通过调用工具、操控机器人等方式,与现实世界产生交互。然而,现有的 LLM 代理在执行复杂任务时,往往受限于预定义的动作空间(例如,固定的工具调用格式)和缺乏灵活性(例如,无法动态组合多个工具)。为了解决这些问题,一项名为的新框架应运而生,它通过生成可执行的 Python 代码,将 LLM 的动作统一到一个强大的代码空间中,从而大幅提升了任务解决能力。

步子哥的博客 1088

《QGIS快速入门与应用基础》223:纸张大小与方向(A4/A3/自定义)

本文详细介绍了QGIS布局页面设置的核心操作,重点讲解了纸张大小与方向的设置方法。文章首先指出页面设置是地图排版的基础前提,强调合理设置可避免导出打印时出现尺寸不符等问题。随后详细说明了三种打开页面设置面板的方式,并重点解析了纸张设置的要点:标准预设纸张(A4/A3等)适用于大多数场景,提供国内常用规格对照表;自定义纸张则需谨慎使用,需注意单位选择和尺寸限制。通过界面标注图和操作步骤示意图,帮助用户掌握正确的设置方法,确保最终出图符合规范要求。文章特别提醒新手要优先使用标准预设纸张,避免常见错误,为后续地图

LuckyHanMo的博客 344

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

CodeAct:超越React Agent架构的新范式(附代码)

摘要 本文介绍了一种新型AI智能体架构CodeAct,它通过让大语言模型直接编写和运行Python代码来完成任务,相比传统JSON函数调用或纯文本指令方式具有显著优势。CodeAct利用Python解释器实时执行AI生成的代码,支持多轮交互调试,能够更灵活地组合多个工具操作。文章对比了传统方式和CodeAct的区别,并提供了基于langchain-codeact库的具体实现示例,包括工具定义、代码执行逻辑和运行流程。这种架构特别适合需要复杂任务组合的场景,为AI智能体开发提供了新思路。

一如年少模样丶的博客 1068

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

CodeAct:颠覆传统Agent,让大模型直接写代码解决复杂问题!

CodeAct是一种超越传统Agent架构的新范式,让大语言模型通过编写和运行真实Python代码与外部世界互动。它将Agent想法转化为可执行代码,通过Python解释器运行并获取反馈,形成闭环交互流程。这种架构融合了LLM的规划推理能力与Python生态系统的丰富功能,使AI能自主完成复杂任务并具备调试纠错能力。

m0_74942241的博客 1112

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

5分钟上手CodeAct:零基础搭建你的智能代码执行代理

CodeAct是一个强大的智能代码执行代理框架,旨在帮助开发者快速构建能够理解和执行代码的AI助手。本指南将带你在5分钟内完成从环境搭建到成功运行第一个智能代码代理的全过程,即使你是零基础也能轻松上手。 ## 🚀 什么是CodeAct? CodeAct是"Executable Code Actions Elicit Better LLM Agents"论文的官方实现,它通过将代码作为操作单元

gitblog_00495的博客 464

AgentScope : 与CodeAct智能体对话

CodeAct Agent是一个Agent,它不仅可以聊天,还可以为你编写和执行Python代码。在本示例中,将介绍另一种赋予Agent调用工具能力的方法,特别是通过直接向Agent提供工具的相应代码,然后允许Agent独立地使用它们。在工具使用方面,CodeAct Agent还允许Agent使用工具(Tools)来解决问题,但是以不同的方式。

消极的人永远是对的,积极的人选择勇往直前 1388

一站式了解CodeAct范式

基本定义CodeAct(Code as Action)是一种将可执行代码作为大型语言模型智能体统一行动空间的框架。其核心在于让模型直接生成代码(如Python)来调用工具、处理数据或进行计算,通过执行代码并观察结果,形成"规划-行动-观察"的闭环。设计动机传统智能体使用文本或结构化格式(如JSON)描述动作,在需要组合多个工具、控制数据流或进行复杂逻辑推理的任务中存在局限。CodeAct利用模型在预训练阶段已接触大量代码数据的优势,使其能以更自然、更强大的方式解决问题。

Vita_min_C的博客 387

让大模型用代码说话(非常详细),CodeAct技术原理从入门到精通,收藏这一篇就够了!

当 Function Calling 局限于预定义工具、ReAct 受困于文本格式解析时,一种更激进的 Agent 方案浮出水面——让大模型直接生成并执行代码来解决问题。本文将深入剖析 CodeAct 的设计理念、架构实现与工程实践。

xx_nm98的博客 499

AI辅助编程背后技术揭秘:Code Agent 是怎么实现的

而 Agents 则是根据当前项目状态,选择合适的agent 完成工作,然后只做review ,比如如果需要修改文件,他会调用 /coding 工具,并且用文字,二次阐述要做什么,/coding Agent 会根据他的描述,实现具体的需求。可以看到,基本调用一次工具,就是发起一次新的请求,再流式解析和调用,这样相当于把当前的现状(修改结果),大模型重新进行了获取,从而能够指导接下来如何做决策。我们给的工具非常底层,只提供查找,罗列,修改等几个有限的原子工具,然后 Agent 自己来前面的决策流程。

allwefantasy的专栏 2845

【必看收藏】AI Agent设计模式深度解析:ReAct、CodeAct等五大模式实战指南

AI Agent五大核心设计模式解析 本文系统阐述了AI Agent开发中的五种关键设计模式:ReAct模式通过推理-行动循环处理外部信息任务;CodeAct模式利用代码生成解决复杂计算问题;计划模式提供结构化执行路径并支持动态调整;反思模式通过迭代优化提升输出质量;人机协作模式在关键节点引入人工判断确保可控性。文章结合理论讲解与代码实例,详细说明每种模式的工作原理、适用场景和实现方法,为开发者构建高效可靠的Agent系统提供实用指导。其中重点介绍了ReAct模式的标准实现与基于Function Call的

优快云_224022的博客 1203

基于LlamaIndex实现CodeAct Agent:代码执行工作流的技术架构与原理

本文详细阐述了基于LlamaIndex构建CodeAct Agent的完整技术方案,从代码执行环境的构建、工作流事件的定义到完整Agent的实现。通过将代码生成与执行能力无缝集成到对话式AI系统中,CodeAct Agent代表了一种新型交互范式,能够将自然语言指令转化为可执行的计算逻辑。这一技术架构的核心价值在于其可扩展性和灵活性。开发者可以根据特定应用场景定制执行环境、函数库和安全策略,从而构建出专用的智能工具。专业领域软件开发辅助工具数据科学探索与可视化系统教育领域的编程学习平台。

deephub 4951

OpenHands,媲美v0与Cursor的开源AI编程工具,帮你解密 AI 编程工具的工作原理

AI在编程领域的应用迅速发展,涌现出了众多新兴的AI编程工具。今天,我将为大家介绍一款开源的AI编程工具——OpenHands。它不仅具备与Cursor和v0类似的自然语言编程体验,还在SWE-bench测试中表现出色。在这篇博文中,我们将探讨OpenHands的核心功能、架构设计、如何使用Docker进行部署以及它在编程效率方面的潜力。

surfirst的博客 9304

CodeAct范式:让大模型通过代码执行增强复杂任务处理能力

本文深入解析了CodeAct范式,这是一种让大模型通过生成并执行代码来增强复杂任务处理能力的新方法。文章阐述了CodeAct如何弥补大模型在精确计算和现实操作上的短板,并详细介绍了其在复杂计算、数据分析、编程辅助等高精度场景下的应用优势。通过一个基于LangGraph构建正弦波绘图智能体的实战教程,展示了CodeAct的实现原理与工作流程,并探讨了其面临的挑战与未来潜力。

weixin_29200485的博客 125
上一篇: AI开发界的“瑞士军刀”!LangChain深度解析:从入门到实战全攻略
下一篇: 一口气讲清楚:LLM、MCP、EMB
Python_金钱豹
博客等级 码龄5年 1万+粉丝 2835原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值