CodeAct
CodeAct 允许 Agent 通过编写代码并使用 execute_code 工具来执行和解决任务。与要求模型每次只发出一个工具调用不同,CodeAct 在单个执行步骤中提供一个沙盒环境,用于结合控制流、数据转换和工具编排。
为什么需要 CodeAct
现代 AI Agent 通常不是受限于模型质量,而是被协调开销所限制。当 Agent 将许多小型工具调用链接在一起时,每个步骤通常需要另一个模型轮次,这会增加延迟和 Token 使用。
CodeAct 简化了 模型 → 工具 → 模型 循环:
| 传统工具调用 | CodeAct |
|---|---|
| 每个工具一次模型轮次 | 一次模型轮次,生成完整程序 |
| 多次往返,延迟高 | 代码在沙盒中一次执行 |
| 每个工具输出分别返回 | 合并结果一次返回 |
| 无法做循环/分支逻辑 | 原生 C#/Python 控制流 |
何时使用 CodeAct
适合 CodeAct:
- 将多个工具调用与循环、分支、筛选或聚合组合
- 在返回最终答案前转换工具结果
- 运行过程中生成较大结构化输出或项目
- 使某些工具仅在受控执行环境中可用
- 将多个小型、可链接的查找或轻量计算折叠到一个执行步骤
使用直接工具调用:
- 任务只需要一两个工具调用
- 每个调用有副作用,需要分别对模型和用户可见
- 需要每次调用都审批提示,而不是对整个
execute_code仅做一次审批决策
CodeAct 如何集成到 Agent 框架
CodeAct 连接器通常执行四项操作:
- 将
execute_code工具添加到面向模型的工具界面 - 提供关于配置的沙盒运行时的指示说明
- (可选)通过
call_tool(...)公开提供程序拥有的工具 - 应用功能限制(文件系统访问、网络允许列表等)
由于连接器拥有运行时配置,确切的设置细节取决于所选后端。
当前限制
- 目前有文档记录的连接器是 Hyperlight CodeAct,提供 Python 和 .NET 版本(预览版)
- 审批适用于
execute_code整个调用——如需逐个批准单个操作,将这些操作保留为直接代理工具 - 当编排开销占主导地位时 CodeAct 最有效——对于一两个工具调用的小任务,添加的抽象收益不大
- 工具名称、参数元数据和返回形状在这里更为重要,因为模型依据合同进行代码编写
下一步:代理安全 — 安全策略和内容过滤。