大语言模型(LLM)已经能够生成代码,但真正让 Agent 发挥价值的,并不是"写代码",而是写完之后还能自己运行、验证,再根据结果继续迭代。
拥有代码执行能力后,一个 Agent 就不仅仅是聊天机器人了,它还能分析数据、处理文件、生成图表,甚至自动输出报告,很多原本需要人工完成的工作都可以交给它完成。
本文将结合 OpenAI Agents SDK和 Docker,搭建一个具备代码执行能力的 AI Agent,并通过一个 CSV 数据分析案例,看看它是如何完成一整套数据分析流程的。

为什么 Agent 需要代码执行能力?
普通的大模型只能根据已有知识回答问题。
而具备代码执行能力之后,Agent 的能力边界会被进一步扩展,例如自动读取 CSV、Excel、PDF 等文件、编写 Python 脚本进行数据处理 、生成统计图表 、输出 Markdown、CSV 等分析结果、根据运行结果继续修改代码并再次执行,整个流程形成了一个闭环:
用户提供数据 → Agent 编写代码 → 执行代码 → 分析结果 → 输出最终文件
对于数据分析、自动报表、AI 办公等场景来说,这种能力非常实用。
OpenAI Agents SDK 是如何实现代码执行的?
一个具备代码执行能力的 Agent,大致由三个部分组成。
1. LLM
负责理解用户需求,例如分析 CSV、决定使用哪些算法、生成 Python 代码、读取运行结果,并根据结果继续修改代码。
2. Workspace(工作区)
工作区相当于 Agent 的文件系统,用户上传的数据都会放到这里,例如:
input/data.csv
运行过程中生成的结果也会保存到这里,例如:
output/report.md output/chart.png
整个分析过程都围绕 Workspace 展开。
3. Sandbox(执行环境)
Agent 生成代码以后,需要一个真正可以运行 Python 的环境。
官方提供了多种方案,例如:
OpenAI Code Interpreter
Docker Sandbox
Shell Tool
其中 Docker 是最常见的一种方案。
Docker 可以把运行环境完全隔离,既方便管理依赖,也能保证宿主机不会受到影响。
如果后续准备长期部署这类 Agent,也可以直接放到 Linux 云服务器上运行。像 Hostease 的 VPS 和云服务器,对 Docker、Python 等环境支持比较完善,部署起来会省去不少环境配置工作。
使用 SandboxAgent
OpenAI Agents SDK 已经把整个流程进行了封装。
首先,需要告诉 Agent 哪些文件需要放进工作区。
例如:
from pathlib import Path from agents.sandbox import LocalFile, Manifest manifest = Manifest( entries={ "input/data.csv": LocalFile(src=Path("data/data.csv")), }, )
这段代码会把本地的 CSV 文件映射到 Sandbox 内部。
随后创建 Agent:
agent = SandboxAgent( name="coding agent", instructions="Inspect files and write code.", model="gpt-5.4", default_manifest=manifest, )
这里主要指定了三个内容:
使用的模型
Agent 的职责
默认工作区
接下来,只需要创建 Docker Sandbox,并把两者关联即可。
result = await Runner.run( agent, "Analyze input/data.csv", run_config=RunConfig( sandbox=SandboxRunConfig(session=sandbox_session), ), )
整个过程其实并不复杂。
模型负责思考,Sandbox 负责运行,两者之间由 Agents SDK 自动协调。
一个完整案例:分析建筑能耗数据
为了验证 Agent 是否真正具备数据分析能力,我们准备了一份建筑能耗数据。
CSV 中包含三列数据:
timestamp energy_kwh outdoor_temp_c
分别表示:
时间
每小时耗电量
室外温度
任务目标非常简单:
找出建筑能耗中的异常情况。
最终要求 Agent 输出三个文件:
output/anomalies.csv output/energy_anomalies.png output/anomaly_report.md
其中:
CSV 保存异常数据
PNG 保存可视化图表
Markdown 输出分析报告
准备 Docker 环境
由于 Agent 需要执行 Python,因此先准备一个 Docker 镜像。
Dockerfile 非常简单:
FROM python:3.12-slim ENV MPLBACKEND=Agg RUN pip install numpy scipy pandas matplotlib WORKDIR /workspace
这里提前安装好了几个常用的数据分析库:
NumPy
Pandas
SciPy
Matplotlib
这样 Agent 运行时就可以直接调用这些库,而不用每次重新安装。
Agent 会做些什么?
真正运行之后,整个流程几乎全部自动完成。
Agent 首先会读取 CSV 文件,然后检查数据列、数据类型、是否存在空值、总记录数,随后开始编写 Python 脚本。
脚本主要完成几件事情:
建立正常能耗基线
计算每小时偏差
使用 Robust Z-Score 判断异常
绘制异常点图表
输出 CSV
生成 Markdown 报告
整个过程几乎不需要人工参与。
如果脚本运行失败,Agent 还会根据错误信息重新修改代码,再继续执行。
这也是代码执行 Agent 相比普通聊天模型最大的优势。
查看分析结果
运行结束以后,Sandbox 中已经生成了所有输出文件。
SDK 支持把整个 Workspace 打包导出:
workspace_archive = await sandbox_session.persist_workspace()
随后就可以把需要的文件提取到本地。
最终可以看到:
anomalies.csv energy_anomalies.png anomaly_report.md
在测试过程中,Agent 成功定位到了数据中的异常能耗事件,并在图表中进行了标记。
与此同时,它还自动生成了一份 Markdown 报告,说明采用了什么检测方法,以及为什么判定这些数据属于异常。
整个流程真正实现了:
数据输入 → 自动分析 → 自动写代码 → 自动执行 → 自动生成结果
几乎不需要人工干预。
实际项目中需要注意哪些问题?
如果准备把这种 Agent 应用到真实项目中,有几个地方值得提前规划。
首先,要明确 Agent 的职责。
Prompt 中尽量写清楚需要完成哪些任务,以及最终输出哪些文件,否则生成结果可能不符合预期。
其次,要提前准备好运行环境。
例如需要哪些 Python 库、是否允许联网、是否允许执行 Shell 命令,都应该提前配置好。
另外,建议统一规定输出目录和文件命名方式。
例如所有结果统一放到 output/ 目录,这样后续无论是自动下载还是交给其他系统继续处理,都更加方便。
如果后续需要长期运行多个 Agent,建议直接部署到支持 Docker 的 Linux 云服务器,而不是一直依赖本地电脑。这样不仅运行更稳定,也方便后续扩展。像 Hostease 的云服务器就比较适合作为这类 AI Agent 的运行环境,部署完成后基本可以长期稳定运行。
写在最后
代码执行能力,让 AI Agent 从"会聊天"真正升级成了"会干活"。
借助 OpenAI Agents SDK,我们几乎不用自己实现复杂的执行流程,就可以让 Agent 自动完成代码生成、运行、调试以及结果输出。
对于数据分析、自动报表、文件处理、数据清洗等任务来说,这种模式已经具备很高的实用价值。
随着 Agent 能力不断完善,未来它能够承担的工作也会越来越多,而代码执行,无疑是其中最关键的一块能力。