EvoScientist: Towards Self-Evolving AI Scientists for End-to-End Scientific Discovery
Project description
EvoScientist
๐ฅ News
TODO
- [27 Sep 2025] โณ Our preprint is now live on [arXiv] โ check it out for details.
Overview
TODO
๐ Contents
- ๐ค Supported Models
- โ๏ธ Installation
- ๐ API Key Configuration
- โก Quick Start
- ๐ Evaluation
- ๐ Citation
- ๐ Acknowledgments
- ๐ฆ Codebase Contributors
- ๐ License
๐ค 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]
Useuvfor installation โ it's faster and more reliable thanpip.
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
.envfiles containing real API keys to version control. The.envfile 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:
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 |
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0a21b120dbef6a8be0f6c8e9018c39922a8c0bb57fdb20a3f34ba074a64d7cfb
|
|
| MD5 |
1ed2b3a25e7fd6aa4576db3d2ce3f251
|
|
| BLAKE2b-256 |
3ad311e2c7c34f783a3517ceb8e7df855ed35c80b7b350a3aae7415e0047da71
|
File details
Details for the file evoscientist-0.0.1.dev4-py3-none-any.whl.
File metadata
- Download URL: evoscientist-0.0.1.dev4-py3-none-any.whl
- Upload date:
- Size: 928.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0a829939ef0642c3d96f83f8503974029fe72325a15f4b2a80ca1863145046cc
|
|
| MD5 |
51e42c179c7744634d66884f49aa4613
|
|
| BLAKE2b-256 |
3af54f4ba1b4477733681a392653dbac9458c957be2e6fb9cac6bd418256ccab
|