Fork me on GitHub

E2B介绍与示例

很多人看完 E2B 的介绍之后,仍然不知道Agent 到底什么时候会调用 E2B

下面用一个完整的真实 Agent Workflow来说明。


场景:AI 数据分析 Agent

假设你开发了一个类似 ChatGPT Data Analysis(以前叫 Code Interpreter)的 Agent。

用户上传一个 Excel。

然后说:

"请分析一下近三年的销售数据,并生成一份 PDF 报告,同时预测 2027 年销售额。"

这个需求看起来只有一句话,但对于 Agent 来说,需要经过很多步骤。


第一步:LLM 理解需求(Plan)

LLM 首先不会写代码,而是规划任务。

用户需求:

分析销售数据
↓

拆解任务:

① 读取 Excel

② 数据清洗

③ 统计各地区销售额

④ 绘制趋势图

⑤ 建立预测模型

⑥ 输出 PDF

这里还没有调用 E2B。


第二步:Agent 判断需要使用什么 Tool

Agent 内部维护了一张 Tool List。

例如:

Available Tools

✓ Browser

✓ Search

✓ Python Sandbox(E2B)

✓ Email

✓ SQL

LLM 推理:

这个任务需要执行 Python。

于是:

Tool Selected:

Python Sandbox

这里:

Python Sandbox 实际上就是 E2B。


第三步:Agent 调用 E2B

这时候 Agent 不会:

exec(code)

而是:

Agent Runtime
      │
      ▼
Create Sandbox
      │
      ▼
E2B 返回:

Sandbox ID

sandbox-12345

例如:

from e2b import Sandbox

sandbox = Sandbox()

这一步发生了什么?

实际上:

E2B 在云端创建了一台临时 Linux。

里面已经安装好了:

Ubuntu

Python

pip

Terminal

Filesystem

就像:

给 Agent 临时分配了一台电脑。


第四步:上传文件

用户上传:

sales.xlsx

Agent:

上传到 Sandbox。

Local

↓

E2B Sandbox

↓

/home/user/sales.xlsx

例如:

sandbox.files.write(
    "/home/user/sales.xlsx",
    file_bytes
)

现在:

Sandbox 已经拥有:

sales.xlsx

第五步:Agent 生成 Python

LLM 根据需求生成:

import pandas as pd

df = pd.read_excel("sales.xlsx")

summary = df.groupby("地区")["销售额"].sum()

print(summary)

注意:

LLM 只是生成代码。

它不会运行。


第六步:E2B 执行代码

Agent:

把代码发送给 Sandbox。

例如:

result = sandbox.run_code("""
import pandas as pd

df = pd.read_excel("sales.xlsx")

print(df.head())
""")

此时:

真正执行的是:

Sandbox

↓

python script.py

不是你的服务器。


第七步:返回执行结果

Sandbox:

返回:

stdout:

北京 3000 万

上海 2500 万

深圳 1800 万

Agent:

读取:

Observation:

已经得到统计结果

这里就是:

Observe

第八步:继续推理

LLM:

发现:

需要画图。

于是继续生成:

plt.plot(...)

plt.savefig("trend.png")

再次调用:

E2B

↓

run_code()

Sandbox:

生成:

trend.png

然后:

Agent

↓

拿到图片

第九步:生成 PDF

LLM:

再次写代码:

from reportlab...

生成 PDF

继续:

run_code()

生成:

report.pdf

然后:

Agent:

返回:

已完成分析。

整个过程中:

E2B 一共可能执行:

run_code()

↓

run_code()

↓

run_code()

↓

run_code()

↓

run_code()

而不是一次。


第十步:删除 Sandbox

任务结束。

Agent:

Delete Sandbox

于是:

Ubuntu

Python

文件

图片

PDF

全部删除。

这就是:

Sandbox 生命周期结束。


如果运行失败怎么办?

这是 E2B 最重要的价值之一。

假设:

LLM 写出了:

import panda

执行:

ModuleNotFoundError

Sandbox:

返回:

stderr:

No module named panda

Agent:

Observe:

失败

LLM:

重新思考:

哦。

应该是:

pandas

重新生成:

import pandas

再次:

run_code()

成功。

这就是:

Plan

↓

Act

↓

Observe

↓

Retry

Agent Loop。


再来看一个 AI Coding 的例子

用户:

帮我修这个 Python Bug。

Agent:

读取 GitHub

↓

Clone Repo

↓

进入 Sandbox(E2B)

↓

pytest

↓

失败

↓

LLM 修代码

↓

pytest

↓

失败

↓

再次修

↓

pytest

↓

全部通过

↓

Git Commit

↓

Create PR

注意:

这里:

pytest

是在:

E2B 里面运行。

不是:

LLM 自己想出来:

"测试通过了。"

而是:

真的运行:

pytest

得到:

23 passed

0 failed

Agent 才知道:

修好了。


一个更复杂的企业级例子:核电施工方案审核 Agent

结合你之前做过的核电施工方案生成与审核大模型项目,我们可以设计这样一个 Agent。

用户上传:

《反应堆厂房钢筋施工方案.docx》

用户要求:

请审核该施工方案是否符合规范,并生成审核意见。

Agent 的执行流程如下:

                 用户上传 DOCX
                       │
                       ▼
                Agent Planner
                       │
        ┌──────────────┴──────────────┐
        ▼                             ▼
  读取企业知识库                  判断需要解析文档
 (RAG 检索规范)                       │
                                     ▼
                             调用 E2B Sandbox
                                     │
             ┌───────────────────────┼────────────────────────┐
             ▼                       ▼                        ▼
      python-docx              提取表格                 OCR(如有扫描页)
             │                       │                        │
             └───────────────合并结构化内容───────────────────┘
                                     │
                                     ▼
                           返回文本给 LLM
                                     │
                                     ▼
                    与施工规范逐条比对(RAG)
                                     │
                                     ▼
                       生成审核意见和修改建议

这里为什么需要 E2B?

因为文档解析往往依赖大量第三方库,例如:

python-docx
pdfplumber
camelot
opencv
pytesseract

这些库需要真实执行 Python 代码,甚至调用系统命令。如果直接在生产服务器上运行,既不安全,也难以隔离不同用户的环境。而 E2B 可以为每次审核创建一个独立的沙箱,解析完成后立即销毁,既保证了安全性,也避免了环境污染。


最后,用一句话总结 E2B 在 Agent 中的角色

Agent 可以分为三个阶段:

LLM
负责:

思考
↓

E2B
负责:

执行
↓

LLM
负责:

根据执行结果继续思考

所以,E2B 并不会替代 LLM,它更像是 LLM 的"双手和实验室"。当 Agent 遇到需要真实运行代码、安装依赖、处理文件、执行终端命令、生成图表或验证程序行为的任务时,就会把这些工作交给 E2B;执行完成后,再将结果返回给 LLM,由 LLM 决定下一步行动。这种"思考—执行—观察—再思考"的闭环,正是现代 AI Agent 能够完成复杂任务的关键。

posted @ 2026-07-03 15:17  stardsd  阅读(8)  评论(0)    收藏  举报