Skip to main content

An integration package connecting DaytonaDataAnalysis and LangChain

Project description

langchain-daytona-data-analysis

This package provides the DaytonaDataAnalysisTool - LangChain tool integration that enables agents to perform secure Python data analysis in a sandboxed environment. It supports multi-step workflows, file uploads/downloads, and custom result handling, making it ideal for automating data analysis tasks with LangChain agents.

Installation

pip install -U langchain-daytona-data-analysis

You must configure credentials for Daytona. You can do this in one of three ways:

  1. Set the DAYTONA_API_KEY environment variable:

    export DAYTONA_API_KEY="your-daytona-api-key"
    
  2. Add it to a .env file in your project root:

    DAYTONA_API_KEY=your-daytona-api-key
    
  3. Pass the API key directly when instantiating DaytonaDataAnalysisTool:

    from langchain_daytona_data_analysis import DaytonaDataAnalysisTool
    
    tool = DaytonaDataAnalysisTool(daytona_api_key="your-daytona-api-key")
    

Instantiation

Import and instantiate the tool:

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 needed if DAYTONA_API_KEY is not set as an environment variable
	on_result=process_data_analysis_result
)

Usage

DaytonaDataAnalysisTool can be used in three ways:

Direct Invocation with Args

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

Invocation with 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)

Usage Inside an Agent

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])

API Reference

The following public methods are available on DaytonaDataAnalysisTool:

download_file(remote_path)

Downloads a file from the sandbox by its remote path.

  • remote_path: str — Path to the file in the sandbox.
  • Returns: bytes — File contents.

Example:

# Download a file from the sandbox
file_bytes = tool.download_file("/home/daytona/results.csv")

upload_file(file, description)

Uploads a file to the sandbox. The file is placed in /home/daytona/.

  • file: IO — File-like object to upload.
  • description: str — Description of the file, explaining its purpose and the type of data it contains.
  • Returns: SandboxUploadedFile — Metadata about the uploaded file.

Example: Suppose you want to analyze sales data for a retail business. You have a CSV file named sales_q3_2025.csv containing columns like transaction_id, date, product, quantity, and revenue. You want to upload this file and provide a description that gives context for the analysis.

with open("sales_q3_2025.csv", "rb") as f:
    uploaded = tool.upload_file(
        f,
        "CSV file containing Q3 2025 retail sales transactions. Columns: transaction_id, date, product, quantity, revenue."
    )

remove_uploaded_file(uploaded_file)

Removes a previously uploaded file from the sandbox.

Example:

# Remove an uploaded file
tool.remove_uploaded_file(uploaded)

get_sandbox()

Gets the current sandbox instance.

  • Returns: Sandbox — Sandbox instance.

This method provides access to the Daytona sandbox instance, allowing you to inspect sandbox properties and metadata, as well as perform any sandbox-related operations. For details on available attributes and methods, see the Sandbox data structure section below.

Example:

sandbox = tool.get_sandbox()

install_python_packages(package_names)

Installs one or more Python packages in the sandbox using pip.

  • package_names: str or List[str] — Name(s) of the package(s) to install.

Note: The list of preinstalled packages in a sandbox can be found at Daytona Default Snapshot documentation.

Example:

# Install a single package
tool.install_python_packages("pandas")

# Install multiple packages
tool.install_python_packages(["numpy", "matplotlib"])

close()

Closes and deletes the sandbox environment.

Note: Call this method when you are finished with all data analysis tasks to properly clean up resources and avoid unnecessary usage.

Example:

# Close the sandbox and clean up
tool.close()

Data Structures

SandboxUploadedFile

Represents metadata about a file uploaded to the sandbox.

  • name: str — Name of the uploaded file in the sandbox
  • remote_path: str — Full path to the file in the sandbox
  • description: str — Description provided during upload

Sandbox

Represents a Daytona sandbox instance.

See the full structure and API in the Daytona Python SDK Sandbox documentation.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

langchain_daytona_data_analysis-0.2.0.tar.gz (6.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

File details

Details for the file langchain_daytona_data_analysis-0.2.0.tar.gz.

File metadata

File hashes

Hashes for langchain_daytona_data_analysis-0.2.0.tar.gz
Algorithm Hash digest
SHA256 f27cd0616d671215d673db8b7e8351c9c9187a7221fc4a201b103cd2090f515c
MD5 01ccbf600563228f1af853babae06a54
BLAKE2b-256 123ec60a676ff947343a66eb709322d501023a3215645f0780d062cb969ca6e7

See more details on using hashes here.

Provenance

The following attestation bundles were made for langchain_daytona_data_analysis-0.2.0.tar.gz:

Publisher: release.yml on daytona/integrations

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file langchain_daytona_data_analysis-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for langchain_daytona_data_analysis-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c02bf73bf78f5e0e3513e39950c2aac49c225725504444da86d3c64b13ee9232
MD5 eebf8577dd12ca863bfc733fd545d1bf
BLAKE2b-256 e3f0141fb2ea9228c56516cf6333448903c3245767db297723cd33e78b2c3c8d

See more details on using hashes here.

Provenance

The following attestation bundles were made for langchain_daytona_data_analysis-0.2.0-py3-none-any.whl:

Publisher: release.yml on daytona/integrations

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page