Skip to main content

EvoScientist: Towards Self-Evolving AI Scientists for End-to-End Scientific Discovery

Project description

EvoScientist

Typing SVG

PyPI Project Page arXiv License

๐Ÿ”ฅ News

TODO

  • [27 Sep 2025] โ›ณ Our preprint is now live on [arXiv] โ€” check it out for details.

Overview

TODO

๐Ÿ“– Contents

๐Ÿค– Supported Models

Provider Short Name Model ID
Anthropic claude-sonnet-4-5 claude-sonnet-4-5-20250929
Anthropic claude-opus-4-5 claude-opus-4-5-20251101
Anthropic claude-3-5-sonnet claude-3-5-sonnet-20241022
Anthropic claude-3-5-haiku claude-3-5-haiku-20241022
OpenAI gpt-4o gpt-4o
OpenAI gpt-4o-mini gpt-4o-mini
OpenAI o1 o1
OpenAI o1-mini o1-mini
NVIDIA glm4.7 z-ai/glm4.7
NVIDIA deepseek-v3.1 deepseek-ai/deepseek-v3.1-terminus
NVIDIA nemotron-nano nvidia/nemotron-3-nano-30b-a3b

You can also use any full model ID directly โ€” the provider will be inferred automatically.

โ›๏ธ Installation

[!TIP]
Use uv for installation โ€” it's faster and more reliable than pip.

For Development

# Create and activate a conda environment
conda create -n EvoSci python=3.11 -y
conda activate EvoSci

# Install in development (editable) mode
pip install EvoScientist
# or
pip install -e .

Option 1:

Install the latest version directly from GitHub for quick setup:

TODO

Option 2:

If you plan to modify the code or contribute to the project, you can clone the repository and install it in editable mode:

TODO

๐Ÿ”„ Upgrade to the latest code base
git pull
uv pip install -e .

๐Ÿ”‘ API Key Configuration

EvoScientist requires API keys for LLM inference and web search. You can configure them in three ways:

Option A: Interactive Setup Wizard (Recommended)

EvoSci onboard

The wizard guides you through selecting a provider, entering API keys, choosing a model, and configuring workspace settings. Keys are validated automatically.

Option B: Environment Variables (Global)

Set keys directly in your terminal session. Add these to your shell profile (~/.bashrc, ~/.zshrc, etc.) to persist across sessions:

export ANTHROPIC_API_KEY="your_anthropic_api_key_here"
export TAVILY_API_KEY="your_tavily_api_key_here"

# Optional: OpenAI or NVIDIA provider
export OPENAI_API_KEY="your_openai_api_key_here"
export NVIDIA_API_KEY="your_nvidia_api_key_here"

Option C: .env File (Project-level)

Create a .env file in the project root. This keeps keys scoped to the project and out of your shell history:

cp .env.example .env

Then edit .env and fill in your keys:

ANTHROPIC_API_KEY=your_anthropic_api_key_here
TAVILY_API_KEY=your_tavily_api_key_here

[!WARNING] Never commit .env files containing real API keys to version control. The .env file is already included in .gitignore.

Key Required Description
ANTHROPIC_API_KEY For Anthropic Anthropic API key for Claude (console.anthropic.com)
OPENAI_API_KEY For OpenAI OpenAI API key for GPT models (platform.openai.com)
NVIDIA_API_KEY For NVIDIA NVIDIA API key for NIM models (build.nvidia.com)
TAVILY_API_KEY Yes Tavily API key for web search (app.tavily.com)

โšก Quick Start

CLI Inference

You can perform inference directly from the command line using our CLI tool:

demo

python -m EvoScientist 

or

EvoSci # or EvoScientist

Optional arguments:

--mode <mode>      Workspace mode: 'daemon' (persistent) or 'run' (isolated per-session)
--workdir <path>   Override workspace directory for this session
--use-cwd          Use current working directory as workspace
--thread-id <id>   Resume a conversation thread
--no-thinking      Disable thinking display
-p, --prompt <q>   Single-shot mode: execute query and exit

Configuration commands:

EvoSci onboard                # Interactive setup wizard
EvoSci onboard --skip-validation  # Skip API key validation
EvoSci config                 # List all configuration values
EvoSci config get <key>       # Get a single value
EvoSci config set <key> <val> # Set a single value
EvoSci config reset --yes     # Reset to defaults
EvoSci config path            # Show config file path

Interactive Commands:

Command Description
/exit Quit the session
/new Start a new session (new workspace + thread)
/thread Show current thread ID and workspace path
/skills List installed user skills
/install-skill <source> Install a skill from local path or GitHub
/uninstall-skill <name> Uninstall a user-installed skill

Skill Installation Examples:

# Install from local path
/install-skill ./my-skill

# Install from GitHub URL
/install-skill https://github.com/owner/repo/tree/main/skill-name

# Install from GitHub shorthand
/install-skill owner/repo@skill-name

Runtime Directories

By default, the workspace is created under the current directory:

./workspace/
  memory/   # shared MEMORY.md (persistent across sessions)
  skills/   # user-installed skills
  runs/     # per-session workspaces

You can force workspace to be the current directory via --use-cwd.

Override individual paths via environment variables:

Variable Default Description
EVOSCIENTIST_WORKSPACE_DIR ./workspace Root workspace directory
EVOSCIENTIST_RUNS_DIR ./workspace/runs Per-session run directories
EVOSCIENTIST_MEMORY_DIR ./workspace/memory Shared memory storage
EVOSCIENTIST_SKILLS_DIR ./workspace/skills User-installed skills

Script Inference

from EvoScientist import EvoScientist_agent
from langchain_core.messages import HumanMessage
from EvoScientist.utils import format_messages

thread = {"configurable": {"thread_id": "1"}}
question = "Hi?"
last_len = 0

for state in EvoScientist_agent.stream(
    {"messages": [HumanMessage(content=question)]},
    config=thread,
    stream_mode="values",
):
    msgs = state["messages"]
    if len(msgs) > last_len:
        format_messages(msgs[last_len:]) 
        last_len = len(msgs)
Output
โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ ๐Ÿง‘ Human โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ Hi?                                                                                                             โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ ๐Ÿ“ AI โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ Hi! I'm here to help you with experimental research tasks. I can assist with:                                   โ”‚
โ”‚                                                                                                                 โ”‚
โ”‚ - **Planning experiments** - designing stages, success criteria, and workflows                                  โ”‚
โ”‚ - **Running experiments** - implementing baselines, training models, analyzing results                          โ”‚
โ”‚ - **Research** - finding papers, methods, datasets, and baselines                                               โ”‚
โ”‚ - **Analysis** - computing metrics, creating visualizations, interpreting results                               โ”‚
โ”‚ - **Writing** - drafting experimental reports and documentation                                                 โ”‚
โ”‚                                                                                                                 โ”‚
โ”‚ What would you like to work on today?                                                                           โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ

Web Interface

TODO

๐Ÿ“Š Evaluation

TODO

๐Ÿ“ Citation

If you find our paper and code useful in your research and applications, please cite using this BibTeX:

TODO

๐Ÿ“š Acknowledgments

This project builds upon the following outstanding open-source works:

  • Deep Agents โ€” A framework for building AI agents that can interact with various tools and environments.
  • Deep Agents UI โ€” A user interface for visualising and managing Deep Agents.

We thank the authors for their valuable contributions to the open-source community.

๐Ÿ“ฆ Codebase Contributors

Yougang Lyu
Yougang Lyu
Xi Zhang
Xi Zhang

For any enquiries or collaboration opportunities, please contact: youganglyu@gmail.com

๐Ÿ“œ License

This project is licensed under the MIT License - see the LICENSE file for details.

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

evoscientist-0.0.1.dev4.tar.gz (900.8 kB view details)

Uploaded Source

Built Distribution

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

evoscientist-0.0.1.dev4-py3-none-any.whl (928.6 kB view details)

Uploaded Python 3

File details

Details for the file evoscientist-0.0.1.dev4.tar.gz.

File metadata

  • Download URL: evoscientist-0.0.1.dev4.tar.gz
  • Upload date:
  • Size: 900.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for evoscientist-0.0.1.dev4.tar.gz
Algorithm Hash digest
SHA256 0a21b120dbef6a8be0f6c8e9018c39922a8c0bb57fdb20a3f34ba074a64d7cfb
MD5 1ed2b3a25e7fd6aa4576db3d2ce3f251
BLAKE2b-256 3ad311e2c7c34f783a3517ceb8e7df855ed35c80b7b350a3aae7415e0047da71

See more details on using hashes here.

File details

Details for the file evoscientist-0.0.1.dev4-py3-none-any.whl.

File metadata

File hashes

Hashes for evoscientist-0.0.1.dev4-py3-none-any.whl
Algorithm Hash digest
SHA256 0a829939ef0642c3d96f83f8503974029fe72325a15f4b2a80ca1863145046cc
MD5 51e42c179c7744634d66884f49aa4613
BLAKE2b-256 3af54f4ba1b4477733681a392653dbac9458c957be2e6fb9cac6bd418256ccab

See more details on using hashes here.

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