智能体环境
环境 (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_url、click_element、input_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: ...