利用E2B沙盒环境实现安全的数据分析

210 阅读3分钟

利用E2B沙盒环境实现安全的数据分析

引言

E2B提供了一种创新的服务,允许你在云端的沙盒环境中安全地执行代码,这对喜欢探索大语言模型(LLMs)功能的开发者来说无疑是一个福音。本文将展示如何使用E2B的Data Analysis沙盒,与OpenAI的API结合,分析上传的数据文件。

主要内容

1. E2B Data Analysis 沙盒的优势

E2B沙盒允许运行Python代码、动态安装Python包和系统包、执行shell命令、上传和下载文件等。它为构建如代码解释器或高级数据分析工具提供了安全的环境。这对于需要敏感数据保护或对外部依赖管理严格的项目来说非常重要。

2. 设置环境

首先,你需要获取OpenAI和E2B的API密钥,并将其设置为环境变量。你可以使用如下代码实现:

import os

os.environ["E2B_API_KEY"] = "<E2B_API_KEY>"
os.environ["OPENAI_API_KEY"] = "<OPENAI_API_KEY>"

3. 安装依赖包

使用pip安装所需的Python包:

%pip install --upgrade --quiet langchain e2b langchain-community

4. 初始化E2B数据分析工具

你可以创建一个E2BDataAnalysisTool实例,并传入回调函数,以便在沙盒输出内容时进行处理。

from langchain_community.tools import E2BDataAnalysisTool

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_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,
)

代码示例

下面是一个使用E2B沙盒环境的完整示例,分析Netflix电影数据并生成电影时长图表。

# 导入必要的库
from langchain.agents import AgentType, initialize_agent
from langchain_openai import ChatOpenAI
import pandas as pd
import matplotlib.pyplot as plt

# 初始化OpenAI和E2B工具
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,
)

# 上传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.",
    )

# 运行数据分析任务
agent.run(
    "What are the 5 longest movies on netflix released between 2000 and 2010? Create a chart with their lengths."
)

常见问题和解决方案

  • 网络限制:由于某些地区的网络限制,开发者可能需要考虑使用API代理服务以提高访问稳定性。
  • 安全性:确保任何上传的文件不包含敏感信息,或者实施适当的文件清理机制。

总结和进一步学习资源

E2B的Data Analysis沙盒提供了一个安全灵活的平台用于数据分析,结合OpenAI的API可以显著提升数据处理能力。可以继续查阅以下资源以深入了解:

参考资料

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力! ---END---