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 能够完成复杂任务的关键。
如果这篇文章帮助到了你,你可以请作者喝一杯咖啡

浙公网安备 33010602011771号