EvoScientist 0.0.1.dev3__py3-none-any.whl → 0.0.1.dev4__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- EvoScientist/EvoScientist.py +13 -9
- EvoScientist/__init__.py +19 -0
- EvoScientist/cli.py +264 -23
- EvoScientist/config.py +274 -0
- EvoScientist/llm/__init__.py +21 -0
- EvoScientist/llm/models.py +99 -0
- EvoScientist/onboard.py +725 -0
- EvoScientist/paths.py +2 -3
- EvoScientist/skills_manager.py +1 -2
- EvoScientist/stream/display.py +1 -1
- EvoScientist/tools.py +11 -2
- {evoscientist-0.0.1.dev3.dist-info → evoscientist-0.0.1.dev4.dist-info}/METADATA +68 -22
- {evoscientist-0.0.1.dev3.dist-info → evoscientist-0.0.1.dev4.dist-info}/RECORD +17 -13
- {evoscientist-0.0.1.dev3.dist-info → evoscientist-0.0.1.dev4.dist-info}/WHEEL +0 -0
- {evoscientist-0.0.1.dev3.dist-info → evoscientist-0.0.1.dev4.dist-info}/entry_points.txt +0 -0
- {evoscientist-0.0.1.dev3.dist-info → evoscientist-0.0.1.dev4.dist-info}/licenses/LICENSE +0 -0
- {evoscientist-0.0.1.dev3.dist-info → evoscientist-0.0.1.dev4.dist-info}/top_level.txt +0 -0
EvoScientist/paths.py
CHANGED
|
@@ -18,9 +18,8 @@ def _env_path(key: str) -> Path | None:
|
|
|
18
18
|
return _expand(value)
|
|
19
19
|
|
|
20
20
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
WORKSPACE_ROOT = _env_path("EVOSCIENTIST_WORKSPACE_DIR") or (STATE_ROOT / "workspace")
|
|
21
|
+
# Workspace root: directly under cwd (no hidden .evoscientist layer)
|
|
22
|
+
WORKSPACE_ROOT = _env_path("EVOSCIENTIST_WORKSPACE_DIR") or (Path.cwd() / "workspace")
|
|
24
23
|
|
|
25
24
|
RUNS_DIR = _env_path("EVOSCIENTIST_RUNS_DIR") or (WORKSPACE_ROOT / "runs")
|
|
26
25
|
MEMORY_DIR = _env_path("EVOSCIENTIST_MEMORY_DIR") or (WORKSPACE_ROOT / "memory")
|
EvoScientist/skills_manager.py
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"""Skill installation and management for EvoScientist.
|
|
2
2
|
|
|
3
3
|
This module provides functions for installing, listing, and uninstalling user skills.
|
|
4
|
-
Skills are installed to USER_SKILLS_DIR (
|
|
4
|
+
Skills are installed to USER_SKILLS_DIR (./workspace/skills/).
|
|
5
5
|
|
|
6
6
|
Supported installation sources:
|
|
7
7
|
- Local directory paths
|
|
@@ -34,7 +34,6 @@ import subprocess
|
|
|
34
34
|
import tempfile
|
|
35
35
|
from dataclasses import dataclass
|
|
36
36
|
from pathlib import Path
|
|
37
|
-
from typing import Iterator
|
|
38
37
|
|
|
39
38
|
import yaml
|
|
40
39
|
|
EvoScientist/stream/display.py
CHANGED
|
@@ -194,7 +194,7 @@ def _render_subagent_section(sa: 'SubAgentState', compact: bool = False) -> list
|
|
|
194
194
|
pending.append(tc)
|
|
195
195
|
|
|
196
196
|
succeeded = sum(1 for _, tr in completed if tr.get("success", True))
|
|
197
|
-
|
|
197
|
+
_ = len(completed) - succeeded # failed count, unused for now
|
|
198
198
|
|
|
199
199
|
# Build display name
|
|
200
200
|
display_name = f"Cooking with {sa.name}"
|
EvoScientist/tools.py
CHANGED
|
@@ -16,7 +16,16 @@ from typing_extensions import Annotated
|
|
|
16
16
|
|
|
17
17
|
load_dotenv(override=True)
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
# Lazy initialization - only create client when needed
|
|
20
|
+
_tavily_client = None
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def _get_tavily_client() -> TavilyClient:
|
|
24
|
+
"""Get or create the Tavily client (lazy initialization)."""
|
|
25
|
+
global _tavily_client
|
|
26
|
+
if _tavily_client is None:
|
|
27
|
+
_tavily_client = TavilyClient()
|
|
28
|
+
return _tavily_client
|
|
20
29
|
|
|
21
30
|
|
|
22
31
|
async def fetch_webpage_content(url: str, timeout: float = 10.0) -> str:
|
|
@@ -67,7 +76,7 @@ async def tavily_search(
|
|
|
67
76
|
"""
|
|
68
77
|
|
|
69
78
|
def _sync_search() -> dict:
|
|
70
|
-
return
|
|
79
|
+
return _get_tavily_client().search(
|
|
71
80
|
query,
|
|
72
81
|
max_results=max_results,
|
|
73
82
|
topic=topic,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: EvoScientist
|
|
3
|
-
Version: 0.0.1.
|
|
3
|
+
Version: 0.0.1.dev4
|
|
4
4
|
Summary: EvoScientist: Towards Self-Evolving AI Scientists for End-to-End Scientific Discovery
|
|
5
5
|
Author: Xi Zhang
|
|
6
6
|
Maintainer: Xi Zhang
|
|
@@ -16,11 +16,13 @@ License-File: LICENSE
|
|
|
16
16
|
Requires-Dist: deepagents>=0.3.6
|
|
17
17
|
Requires-Dist: langchain>=1.2
|
|
18
18
|
Requires-Dist: langchain-anthropic>=1.3
|
|
19
|
-
Requires-Dist:
|
|
19
|
+
Requires-Dist: langchain-openai>=0.3
|
|
20
|
+
Requires-Dist: langchain-nvidia-ai-endpoints>=0.3
|
|
20
21
|
Requires-Dist: tavily-python>=0.7
|
|
21
22
|
Requires-Dist: pyyaml>=6.0
|
|
22
23
|
Requires-Dist: rich>=14.0
|
|
23
24
|
Requires-Dist: prompt-toolkit>=3.0
|
|
25
|
+
Requires-Dist: questionary>=2.0.1
|
|
24
26
|
Requires-Dist: typer>=0.12
|
|
25
27
|
Requires-Dist: python-dotenv>=1.0
|
|
26
28
|
Requires-Dist: langgraph-cli[inmem]>=0.4
|
|
@@ -29,6 +31,8 @@ Requires-Dist: markdownify>=0.14
|
|
|
29
31
|
Provides-Extra: dev
|
|
30
32
|
Requires-Dist: pytest>=8.0; extra == "dev"
|
|
31
33
|
Requires-Dist: pytest-cov>=5.0; extra == "dev"
|
|
34
|
+
Requires-Dist: ruff>=0.5; extra == "dev"
|
|
35
|
+
Requires-Dist: build>=1.0; extra == "dev"
|
|
32
36
|
Dynamic: license-file
|
|
33
37
|
|
|
34
38
|
<!-- Add logo here -->
|
|
@@ -61,6 +65,7 @@ Dynamic: license-file
|
|
|
61
65
|
|
|
62
66
|
|
|
63
67
|
## 📖 Contents
|
|
68
|
+
- [🤖 Supported Models](#-supported-models)
|
|
64
69
|
- [⛏️ Installation](#️-installation)
|
|
65
70
|
- [🔑 API Key Configuration](#-api-key-configuration)
|
|
66
71
|
- [⚡ Quick Start](#-quick-start)
|
|
@@ -73,6 +78,24 @@ Dynamic: license-file
|
|
|
73
78
|
- [📦 Codebase Contributors](#-codebase-contributors)
|
|
74
79
|
- [📜 License](#-license)
|
|
75
80
|
|
|
81
|
+
## 🤖 Supported Models
|
|
82
|
+
|
|
83
|
+
| Provider | Short Name | Model ID |
|
|
84
|
+
|----------|-----------|----------|
|
|
85
|
+
| Anthropic | `claude-sonnet-4-5` | `claude-sonnet-4-5-20250929` |
|
|
86
|
+
| Anthropic | `claude-opus-4-5` | `claude-opus-4-5-20251101` |
|
|
87
|
+
| Anthropic | `claude-3-5-sonnet` | `claude-3-5-sonnet-20241022` |
|
|
88
|
+
| Anthropic | `claude-3-5-haiku` | `claude-3-5-haiku-20241022` |
|
|
89
|
+
| OpenAI | `gpt-4o` | `gpt-4o` |
|
|
90
|
+
| OpenAI | `gpt-4o-mini` | `gpt-4o-mini` |
|
|
91
|
+
| OpenAI | `o1` | `o1` |
|
|
92
|
+
| OpenAI | `o1-mini` | `o1-mini` |
|
|
93
|
+
| NVIDIA | `glm4.7` | `z-ai/glm4.7` |
|
|
94
|
+
| NVIDIA | `deepseek-v3.1` | `deepseek-ai/deepseek-v3.1-terminus` |
|
|
95
|
+
| NVIDIA | `nemotron-nano` | `nvidia/nemotron-3-nano-30b-a3b` |
|
|
96
|
+
|
|
97
|
+
You can also use any full model ID directly — the provider will be inferred automatically.
|
|
98
|
+
|
|
76
99
|
## ⛏️ Installation
|
|
77
100
|
|
|
78
101
|
> [!TIP]
|
|
@@ -110,18 +133,30 @@ uv pip install -e .
|
|
|
110
133
|
|
|
111
134
|
## 🔑 API Key Configuration
|
|
112
135
|
|
|
113
|
-
EvoScientist requires API keys for LLM inference and web search. You can configure them in
|
|
136
|
+
EvoScientist requires API keys for LLM inference and web search. You can configure them in three ways:
|
|
137
|
+
|
|
138
|
+
### Option A: Interactive Setup Wizard (Recommended)
|
|
139
|
+
|
|
140
|
+
```Shell
|
|
141
|
+
EvoSci onboard
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
The wizard guides you through selecting a provider, entering API keys, choosing a model, and configuring workspace settings. Keys are validated automatically.
|
|
114
145
|
|
|
115
|
-
### Option
|
|
146
|
+
### Option B: Environment Variables (Global)
|
|
116
147
|
|
|
117
148
|
Set keys directly in your terminal session. Add these to your shell profile (`~/.bashrc`, `~/.zshrc`, etc.) to persist across sessions:
|
|
118
149
|
|
|
119
150
|
```Shell
|
|
120
151
|
export ANTHROPIC_API_KEY="your_anthropic_api_key_here"
|
|
121
152
|
export TAVILY_API_KEY="your_tavily_api_key_here"
|
|
153
|
+
|
|
154
|
+
# Optional: OpenAI or NVIDIA provider
|
|
155
|
+
export OPENAI_API_KEY="your_openai_api_key_here"
|
|
156
|
+
export NVIDIA_API_KEY="your_nvidia_api_key_here"
|
|
122
157
|
```
|
|
123
158
|
|
|
124
|
-
### Option
|
|
159
|
+
### Option C: `.env` File (Project-level)
|
|
125
160
|
|
|
126
161
|
Create a `.env` file in the project root. This keeps keys scoped to the project and out of your shell history:
|
|
127
162
|
|
|
@@ -141,7 +176,9 @@ TAVILY_API_KEY=your_tavily_api_key_here
|
|
|
141
176
|
|
|
142
177
|
| Key | Required | Description |
|
|
143
178
|
|-----|----------|-------------|
|
|
144
|
-
| `ANTHROPIC_API_KEY` |
|
|
179
|
+
| `ANTHROPIC_API_KEY` | For Anthropic | Anthropic API key for Claude ([console.anthropic.com](https://console.anthropic.com/)) |
|
|
180
|
+
| `OPENAI_API_KEY` | For OpenAI | OpenAI API key for GPT models ([platform.openai.com](https://platform.openai.com/)) |
|
|
181
|
+
| `NVIDIA_API_KEY` | For NVIDIA | NVIDIA API key for NIM models ([build.nvidia.com](https://build.nvidia.com/)) |
|
|
145
182
|
| `TAVILY_API_KEY` | Yes | Tavily API key for web search ([app.tavily.com](https://app.tavily.com/)) |
|
|
146
183
|
|
|
147
184
|
## ⚡ Quick Start
|
|
@@ -161,10 +198,24 @@ EvoSci # or EvoScientist
|
|
|
161
198
|
**Optional arguments:**
|
|
162
199
|
|
|
163
200
|
```
|
|
201
|
+
--mode <mode> Workspace mode: 'daemon' (persistent) or 'run' (isolated per-session)
|
|
164
202
|
--workdir <path> Override workspace directory for this session
|
|
165
203
|
--use-cwd Use current working directory as workspace
|
|
166
204
|
--thread-id <id> Resume a conversation thread
|
|
167
205
|
--no-thinking Disable thinking display
|
|
206
|
+
-p, --prompt <q> Single-shot mode: execute query and exit
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
**Configuration commands:**
|
|
210
|
+
|
|
211
|
+
```Shell
|
|
212
|
+
EvoSci onboard # Interactive setup wizard
|
|
213
|
+
EvoSci onboard --skip-validation # Skip API key validation
|
|
214
|
+
EvoSci config # List all configuration values
|
|
215
|
+
EvoSci config get <key> # Get a single value
|
|
216
|
+
EvoSci config set <key> <val> # Set a single value
|
|
217
|
+
EvoSci config reset --yes # Reset to defaults
|
|
218
|
+
EvoSci config path # Show config file path
|
|
168
219
|
```
|
|
169
220
|
|
|
170
221
|
**Interactive Commands:**
|
|
@@ -193,30 +244,25 @@ EvoSci # or EvoScientist
|
|
|
193
244
|
|
|
194
245
|
### Runtime Directories
|
|
195
246
|
|
|
196
|
-
By default, the **workspace** is created under
|
|
197
|
-
project directory:
|
|
247
|
+
By default, the **workspace** is created under the current directory:
|
|
198
248
|
|
|
199
249
|
```
|
|
200
|
-
|
|
201
|
-
memory/ # shared MEMORY.md
|
|
250
|
+
./workspace/
|
|
251
|
+
memory/ # shared MEMORY.md (persistent across sessions)
|
|
202
252
|
skills/ # user-installed skills
|
|
203
|
-
runs/ # per-
|
|
253
|
+
runs/ # per-session workspaces
|
|
204
254
|
```
|
|
205
255
|
|
|
206
256
|
You can force workspace to be the current directory via `--use-cwd`.
|
|
207
257
|
|
|
208
|
-
|
|
209
|
-
directory instead of the project root:
|
|
210
|
-
|
|
211
|
-
Example with `EVOSCIENTIST_HOME=~/.evoscientist`:
|
|
258
|
+
Override individual paths via environment variables:
|
|
212
259
|
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
```
|
|
260
|
+
| Variable | Default | Description |
|
|
261
|
+
|----------|---------|-------------|
|
|
262
|
+
| `EVOSCIENTIST_WORKSPACE_DIR` | `./workspace` | Root workspace directory |
|
|
263
|
+
| `EVOSCIENTIST_RUNS_DIR` | `./workspace/runs` | Per-session run directories |
|
|
264
|
+
| `EVOSCIENTIST_MEMORY_DIR` | `./workspace/memory` | Shared memory storage |
|
|
265
|
+
| `EVOSCIENTIST_SKILLS_DIR` | `./workspace/skills` | User-installed skills |
|
|
220
266
|
|
|
221
267
|
### Script Inference
|
|
222
268
|
```python
|
|
@@ -1,16 +1,20 @@
|
|
|
1
|
-
EvoScientist/EvoScientist.py,sha256=
|
|
2
|
-
EvoScientist/__init__.py,sha256=
|
|
1
|
+
EvoScientist/EvoScientist.py,sha256=qhiCOOZvH6cmjLiKRMvfr74xJM7x-dZrrRoX9xrfLtQ,6053
|
|
2
|
+
EvoScientist/__init__.py,sha256=BN8yi3iCIaq2gNfKORrI9OvMq49a2LrYWgEqW86vYLw,1120
|
|
3
3
|
EvoScientist/__main__.py,sha256=P5USQ_BiiY0TBhtajGMuX5AMXlQ5joz1kvljHeacqmA,91
|
|
4
4
|
EvoScientist/backends.py,sha256=3fIYRdOecL-KZx2hSNolsLO-2_rMzey-NpVMDMN701U,13355
|
|
5
|
-
EvoScientist/cli.py,sha256=
|
|
5
|
+
EvoScientist/cli.py,sha256=5y_yTBhLnXxI5JVFawcYbsbDEWMED_t2-X4LVbT24kY,25978
|
|
6
|
+
EvoScientist/config.py,sha256=rXD_qlrTxP3HLH7H6DxvqKP4WwymyrzRyS8665igd6k,8649
|
|
6
7
|
EvoScientist/memory.py,sha256=ZgITkiLezjAeo9z12UWRZurE1hZU7ehF-SAKrchPIEs,26475
|
|
7
8
|
EvoScientist/middleware.py,sha256=hBHov8wFhe-AS-C84BFRDgikl5q8Xb9AMU4FfNxs9Jg,2620
|
|
8
|
-
EvoScientist/
|
|
9
|
+
EvoScientist/onboard.py,sha256=x6THI4ryTMTBQBb90JRFhcZmPsc970yh77_VCuNqwm8,22200
|
|
10
|
+
EvoScientist/paths.py,sha256=r3u632RJXfl8KPVhWBwVKPx9zFbvj1CZCIf7NeFBja4,1346
|
|
9
11
|
EvoScientist/prompts.py,sha256=ni-qHoEoM703xtfD4J3IlvwAWPcW8gcNiCBVjRJoy3g,10692
|
|
10
|
-
EvoScientist/skills_manager.py,sha256=
|
|
12
|
+
EvoScientist/skills_manager.py,sha256=r1ZCnZkFij-uRwj09FmT67VFR5eRgd3ynzKWmykQJeI,12205
|
|
11
13
|
EvoScientist/subagent.yaml,sha256=yoFlMJWitLlYuOe4_44EPG6vjpNP_txHBlqr-kNX2GM,6130
|
|
12
|
-
EvoScientist/tools.py,sha256=
|
|
14
|
+
EvoScientist/tools.py,sha256=7rCq3Sy74qAKEKnttvy9H7-LB8moXeYK0h7xRJnZJGk,6772
|
|
13
15
|
EvoScientist/utils.py,sha256=GuWMRMkPHYgUOtoPZA0ErIt4FUBE4NMkz_OZluxYyRo,6801
|
|
16
|
+
EvoScientist/llm/__init__.py,sha256=A3nQPKGP6qqh2K72_NZlUozNNwfD4jcEMyBerne9IGc,363
|
|
17
|
+
EvoScientist/llm/models.py,sha256=3AhHG__OLbnQlgB3kIM3Ejf9kU2Cv6rDzc7uT5eKzYk,3335
|
|
14
18
|
EvoScientist/skills/accelerate/SKILL.md,sha256=Ju_xLlGW3bZBWQO_8FWThkP155jE2atq9Ww0Zn8XwEs,8328
|
|
15
19
|
EvoScientist/skills/accelerate/references/custom-plugins.md,sha256=Gy8c9dcKFV93ksrRKkZr5DFbeH_iHgGzbTK_N0aTwCA,11781
|
|
16
20
|
EvoScientist/skills/accelerate/references/megatron-integration.md,sha256=ad7cw8eMGX3vqGUxQSVBuWpiQJDAr9eHqWfPhlEXJz0,11252
|
|
@@ -98,16 +102,16 @@ EvoScientist/skills/skill-creator/scripts/init_skill.py,sha256=C7olC5TKpMsrKLFdr
|
|
|
98
102
|
EvoScientist/skills/skill-creator/scripts/package_skill.py,sha256=sx-8s-Ni1cUwjpklX_joPN46UT4GNpU5ZKZISUyhCTE,3288
|
|
99
103
|
EvoScientist/skills/skill-creator/scripts/quick_validate.py,sha256=OBqy09H9XsMjcQFkEwY-_5nQ1IxBV0cIXGFRfpZ9u4c,3523
|
|
100
104
|
EvoScientist/stream/__init__.py,sha256=_mdc88i75D3qlfuIBWpNm4-W5xMYIvM39vERgb53Bkk,1933
|
|
101
|
-
EvoScientist/stream/display.py,sha256=
|
|
105
|
+
EvoScientist/stream/display.py,sha256=jCyohjfulwgyV-gOa5g5HXsepNLNLjdMdfQE9bt1-ZA,22565
|
|
102
106
|
EvoScientist/stream/emitter.py,sha256=zmdn8vIXNgkgoWRtanrMtPN2GlsHmZtdFmoqCry3o_o,2978
|
|
103
107
|
EvoScientist/stream/events.py,sha256=dSnHsDGl_HEBbfmQYv40YZVR-RDZPLZFsjlwmO46ch4,17251
|
|
104
108
|
EvoScientist/stream/formatter.py,sha256=vyv89NGoTzxjsWt0teBXX38MZzFLhzMDBUcIH6-slDo,5532
|
|
105
109
|
EvoScientist/stream/state.py,sha256=RX7JOBJLYXu7tdtDx71QR2U8JDHHTsB4GM877z9UKLM,12961
|
|
106
110
|
EvoScientist/stream/tracker.py,sha256=cVWmiTCiwzOh84I7sAXXfgr_HXxOCCCzTvli-XJhthQ,3670
|
|
107
111
|
EvoScientist/stream/utils.py,sha256=yQXhPIzOYzpNUUyDvkQDv1K-Yo0ePkXMtU7fHhRoG64,7718
|
|
108
|
-
evoscientist-0.0.1.
|
|
109
|
-
evoscientist-0.0.1.
|
|
110
|
-
evoscientist-0.0.1.
|
|
111
|
-
evoscientist-0.0.1.
|
|
112
|
-
evoscientist-0.0.1.
|
|
113
|
-
evoscientist-0.0.1.
|
|
112
|
+
evoscientist-0.0.1.dev4.dist-info/licenses/LICENSE,sha256=NsYFy5JSm90lmXcPNQuthVTCVaVcbT4XZ9h5HpAoGIo,1069
|
|
113
|
+
evoscientist-0.0.1.dev4.dist-info/METADATA,sha256=Hi6nET3VH8m2uv_JIcCNrQZJz4jL1OfbMd6jM5tGEY0,13901
|
|
114
|
+
evoscientist-0.0.1.dev4.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
115
|
+
evoscientist-0.0.1.dev4.dist-info/entry_points.txt,sha256=mGxz9_-jfGhwkdiiVGTQ9IQEhzLixWJoPNU39_boWMM,154
|
|
116
|
+
evoscientist-0.0.1.dev4.dist-info/top_level.txt,sha256=XBZouSd9lQfNn0Fus6jQb9nqdXzAbKyzh987Jt3A2-A,13
|
|
117
|
+
evoscientist-0.0.1.dev4.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|