Skip to main content
本指南提供了 DaytonaDataAnalysisTool 的快速入门概览。
详细使用示例有关本工具的详细使用示例,请参阅 Daytona 文档

概览

详情

功能特性

  • 🔒 安全沙箱执行 - 在隔离环境中运行 Python 代码
  • 🐍 Python 数据分析 - 利用完整的 Python 能力执行数据分析任务
  • 📁 文件管理 - 向沙箱上传或从沙箱下载文件
  • 🔄 多步骤工作流 - 支持复杂的多步骤数据分析流程
  • 🎯 自定义结果处理 - 使用回调函数处理执行结果
  • 📦 包管理 - 在沙箱中动态安装 Python 包

安装配置

要访问 DaytonaDataAnalysisTool,您需要创建 Daytona 账户,获取 API 密钥,并安装 langchain-daytona-data-analysis 集成包。

凭证配置

您必须为 Daytona 配置凭证,可通过以下三种方式之一完成: 1. 设置 DAYTONA_API_KEY 环境变量:
Set API key
export DAYTONA_API_KEY="your-daytona-api-key"
2. 在项目根目录的 .env 文件中添加:
Set API key
DAYTONA_API_KEY=your-daytona-api-key
3. 在实例化 DaytonaDataAnalysisTool 时直接传入 API 密钥:
Set API key
tool = DaytonaDataAnalysisTool(daytona_api_key="your-daytona-api-key")
同时建议(但非必须)配置 LangSmith,以获得最佳的可观测性/功能。要启用自动追踪,请设置您的 LangSmith API 密钥:
Enable tracing
os.environ["LANGSMITH_API_KEY"] = getpass.getpass("Enter your LangSmith API key: ")
os.environ["LANGSMITH_TRACING"] = "true"

安装

DaytonaDataAnalysisTool 位于 langchain-daytona-data-analysis 包中:

从 PyPI 安装

直接从 PyPI 安装该包:
pip install langchain-daytona-data-analysis

从 GitHub 安装

从 GitHub 安装最新开发版本:
pip install git+https://github.com/daytonaio/langchain_daytona_data_analysis

实例化

导入并实例化工具:
Initialize tool instance
from langchain_daytona_data_analysis import DaytonaDataAnalysisTool
from daytona import ExecutionArtifacts

# Optionally, you can pass an on_result callback.
# This callback lets you apply custom logic to the data analysis result.
# For example, you can save outputs, display charts, or trigger other actions.
def process_data_analysis_result(result: ExecutionArtifacts):
    print(result)

tool = DaytonaDataAnalysisTool(
    daytona_api_key="your-daytona-api-key", # Only pass if not set as DAYTONA_API_KEY environment variable
    on_result=process_data_analysis_result
)

调用

直接调用

Call tool
tool.invoke({'data_analysis_python_code': "print('Hello World')"})

作为 ToolCall 调用

ToolCall
model_generated_tool_call = {
    "args": {'data_analysis_python_code': "print('Hello World')"},
    "id": "1",
    "name": tool.name,
    "type": "tool_call",
}

tool.invoke(model_generated_tool_call)

在 agent 中使用

Agent with tool
from langchain.agents import create_agent
from langchain_anthropic import ChatAnthropic

model = ChatAnthropic(
    model_name="claude-haiku-4-5-20251001",
    temperature=0,
    max_tokens_to_sample=1024,
    timeout=None,
    max_retries=2,
    stop=None
)

agent = create_agent(model, tools=[tool])

附加功能

DaytonaDataAnalysisTool 提供了多种用于管理文件和沙箱环境的方法:

文件管理

向沙箱上传文件:
with open("sales_data.csv", "rb") as f:
    uploaded = tool.upload_file(
        f,
        "CSV file containing sales data with columns: id, date, product, revenue"
    )
从沙箱下载文件:
file_bytes = tool.download_file("/home/daytona/results.csv")
删除已上传的文件:
tool.remove_uploaded_file(uploaded)

包管理

在沙箱中安装 Python 包:
# Single package
tool.install_python_packages("pandas")

# Multiple packages
tool.install_python_packages(["numpy", "matplotlib", "seaborn"])
有关预装包的列表,请参阅 Daytona 默认快照文档

沙箱管理

访问沙箱实例:
sandbox = tool.get_sandbox()
完成后关闭沙箱:
tool.close()  # Cleans up resources and deletes the sandbox
当您完成所有数据分析任务后,请调用 tool.close() 以正确释放资源,避免不必要的资源占用。

API 参考

有关 DaytonaDataAnalysisTool 所有功能和配置的详细文档,请访问 API 参考