Open-Agent E2B Python 沙箱详解:让 AI 安全编写并执行代码、输出图表的实用教程
【免费下载链接】open-agentOpen-source alternative to Claude Agent SDK, ChatGPT Agents, and Manus.项目地址: https://gitcode.com/gh_mirrors/op/open-agent
Open-Agent是一个开源的 Agentic AI 系统,可作为 Claude Agent SDK、ChatGPT Agents 和 Manus 的替代方案。它的E2B Python 沙箱功能,允许 AI 在完全隔离的云端环境中安全地编写并执行 Python 代码,直接把数据分析结果、统计图表、PDF 报告"跑"出来展示给你——你只需配置一个 API Key,就能拥有会写代码、会画图、会交付成果的 AI 助手。
为什么需要 AI 代码沙箱?
让 AI 直接在你的电脑上跑代码,风险很大:恶意逻辑、无限循环、误删文件……而Python 代码沙箱解决的就是这个问题:
- 🛡️安全隔离:代码运行在一次性云端虚拟机里,与你的服务器和本机完全隔离
- 🧹无状态环境:每次调用都是全新环境,互不污染
- 📊多格式输出:文字、Markdown、图表(PNG/JPEG/SVG)、PDF、JSON、LaTeX 一应俱全
- ⚡用完即焚:执行结束后沙箱立即销毁,不留任何痕迹
一句话理解:AI 负责"想"和"写",沙箱负责安全地"跑",Open-Agent 负责把结果漂亮地"展示"给你。
Open-Agent 是怎么实现的?
整个 E2B Python 沙箱能力分布在后端工具和前端渲染两部分:
| 模块 | 文件路径 | 职责 |
|---|---|---|
| 沙箱工具核心 | e2b-python-sandbox.ts | 创建沙箱、执行代码、保存二进制产物 |
| 工具注册 | tools/index.ts | 对外导出e2b_python_sandbox工具 |
| 工具装配 | provider.ts | 按配置决定是否挂载沙箱工具 |
| 全局配置 | config.ts | 定义copilot.e2b.key配置项 |
| 任务规划提示词 | prompts.ts | 引导 AI 在合适时机调用沙箱 |
| 前端结果渲染 | e2b-python-result.tsx | 在聊天界面展示图表、文本与 PDF 链接 |
执行流程 6 步走 🔄
- AI 分析任务,判断需要运行 Python(任务规划提示词中明确写了
Consider: e2b_python_sandbox for testing/execution) - 工具通过 E2B API Key 创建沙箱:
Sandbox.create({ apiKey: key }) - 在沙箱中执行
sbx.runCode(code),并实时把stdout/stderr流式推送到前端 - 执行结果中的 PNG、JPEG、PDF、SVG 等 base64 数据,会被自动上传到用户存储,并替换为可访问的 URL
- 调用
sbx.kill()销毁沙箱 - 前端用专属渲染器展示图片、Markdown 和 PDF 链接
其中"base64 转 URL"是个很贴心的设计——既避免了大体积数据塞进对话流,又让 AI 能直接用在回复中引用生成的图表。
三步快速配置 E2B Python 沙箱 🚀
第 1 步:部署 Open-Agent
按照 README.md 的说明,用 Docker Compose 启动项目即可:
docker compose up -d第 2 步:填入 E2B API Key
在部署目录的config.json中,找到copilot配置段,填入你的 E2B Key(配置结构定义见 config.ts 中的copilot.e2b字段):
{ "copilot": { "enabled": true, "e2b": { "key": "你的 E2B API Key" } } }第 3 步:启用工具
确认 Copilot 插件已启用且挂载了pythonSandbox工具(工具装配逻辑位于 provider.ts),重启服务后,AI 就可以安全跑代码了。
它能输出哪些内容?
沙箱执行结果是一个 JSON 对象,支持这些字段(定义见 e2b-python-sandbox.ts 中的ProcessedResult类型):
- 📝text / markdown / html:文字结果、Markdown 报告、HTML 片段
- 🖼️png / jpeg / svg:图表与图片,自动保存并返回 URL
- 📄pdf:完整报告文件,前端会显示"View PDF"下载链接
- 🧮latex / json / data:公式、结构化数据、DataFrame 数据
- 📈chart:图表配置对象
前端渲染器 e2b-python-result.tsx 会自动识别这些字段:图片直接内联展示,Markdown 渲染排版,出错时则用红色提示框清晰显示错误信息与 traceback。
实用技巧:写出更好的图表结果 💡
源码中内置的工具体会(工具描述部分)总结了三条黄金规则:
- 一次调用 = 一个完整独立脚本:环境是无状态的,两次调用之间不保留变量和文件,所有上下文要写进同一个脚本里
- 要拿到图片 URL?只用
plt.savefig:调用沙箱工具时不要同时plt.show,否则会出现重复输出 - 纯预览可以用
plt.show:只看不存图时,plt.show更省事
典型用法示例:
"帮我用这份销售数据画一张月度趋势折线图,并输出为 PNG"
AI 会自动编写 Python 脚本 → 沙箱执行 → 图表以图片形式直接出现在聊天界面中。
常见问题 FAQ ❓
Q:每次执行都要重新装库吗?A:环境是全新创建的,常用科学计算库(如 matplotlib、pandas)已预装在 E2B 环境中,日常绘图分析无需额外操作。
Q:代码报错会怎样?A:沙箱会把错误类型、错误值和完整 traceback 实时流式推送,AI 可以据此自动修改代码重试,前端也会红字展示错误详情。
Q:生成的图片保存在哪里?A:自动上传到当前用户的 Copilot 存储空间,文件名基于内容哈希(如e2b-png-xxxx.png),同内容天然去重。
总结
Open-Agent 的 E2B Python 沙箱,用"配置一个 Key"的极简成本,给了 AI 一个安全可靠的代码执行环境:写代码、跑数据、出图表、生成 PDF 报告,全流程自动完成。无论你是想做一个数据分析助手,还是构建自己的专属 Agent,这套开源方案都值得一试 🌟
- 核心工具源码:e2b-python-sandbox.ts
- 前端渲染组件:e2b-python-result.tsx
- 开发指南:dev.md
【免费下载链接】open-agentOpen-source alternative to Claude Agent SDK, ChatGPT Agents, and Manus.项目地址: https://gitcode.com/gh_mirrors/op/open-agent
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考