CodeAct

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

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

为什么 CodeAct

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

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

对于工具密集型工作负荷,它可以大幅减少端到端延迟和令牌使用,同时在一个代码块中保持计划紧凑且可审核。 有关并排接线比较,请参阅 Hyperlight CodeAct 集成

何时适合使用 CodeAct

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

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

在以下情况下坚持使用直接工具调用:

  • 任务只需要一两次工具调用,因此几乎没有需要移除的编排开销
  • 每次调用都有副作用,这些副作用应单独对模型和用户可见
  • 你需要每次调用的审批提示,而不是围绕整个 execute_code 运行的单一审批决策

CodeAct 如何集成到代理框架中

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

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

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

当前限制

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

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

开始

对于 .NET,当前文档中说明的连接器是 Hyperlight CodeAct,以 Microsoft.Agents.AI.Hyperlight 包的形式提供。

包提供:

  • HyperlightCodeActProvider — 一个为每个运行注入 AIContextProvider 和 CodeAct 指南的 execute_code
  • HyperlightExecuteCodeFunction — 当沙盒配置固定时用于静态/手动接线的独立 AIFunction
  • 通过 call_tool(...) 在沙盒内保持可用的提供程序管理工具
  • 用于审批的 CodeActApprovalModeApprovalRequiredAIFunction 集成
  • 沙盒运行时的可选文件系统 (FileMountsHostInputDirectory) 和出站网络 (AllowedDomains) 配置

Important

.NET 包目前为预览版,并且依赖于尚未发布到 nuget.org 的 Hyperlight.HyperlightSandbox.Api NuGet 包。有关当前安装注意事项和平台要求,请参阅 Hyperlight CodeAct

有关安装、示例和特定于运行时的指南,请参阅 Hyperlight CodeAct

开始

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

Hyperlight 包提供:

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

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

注释

Go 语言对该功能的支持即将推出。 有关最新状态,请参阅 Agent Framework Go 存储库

后续步骤