Skip to main content

DSAgent

Upload Python Package PyPI Python CodeQL Advanced License

An AI-powered autonomous agent for data science with persistent Jupyter kernel execution, session management, and conversational interface.

    ____  _____  ___                    __
   / __ \/ ___/ /   | ____ ____  ____  / /_
  / / / /\__ \ / /| |/ __ `/ _ \/ __ \/ __/
 / /_/ /___/ // ___ / /_/ /  __/ / / / /_
/_____//____//_/  |_\__, /\___/_/ /_/\__/
                   /____/

Features

  • Conversational Interface: Interactive chat with persistent context and sessions
  • Dynamic Planning: Agent creates and follows plans with step tracking
  • Persistent Execution: Code runs in a Jupyter kernel with variable persistence across messages
  • Session Management: Save and resume conversations with full kernel state
  • Multi-Provider LLM: Supports OpenAI, Anthropic, Google, Ollama via LiteLLM
  • MCP Tools: Connect to external tools (web search, databases, etc.) via Model Context Protocol
  • Human-in-the-Loop: Configurable checkpoints for plan and code approval
  • Notebook Generation: Automatically generates clean, runnable Jupyter notebooks
  • Agent Skills: Extensible skill system for specialized tasks (EDA, ML, etc.)

Installation

pip install datascience-agent

With optional features:

pip install "datascience-agent[api]"   # FastAPI server support
pip install "datascience-agent[mcp]"   # MCP tools support

For development:

git clone https://github.com/nmlemus/dsagent
cd dsagent
uv sync --all-extras

Docker

Configuration uses the same environment variables as the CLI and server (see Configuration). The container listens on PORT (default 8000).

# Run API server (default: port 8000)
docker run -d -p 8080:8080 \
  -e PORT=8080 \
  -e DSAGENT_DEFAULT_MODEL=gpt-4o \
  -e OPENAI_API_KEY=sk-your-key \
  nmlemus/dsagent:latest

# Run interactive CLI
docker run -it \
  -e OPENAI_API_KEY=sk-your-key \
  -v "$(pwd)/workspace:/workspace" \
  nmlemus/dsagent:latest \
  dsagent chat

# One-shot task
docker run --rm \
  -e OPENAI_API_KEY=sk-your-key \
  -v "$(pwd)/workspace:/workspace" \
  nmlemus/dsagent:latest \
  dsagent run "Analyze data/sales.csv" --data ./data/sales.csv

For Docker deployment details, see docs/DOCKER.md and docs/guide/docker.md.

Quick Start

1. Setup (First Time)

Run the setup wizard to configure your LLM provider:

dsagent init

This will:

  • Ask for your LLM provider (OpenAI, Anthropic, Google, local, etc.)
  • Store your API key securely in ~/.dsagent/.env
  • Automatically select a default model based on provider:
    • OpenAI → gpt-4o
    • Anthropic → claude-sonnet-4-5
    • Google → gemini/gemini-2.5-flash
    • Local → ollama/llama3
  • Optionally configure MCP tools (web search, etc.)

To use a different model, set DSAGENT_DEFAULT_MODEL or LLM_MODEL in ~/.dsagent/.env, or use the --model flag:

dsagent --model gpt-4o-mini

2. Start Chatting

dsagent

This starts an interactive session where you can:

  • Chat naturally with the agent
  • Execute Python code with persistent variables
  • Analyze data files
  • Generate visualizations
  • Resume previous sessions

3. One-Shot Tasks

For batch processing or scripts:

dsagent run "Analyze sales trends" --data ./sales.csv

CLI Commands

Command Description
dsagent Start interactive chat (default)
dsagent chat Same as above, with explicit options
dsagent run "task" Execute a one-shot task
dsagent serve Run REST + WebSocket API server
dsagent init Setup wizard for configuration
dsagent skills list List installed skills
dsagent skills install <source> Install a skill from GitHub or path
dsagent skills remove <name> Remove a skill
dsagent skills info <name> Show skill details
dsagent mcp list List configured MCP servers
dsagent mcp add <template> Add an MCP server from template
dsagent mcp remove <name> Remove an MCP server

Examples

# Interactive chat with specific model
dsagent --model claude-sonnet-4-5

# One-shot analysis
dsagent run "Find patterns in this data" --data ./dataset.csv

# Resume a previous session
dsagent --session abc123

# With MCP tools (web search)
dsagent --mcp-config ~/.dsagent/mcp.yaml

# Human-in-the-loop mode
dsagent --hitl plan

For complete CLI documentation, see docs/CLI.md.

Python API

DSAgent provides two agents for different use cases:

ConversationalAgent (Interactive)

For building chat interfaces and interactive applications:

from dsagent import ConversationalAgent, ConversationalAgentConfig

config = ConversationalAgentConfig(model="gpt-4o")
agent = ConversationalAgent(config)
agent.start()

# Chat with persistent context
response = agent.chat("Load the iris dataset")
print(response.content)

response = agent.chat("Train a classifier on it")
print(response.content)  # Has access to previous variables

agent.shutdown()

PlannerAgent (Batch)

For one-shot tasks and automated pipelines:

from dsagent import PlannerAgent

with PlannerAgent(model="gpt-4o", data="./data.csv") as agent:
    result = agent.run("Analyze this dataset and create visualizations")
    print(result.answer)
    print(f"Notebook: {result.notebook_path}")

For complete API documentation, see docs/PYTHON_API.md.

Supported Models

DSAgent uses LiteLLM to support 100+ LLM providers:

Provider Models API Key
OpenAI gpt-4o, o1, o3-mini OPENAI_API_KEY
Anthropic claude-sonnet-4-5, claude-opus-4 ANTHROPIC_API_KEY
Google gemini-2.5-pro, gemini-2.5-flash GOOGLE_API_KEY
DeepSeek deepseek/deepseek-r1 DEEPSEEK_API_KEY
Ollama ollama/llama3.2 None (local)

For detailed model setup, see docs/MODELS.md.

MCP Tools

Connect to external tools via the Model Context Protocol:

# Add web search capability
dsagent mcp add brave-search

# Use it in chat
dsagent --mcp-config ~/.dsagent/mcp.yaml

Available templates: brave-search, filesystem, github, memory, fetch, bigquery

For MCP configuration details, see docs/MCP.md.

Session Management

Sessions persist your conversation history and kernel state:

# List sessions
dsagent chat
> /sessions

# Resume a session
dsagent --session <session-id>

# Export session to notebook
> /export myanalysis.ipynb

Output Structure

Each run creates organized output:

workspace/
└── runs/{run_id}/
    ├── data/           # Input data (copied)
    ├── notebooks/      # Generated Jupyter notebooks
    ├── artifacts/      # Charts, models, exports
    └── logs/           # Execution logs

Included Libraries

DSAgent comes with essential data science libraries pre-installed:

Category Libraries
Core numpy, pandas, scipy
DataFrames polars, pyarrow
Visualization matplotlib, seaborn, plotly
Machine Learning scikit-learn, xgboost, lightgbm, pycaret
Feature Selection boruta
Statistics statsmodels

Documentation

License

MIT

Metadata

Release files for datascience-agent 0.9.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for datascience-agent 0.9.1
File Size Uploaded
datascience_agent-0.9.1.tar.gz 583.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for datascience-agent 0.9.1
File Interpreter ABI Platform
datascience_agent-0.9.1-py3-none-any.whl Python 3 none any Details

Total release size: 774.3 kB

Release files / datascience_agent-0.9.1.tar.gz

Download URL datascience_agent-0.9.1.tar.gz
Size 583.4 kB
Tags Source
SHA-256 checksum
How to use checksums
36242162591873952e464d6c7bfcd3db3101bbe9eaa47e5aea8b011043cfac33
BLAKE2b-256 checksum
How to use checksums
7af3f928d1fd51ceb5b535fa7b43459a773965af580b758472b6f67a5e3cc038
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 19, 2026.

Transparency log

Release files / datascience_agent-0.9.1-py3-none-any.whl

Download URL datascience_agent-0.9.1-py3-none-any.whl
Size 190.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0a50235fc2f49fad8366236640df2d1b39f6d4d5d5f78ba5f8f7752e2985f902
BLAKE2b-256 checksum
How to use checksums
cb9009cc9bd151e62b228af102bbb3d51fb5e423f0693a6fd21c91b03b9a828b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 19, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.9.1 This release

2 release files

0.9.0

2 release files

0.8.4

2 release files

0.8.3

2 release files

0.8.2

2 release files

0.8.1

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.2

2 release files

0.6.1

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page