CodeAct

CodeAct 允许代理通过编写代码并使用 execute_code 工具执行来解决任务。 CodeAct 不要求模型每次只发出一个工具调用,而是在单个执行步骤中提供一个沙盒环境,用于结合控制流、数据转化和工具编排。

在 Agent Framework 中,CodeAct 通过特定于后端的包(而不是单个内置核心类型)公开。 连接器可以添加 execute_code 工具、注入运行时指南,并且选择性地公开可从沙盒内部调用的提供程序拥有的工具。

为什么 CodeAct

现代 AI 代理通常不是受限于模型质量,而是被协调开销所限制。 当代理将许多小型工具调用链接在一起时,每个步骤通常需要另一个模型轮次,这会增加延迟和令牌的使用。

CodeAct 简化该模型 -> 工具 -> 模型循环。 代理框架可以公开单个 execute_code 工具,并让模型将完整计划表示为简短程序,而不是要求模型一次选取一个工具。 工具保持不变,模型保持不变,主要更改是计划在沙盒中运行一次,而不是分散在多个工具调用轮次中。

对于工具密集型工作负荷,它可以大幅减少端到端延迟和令牌使用,同时在一个代码块中保持计划紧凑且可审核。 Hyperlight 基准示例直接比较该形状。

当 CodeAct 适合时

当任务受益于以下情况时使用 CodeAct:

  • 将多个工具调用与循环、分支、筛选或聚合组合在一起
  • 在返回最终答案之前转换工具结果
  • 在运行过程中生成更大的结构化输出或项目
  • 使某些工具仅在受控的执行环境中可用
  • 将许多小型、可链接的查找或轻型计算折叠到一个执行步骤中

使用直接工具调用时:

  • 任务只需要一两个工具调用,因此要删除的业务流程开销很少
  • 每个调用都有副作用,应该对模型和用户分别可见
  • 需要每次呼叫都审批提示,而不是对整个 execute_code 运行仅做一次审批决策。

CodeAct 如何集成到代理框架中

CodeAct 连接器通常对运行执行四项操作:

  1. 将工具 execute_code 添加到面向模型的工具界面。
  2. 提供关于配置的沙盒运行时的指示说明。
  3. (可选)通过 call_tool(...).. 公开提供程序拥有的工具。
  4. 应用功能限制,例如文件系统访问或出站网络允许列表。

由于连接器拥有运行时配置,因此确切的设置详细信息取决于所选后端。

当前限制

CodeAct 非常适合工具密集型工作流,但需要记住一些当前约束:

  • 目前文档中的 Agent Framework 连接器首先支持 Python,通过 Hyperlight CodeAct。 .NET 文档即将推出。
  • 审批目前适用于 execute_code 整个呼叫。 如果需要逐个批准单个操作,请将这些操作保留为直接代理工具,而不是依赖 call_tool(...)
  • call_tool(...) 访问的工具仍在主机进程中执行。 使用经过审核的有限主机工具进行敏感 I/O,而非不必要地扩大沙盒访问权限。
  • 当编排开销占主导地位时,CodeAct 最有效。 对于只有一两个工具调用的小型任务,添加的抽象可能并不能带来太多好处。
  • 工具名称、参数元数据和返回形状在这里更为重要,因为模型依据该合同进行代码编写,而不是每次从一个直接工具调用中选择。

开始

即将推出。

开始

对于 Python,目前记录的连接器是 Hyperlight CodeAct

Hyperlight 包提供:

  • HyperlightCodeActProvider 用于基于上下文提供程序的运行
  • HyperlightExecuteCodeTool如果想要直接接线execute_code
  • 在沙盒中由提供者管理并保持可用的工具 call_tool(...)
  • 沙盒运行时的可选文件系统和出站网络配置

请参阅 Hyperlight CodeAct 以获取安装信息、示例、何时使用 print(...)/output/ 等特定于运行时的指南,以及当前特定于 Hyperlight 的限制。

后续步骤