ChatPilot代码解释器深度解析:AI如何运行Python代码并生成图表(E2B沙箱原理)
2026/8/22 14:11:55 网站建设 项目流程

ChatPilot代码解释器深度解析:AI如何运行Python代码并生成图表(E2B沙箱原理)

【免费下载链接】ChatPilotChatPilot: Chat Agent Web UI,实现Chat对话前端,支持Google搜索、文件网址对话(RAG)、代码解释器功能,复现了Kimi Chat(文件,拖进来;网址,发出来)。项目地址: https://gitcode.com/gh_mirrors/ch/ChatPilot

ChatPilot 是一个开源的 Chat Agent Web UI,其代码解释器是核心亮点之一:AI 能够自动编写 Python 代码,将其发送到E2B 云沙箱中安全执行,并把计算结果、折线图、饼图等图表直接渲染回对话窗口——完整复现了 Kimi Chat 中"文件拖进来、网址发出去"的交互体验。本文面向新手,用最通俗的方式拆解这套 AI 代码解释器背后的运行机制。

代码解释器:让 AI 从"会说"变成"会算"

普通大语言模型只能"说"代码,却无法真正运行代码。而 ChatPilot 的代码解释器打通了这条链路:

  1. 理解意图:你问"帮我算 38023×40334,并画个销售趋势图"
  2. 生成代码:AI 自动写出一段完整的 Python 脚本
  3. 沙箱执行:脚本被发送到隔离环境中运行,不触碰你的本机
  4. 结果回传:数字结果、matplotlib生成的图表图片直接显示在对话中

项目 README 中对其能力的一句话概括是:Python 代码解释器,支持 E2B 虚拟环境和本地 Python 编译器环境运行代码(见 README.md)。

AI 何时决定"运行代码":ReAct 智能体机制

ChatPilot 的智能体核心封装在 chatpilot/agentica_agent.py 中。它的思路来自ReAct(Reasoning + Acting)框架:AI 不是一口气回答,而是循环执行"思考 → 选择工具 → 观察结果 → 再思考",直到得出最终答案。

关键一步是工具注册。ChatPilot 把"运行 Python 代码"注册为一个可调用的工具:

# 当开关打开时,把代码执行工具加入智能体工具列表 if enable_run_python_code_tool: self.tools.append(RunPythonCodeTool())

相关实现在 chatpilot/agentica_agent.py,工具本体由依赖库agentica提供(声明于 requirements.txt)。AI 每次"思考"时看到的是一份工具清单,只有当判断"这个问题需要精确计算或画图"时,才会调用RunPythonCodeTool

工具的行为规范写在 chatpilot/config.py 的RUN_PYTHON_CODE_TOOL_DESC中,里面有几条对新手很有启发的"提示词工程"细节:

  • 环境是长驻的:沙箱跨多次执行持续存在,变量可以保留
  • 必须完整重发脚本:每次都要发送整个脚本并主动打印输出
  • 代码必须是纯 Python:不能用 Markdown 代码块包裹
  • 预装科学计算全家桶numpypandasmatplotlibscipyrequests均可用,并用plt.show()生成图表

E2B 沙箱原理:代码为什么敢直接跑

把 AI 生成的代码丢到服务器上直接执行是非常危险的(可能读走文件、拖垮服务)。ChatPilot 的解决方案是E2B 云沙箱

🔒沙箱(Sandbox)= 一次性、隔离的微型云端运行环境。代码在其中执行,与宿主系统完全隔离,用完即销毁,AI 的任何"越界行为"都被关在笼子里。

其工作原理可以拆成四步:

步骤发生了什么
① 启动沙箱服务端拿着 API Key 向 E2B 平台请求一个全新的云沙箱实例
② 注入代码AI 生成的 Python 脚本通过 API 送入沙箱
③ 隔离执行代码在沙箱内运行,可访问预装的 matplotlib 等库,但无法触达你的服务器文件
④ 回收结果stdout 文本和plt.show()生成的图片被捕获并回传,沙箱销毁或保留供下一轮使用

在 ChatPilot 中,只需一个环境变量即可接入 E2B:

# 在 .env 文件中配置 E2B_API_KEY=你的E2B密钥

对应读取逻辑位于 chatpilot/config.py。配置了 Key 就走 E2B 云沙箱;如果没有配置,项目也允许回退到本地 Python 环境执行,方便离线体验——这也解释了为什么 README 强调"支持 E2B 虚拟环境本地 Python 编译器环境"。

图表是如何"画"出来又"回"到对话框的

很多新手疑惑:沙箱里的图片,为什么能出现在网页聊天框里?答案是一条清晰的"图片回流"链路:

  1. AI 在脚本末尾调用plt.show()让 matplotlib 渲染图表
  2. 沙箱执行器捕获生成的 PNG 图片(而非丢弃到显示器)
  3. 图片作为工具执行结果(Observation)被打包,连同标准输出一起回传给 AI
  4. 前端 web/src/lib/components/chat/Messages/ResponseMessage.svelte 在渲染消息时识别图片内容并展示

也就是说,图片是作为"数据"在 AI 与沙箱之间流动的,最终才落到你的浏览器里。

三步开启:最快配置代码解释器

第 1 步:准备 E2B 密钥在项目的.env文件中加入E2B_API_KEY(参考 chatpilot/config.py 的读取逻辑),不配置则使用本地执行模式。

第 2 步:确认工具开关环境变量ENABLE_RUN_PYTHON_CODE_TOOL默认为True,无需额外设置;如需关闭可显式设为False(见 chatpilot/config.py)。

第 3 步:发起对话在 ChatPilot 界面直接提问,例如"计算 38023×40334"或"用 Python 画一张 2024 年各季度销售柱状图"——系统自带的提示建议里就内置了"执行代码解释器"的示例入口(见 chatpilot/config.py)。

常见问题 FAQ

Q1:没有 E2B 密钥能用吗?可以。不配置E2B_API_KEY时会回退到本地 Python 环境执行,适合尝鲜,但不建议在生产环境使用。

Q2:沙箱里能用哪些第三方库?预装了requestsmatplotlibscipynumpypandas等常用科学计算与网络库(工具描述见 chatpilot/config.py)。

Q3:连续提问,上一轮定义的变量还在吗?在。工具描述中明确说明"环境是长驻的,跨多次执行存在",因此你可以分多轮逐步搭建一个数据分析流程。

Q4:AI 什么时候不会调用代码解释器?常识问答、写代码讲解类问题,AI 会直接用内置知识回答;只有涉及精确计算、数据处理、可视化时才会触发该工具。

写在最后

ChatPilot 的代码解释器用"ReAct 智能体 + 工具注册 + E2B 云沙箱 + 图片回流"四块拼图,实现了 Kimi Chat 同款体验:你只需用自然语言提需求,AI 就会写代码、跑代码、出图表。如果你想亲手体验,配置好E2B_API_KEY后向它要一张图表,是了解 AI Agent 工作机制最快的一条路径 📊。

【免费下载链接】ChatPilotChatPilot: Chat Agent Web UI,实现Chat对话前端,支持Google搜索、文件网址对话(RAG)、代码解释器功能,复现了Kimi Chat(文件,拖进来;网址,发出来)。项目地址: https://gitcode.com/gh_mirrors/ch/ChatPilot

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询