使用E2B数据分析沙箱进行文件分析
在人工智能应用的开发中,沙箱环境是一种重要的工具,尤其是在允许多种操作和确保安全性的情况下。E2B 的数据分析沙箱提供了一个理想的环境,用于执行Python代码、生成图表、动态安装包、运行shell命令、以及上传和下载文件。这使得开发人员能够更安全地构建如代码解释器和高级数据分析工具。在本篇文章中,我们将创建一个简单的OpenAI代理,使用E2B的数据分析沙箱对上传的文件进行分析。为此,您需要获取
·
在人工智能应用的开发中,沙箱环境是一种重要的工具,尤其是在允许多种操作和确保安全性的情况下。E2B 的数据分析沙箱提供了一个理想的环境,用于执行Python代码、生成图表、动态安装包、运行shell命令、以及上传和下载文件。这使得开发人员能够更安全地构建如代码解释器和高级数据分析工具。
在本篇文章中,我们将创建一个简单的OpenAI代理,使用E2B的数据分析沙箱对上传的文件进行分析。为此,您需要获取OpenAI API密钥和E2B API密钥,并设置为环境变量。
核心原理解析
E2B沙箱提供了一种隔离的环境,用于执行代码和处理数据。通过动态安装软件包和执行shell命令,用户可以根据需要扩展沙箱的功能。此外,沙箱还支持上传和下载文件,并可以实时生成和处理数据分析图。
代码实现演示
下面的示例代码演示了如何使用E2B的数据分析工具来分析上传的CSV文件数据。
import os
from langchain.agents import AgentType, initialize_agent
from langchain_openai import ChatOpenAI
from langchain_community.tools import E2BDataAnalysisTool
# 设置环境变量
os.environ["E2B_API_KEY"] = "<E2B_API_KEY>"
os.environ["OPENAI_API_KEY"] = "<OPENAI_API_KEY>"
# 图表生成回调函数
def save_artifact(artifact):
print("New matplotlib chart generated:", artifact.name)
file = artifact.download()
basename = os.path.basename(artifact.name)
with open(f"./charts/{basename}", "wb") as f:
f.write(file)
# 初始化E2B数据分析工具
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,
)
# 上传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)
# 初始化Langchain代理
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,
)
# 用代理询问问题
response = agent.run(
"What are the 5 longest movies on netflix released between 2000 and 2010? Create a chart with their lengths."
)
print(response)
# 关闭沙箱
e2b_data_analysis_tool.close()
应用场景分析
这种沙箱环境非常适用于需要处理用户上传数据的场景,例如:
- 在线数据分析工具
- 教育平台中的编程练习环境
- 数据科学竞赛平台
实践建议
- 安全性:始终确保API密钥和其他机密信息的安全性。
- 实时反馈:利用回调机制获取执行结果,对于用户界面友好性非常重要。
- 资源管理:合理管理沙箱资源,避免不必要的消耗。
如果遇到问题欢迎在评论区交流。
—END—
更多推荐
所有评论(0)