引言

在当今数据密集的时代,高效、安全的数据分析成为了每位开发者的必备技能。E2B的Data Analysis沙盒为我们提供了一个隔离的环境,专为大语言模型(LLMs)和高级数据分析设计。本文将介绍如何利用E2B的沙盒进行数据分析,并通过简单的OpenAI agent实现对上传文件的分析。

主要内容

E2B的功能

E2B Data Analysis沙盒通过以下功能提供安全的代码执行环境:

  • 运行Python代码
  • 使用matplotlib生成图表
  • 动态安装Python和系统包
  • 运行Shell命令
  • 文件上传和下载

准备工作

要使用E2B和OpenAI的服务,你需要API密钥。请设置为环境变量:

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

确保安装必要的软件包:

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

代码示例

以下是使用E2B Data Analysis沙盒分析Netflix数据的示例:

import os
from langchain.agents import AgentType, initialize_agent
from langchain_openai import ChatOpenAI
from langchain_community.tools import E2BDataAnalysisTool

# 设置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)
    print(remote_path)

# 创建Langchain agent
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)

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

常见问题和解决方案

  1. API访问问题

    • 某些地区可能需要API代理服务来提高访问的稳定性,建议使用API代理服务。
  2. 数据分析中的错误

    • 确保数据格式正确,并在上传前验证文件。
  3. 包安装问题

    • 使用动态安装功能在需要时即时安装缺少的Python或系统包。

总结和进一步学习资源

E2B提供了一个功能强大的平台,用于安全、高效地进行数据分析。通过与LLMs结合,开发者可以创建智能的数据分析工具。推荐查看E2B API文档以进一步探索其潜力。

参考资料

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

—END—

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐