为什么AI Agent需要沙箱

让大模型执行代码是Agent的核心能力,但直接让AI在生产环境运行代码极度危险:一个错误的rm -rf就可能清空数据库。E2B(e2b.dev)专为AI Agent提供云端代码执行沙箱:每次执行代码都启动一个独立的隔离环境(包括文件、网络、进程),执行完销毁。这种”用完即弃”的设计让AI Agent安全执行任意Python代码成为可能。本教程详解如何用E2B构建生产级Agent。

第一步:E2B账号注册

  1. 访问 e2b.dev
  2. 点击”Get API Key”
  3. 用GitHub账号登录
  4. 进入Dashboard,可以看到自己的API Key
  5. 免费套餐:每月100小时沙箱使用时长
  6. Pro套餐:$0.10/小时,无限使用
  7. 保存API Key到环境变量

第二步:安装SDK和基础调用

  1. 安装Python SDK:pip install e2b
  2. 设置环境变量:export E2B_API_KEY="e2b_xxxxxxxxxxxxx"
  3. 测试代码:
    from e2b import Sandbox
    sandbox = Sandbox()
    result = sandbox.process.start_and_wait("echo 'Hello World'")
    print(result.stdout) # Hello World
    sandbox.close()
  4. 运行:python test.py
  5. 第一次调用约3秒(创建沙箱),之后约0.5秒

提示:沙箱在云端,可以打印长代码执行结果,无需担心本地环境

第三步:执行Python数据分析

  1. 准备数据文件 sales.csv
  2. 代码:
    from e2b import Sandbox
    sandbox = Sandbox()
    # 上传文件
    with open("sales.csv") as f:
    sandbox.files.write("/home/user/sales.csv", f.read())
    # 执行分析
    code = """
    import pandas as pd
    df = pd.read_csv('/home/user/sales.csv')
    print(df.groupby('product')['sales'].sum())
    print('Top 5 products:');
    print(df.nlargest(5, 'sales'))
    """
    result = sandbox.process.start_and_wait(f"python -c '{code}'")
    print(result.stdout)
    sandbox.close()
  3. 输出:在云端运行pandas的结果
  4. 无需本地安装pandas

第四步:让AI Agent写代码并执行

用LangChain集成E2B做Agent:

  1. 安装依赖:pip install e2b langchain langchain-openai
  2. 代码:
    from langchain.agents import AgentExecutor, create_openai_tools_agent
    from langchain_openai import ChatOpenAI
    from langchain.tools import tool
    from e2b import Sandbox

    @tool
    def run_python_code(code: str) -> str:
    """Run python code in secure sandbox"""
    sandbox = Sandbox()
    result = sandbox.process.start_and_wait(f"python -c '{code}'")
    sandbox.close()
    return result.stdout

    llm = ChatOpenAI(model="gpt-4o")
    tools = [run_python_code]
    agent = create_openai_tools_agent(llm, tools, prompt)
    executor = AgentExecutor(agent=agent, tools=tools)

    executor.invoke({"input": "分析销售数据.csv,按产品分类汇总销售额"})

  3. Agent自动:
    1. 用pandas读取文件
    2. groupby汇总
    3. 返回结果

第五步:构建数据分析师Agent

完整实战项目:能读Excel、自动分析的Agent:

  1. 创建Flask服务,提供HTTP API
  2. 用户上传Excel文件
  3. Agent接收用户的自然语言问题(如”显示各区域销售趋势”)
  4. Agent用E2B Python生成matplotlib图表
  5. 返回图表的Base64编码,前端展示

代码核心:

from openai import OpenAI
import e2b

client = OpenAI()
sandbox = e2b.Sandbox()

def analyze(file_url, question):
sandbox.files.write('/data.xlsx', requests.get(file_url).text)
code = sandbox.process.start_and_wait(f'python analyze.py {question}')
chart = sandbox.files.read('/chart.png')
sandbox.close()
return chart # base64图片

第六步:爬虫Agent

Agent用E2B沙箱做合规爬虫:

  1. 沙箱自带requests/beautifulsoup
  2. Agent写爬虫代码、E2B执行
  3. 风险点:
    • 沙箱有网络限制,避免被恶意用
  4. 可以设置:
    • 允许域名白名单
    • CPU使用限制
    • 网络带宽限制

沙箱高级配置

生产环境部署考虑:

  • 超时:Sandbox(timeout=30) 30秒超时自动关闭
  • 资源限制:限制内存2GB、CPU 1核
  • 模板:自定义镜像预装更多库(如pandas、sklearn)
  • 持久化:用Snapshot保存环境状态
  • 审计:所有API调用记录到日志

效率数据

实测E2B性能:沙箱创建中位数700ms,冷启动约3秒。每个沙箱费用约0.001美元。1000次Agent调用约1美元。多数Agent场景成本可忽略不计。

常见误区

  • Q:E2B的数据安全?A:沙箱用完销毁,数据不留存。如需持久化用Snapshot
  • Q:能否禁用网络?A:Sandbox(internet_disabled=True)
  • Q:支持其他语言?A:除了Python还支持JS、Ruby、R、C++
  • Q:比Docker便宜?A:纯运维Docker更便宜,但Agent场景E2B极大简化代码