跳转至

智能体环境

环境 (Env) 代表智能体运行的世界。其主要职责是为智能体提供对其当前 状态 的感知以及一组与该世界交互的 工具

框架使用一个工厂函数 get_env,根据智能体的配置文件创建适当的环境。

核心概念

所有环境都继承自抽象基类 Env,它定义了核心接口:

  • get_state() -> str:返回描述环境当前状态的字符串。此信息被注入到智能体的提示中以提供上下文。
  • get_tools() -> list[Tool]:返回智能体可用于与环境交互的 Tool 对象列表。
  • build() / cleanup():管理环境生命周期的方法,例如启动服务或清理资源。

为了生产使用和最大程度的安全性,我们建议使用 基于 E2B 的环境

  • E2BEnv:用于代码执行和文件操作任务
  • BrowserE2BEnv:用于网络自动化和浏览器交互任务

这些基于云的沙箱提供了企业级的隔离,消除了在本地机器上运行不受信任或 AI 生成代码的相关风险。它们提供自动资源清理、GUI 监控功能 (NoVNC) 以及与现代开发工作流的无缝集成。在实践中,我们使用腾讯云的 Agent Sandbox 服务 来安全地托管这些环境。

可用环境

以下是当前可用的环境实现。

配置名称 环境类 描述 推荐
e2b E2BEnv 基于云的代码解释器 推荐 用于代码执行
browser_e2b BrowserE2BEnv 基于云的浏览器自动化 推荐 用于 Web 任务
shell_local ShellLocalEnv 带有工作区的本地 shell 仅用于本地开发
browser_docker BrowserEnv 基于 Docker 的浏览器 如果 E2B 不可用时使用
base BasicEnv 无环境 用于无需执行的简单任务

BasicEnv

这是最简单和默认的环境。它可以被认为是一个“空”环境。

  • 状态:不提供状态信息(返回空字符串)。
  • 工具:不提供工具(返回空列表)。
  • 使用场景:当智能体的任务不需要任何特定的环境交互时使用。

ShellLocalEnv

此环境为智能体在本地文件系统上提供一个隔离的工作区。

  • 状态:状态字符串包括当前时间、隔离工作区的绝对路径以及对智能体的重要指示:You can only run bash commands in your workspace!!!。这有助于指导和约束智能体的行为。
  • 工具:此环境直接提供工具。必须单独为智能体配置能够执行 shell 命令的工具(例如,bash 工具)。环境的角色是为这些工具提供上下文和工作区。
  • 隔离:为每个运行会话创建一个唯一的工作区目录,防止不同任务之间的干扰。

BrowserEnv

这是一个让智能体能够控制功能齐全的交互式网络浏览器的环境。

  • 架构BrowserEnv 在一个 Docker 容器 内运行浏览器自动化服务。这确保每个智能体会话完全隔离,并拥有一个干净、可预测的浏览器环境。
  • 状态:状态表示网页的当前内容。在每次操作后(例如,点击元素、导航到 URL)都会更新,为智能体提供上次操作结果的反馈。
  • 工具:工具由容器中运行的浏览器服务动态提供。BrowserEnv 充当 代理:它发现可用的工具(例如,go_to_urlclick_elementinput_text)并使它们对智能体可用。当智能体调用工具时,BrowserEnv 将请求转发到 Docker 容器执行。

E2BEnv

E2BEnv 是一个由 E2B 提供支持的基于云的代码执行环境,与本地环境相比,它提供了卓越的安全性和隔离性。

  • 架构:使用在安全、隔离的云环境中运行的 E2B 代码解释器沙箱(code-interpreter-v1 模板)。每个会话都会创建一个新的 AsyncSandbox 实例。
  • 工具:你可以使用 E2BEnv 配置 python、bash、文件编辑工具。
  • 使用场景推荐用于所有代码执行任务,尤其是在安全性受到关注的情况下,特别是运行不受信任或 AI 生成的代码时。
  • 配置:有关使用 Python、Bash 和文件编辑工具的完整设置示例,请参阅 configs/agents/examples/e2b/e2b_python.yaml
# @package _global_
defaults:
  - /tools/e2b/python_executor@toolkits.PythonTool
  - /tools/e2b/bash@toolkits.BashTool
  - /tools/e2b/file_edit@toolkits.FileTool
  - _self_

env:
  name: e2b
  config:
    request_timeout: 5  # 可选:文件操作的超时时间(秒)(默认:5)

agent: ...

BrowserE2BEnv

这是一个基于 E2B 构建的高级浏览器自动化环境,提供带有 GUI 访问权限的安全浏览器控制。

  • 架构:利用 E2B 的 SDK 并结合腾讯云的 Agent Sandbox 服务。集成 Playwright MCP 服务器,通过 Chrome DevTools Protocol (CDP) 提供工具。
  • 工具:由 Playwright MCP 服务器 (@playwright/mcp) 动态提供,包括:
  • 浏览器导航和页面交互
  • 元素点击、文本输入和表单填写
  • 屏幕截图捕获和页面内容提取
  • 多标签页和窗口管理
  • 配置:有关完整设置示例,请参阅 configs/agents/examples/e2b/e2b_browser.yaml。请注意,浏览器工具是从 MCP 服务器自动发现的——不需要手动配置工具。
# @package _global_
defaults:
  - /model/base@model
  - _self_

env:
  name: browser_e2b

agent: ...