EvoScientist 0.0.1.dev1__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 +157 -0
- EvoScientist/__init__.py +24 -0
- EvoScientist/__main__.py +4 -0
- EvoScientist/backends.py +392 -0
- EvoScientist/cli.py +1553 -0
- EvoScientist/middleware.py +35 -0
- EvoScientist/prompts.py +277 -0
- EvoScientist/skills/accelerate/SKILL.md +332 -0
- EvoScientist/skills/accelerate/references/custom-plugins.md +453 -0
- EvoScientist/skills/accelerate/references/megatron-integration.md +489 -0
- EvoScientist/skills/accelerate/references/performance.md +525 -0
- EvoScientist/skills/bitsandbytes/SKILL.md +411 -0
- EvoScientist/skills/bitsandbytes/references/memory-optimization.md +521 -0
- EvoScientist/skills/bitsandbytes/references/qlora-training.md +521 -0
- EvoScientist/skills/bitsandbytes/references/quantization-formats.md +447 -0
- EvoScientist/skills/find-skills/SKILL.md +133 -0
- EvoScientist/skills/find-skills/scripts/install_skill.py +211 -0
- EvoScientist/skills/flash-attention/SKILL.md +367 -0
- EvoScientist/skills/flash-attention/references/benchmarks.md +215 -0
- EvoScientist/skills/flash-attention/references/transformers-integration.md +293 -0
- EvoScientist/skills/llama-cpp/SKILL.md +258 -0
- EvoScientist/skills/llama-cpp/references/optimization.md +89 -0
- EvoScientist/skills/llama-cpp/references/quantization.md +213 -0
- EvoScientist/skills/llama-cpp/references/server.md +125 -0
- EvoScientist/skills/lm-evaluation-harness/SKILL.md +490 -0
- EvoScientist/skills/lm-evaluation-harness/references/api-evaluation.md +490 -0
- EvoScientist/skills/lm-evaluation-harness/references/benchmark-guide.md +488 -0
- EvoScientist/skills/lm-evaluation-harness/references/custom-tasks.md +602 -0
- EvoScientist/skills/lm-evaluation-harness/references/distributed-eval.md +519 -0
- EvoScientist/skills/ml-paper-writing/SKILL.md +937 -0
- EvoScientist/skills/ml-paper-writing/references/checklists.md +361 -0
- EvoScientist/skills/ml-paper-writing/references/citation-workflow.md +562 -0
- EvoScientist/skills/ml-paper-writing/references/reviewer-guidelines.md +367 -0
- EvoScientist/skills/ml-paper-writing/references/sources.md +159 -0
- EvoScientist/skills/ml-paper-writing/references/writing-guide.md +476 -0
- EvoScientist/skills/ml-paper-writing/templates/README.md +251 -0
- EvoScientist/skills/ml-paper-writing/templates/aaai2026/README.md +534 -0
- EvoScientist/skills/ml-paper-writing/templates/aaai2026/aaai2026-unified-supp.tex +144 -0
- EvoScientist/skills/ml-paper-writing/templates/aaai2026/aaai2026-unified-template.tex +952 -0
- EvoScientist/skills/ml-paper-writing/templates/aaai2026/aaai2026.bib +111 -0
- EvoScientist/skills/ml-paper-writing/templates/aaai2026/aaai2026.bst +1493 -0
- EvoScientist/skills/ml-paper-writing/templates/aaai2026/aaai2026.sty +315 -0
- EvoScientist/skills/ml-paper-writing/templates/acl/README.md +50 -0
- EvoScientist/skills/ml-paper-writing/templates/acl/acl.sty +312 -0
- EvoScientist/skills/ml-paper-writing/templates/acl/acl_latex.tex +377 -0
- EvoScientist/skills/ml-paper-writing/templates/acl/acl_lualatex.tex +101 -0
- EvoScientist/skills/ml-paper-writing/templates/acl/acl_natbib.bst +1940 -0
- EvoScientist/skills/ml-paper-writing/templates/acl/anthology.bib.txt +26 -0
- EvoScientist/skills/ml-paper-writing/templates/acl/custom.bib +70 -0
- EvoScientist/skills/ml-paper-writing/templates/acl/formatting.md +326 -0
- EvoScientist/skills/ml-paper-writing/templates/colm2025/README.md +3 -0
- EvoScientist/skills/ml-paper-writing/templates/colm2025/colm2025_conference.bib +11 -0
- EvoScientist/skills/ml-paper-writing/templates/colm2025/colm2025_conference.bst +1440 -0
- EvoScientist/skills/ml-paper-writing/templates/colm2025/colm2025_conference.pdf +0 -0
- EvoScientist/skills/ml-paper-writing/templates/colm2025/colm2025_conference.sty +218 -0
- EvoScientist/skills/ml-paper-writing/templates/colm2025/colm2025_conference.tex +305 -0
- EvoScientist/skills/ml-paper-writing/templates/colm2025/fancyhdr.sty +485 -0
- EvoScientist/skills/ml-paper-writing/templates/colm2025/math_commands.tex +508 -0
- EvoScientist/skills/ml-paper-writing/templates/colm2025/natbib.sty +1246 -0
- EvoScientist/skills/ml-paper-writing/templates/iclr2026/fancyhdr.sty +485 -0
- EvoScientist/skills/ml-paper-writing/templates/iclr2026/iclr2026_conference.bib +24 -0
- EvoScientist/skills/ml-paper-writing/templates/iclr2026/iclr2026_conference.bst +1440 -0
- EvoScientist/skills/ml-paper-writing/templates/iclr2026/iclr2026_conference.pdf +0 -0
- EvoScientist/skills/ml-paper-writing/templates/iclr2026/iclr2026_conference.sty +246 -0
- EvoScientist/skills/ml-paper-writing/templates/iclr2026/iclr2026_conference.tex +414 -0
- EvoScientist/skills/ml-paper-writing/templates/iclr2026/math_commands.tex +508 -0
- EvoScientist/skills/ml-paper-writing/templates/iclr2026/natbib.sty +1246 -0
- EvoScientist/skills/ml-paper-writing/templates/icml2026/algorithm.sty +79 -0
- EvoScientist/skills/ml-paper-writing/templates/icml2026/algorithmic.sty +201 -0
- EvoScientist/skills/ml-paper-writing/templates/icml2026/example_paper.bib +75 -0
- EvoScientist/skills/ml-paper-writing/templates/icml2026/example_paper.pdf +0 -0
- EvoScientist/skills/ml-paper-writing/templates/icml2026/example_paper.tex +662 -0
- EvoScientist/skills/ml-paper-writing/templates/icml2026/fancyhdr.sty +864 -0
- EvoScientist/skills/ml-paper-writing/templates/icml2026/icml2026.bst +1443 -0
- EvoScientist/skills/ml-paper-writing/templates/icml2026/icml2026.sty +767 -0
- EvoScientist/skills/ml-paper-writing/templates/icml2026/icml_numpapers.pdf +0 -0
- EvoScientist/skills/ml-paper-writing/templates/neurips2025/Makefile +36 -0
- EvoScientist/skills/ml-paper-writing/templates/neurips2025/extra_pkgs.tex +53 -0
- EvoScientist/skills/ml-paper-writing/templates/neurips2025/main.tex +38 -0
- EvoScientist/skills/ml-paper-writing/templates/neurips2025/neurips.sty +382 -0
- EvoScientist/skills/peft/SKILL.md +431 -0
- EvoScientist/skills/peft/references/advanced-usage.md +514 -0
- EvoScientist/skills/peft/references/troubleshooting.md +480 -0
- EvoScientist/skills/ray-data/SKILL.md +326 -0
- EvoScientist/skills/ray-data/references/integration.md +82 -0
- EvoScientist/skills/ray-data/references/transformations.md +83 -0
- EvoScientist/skills/skill-creator/LICENSE.txt +202 -0
- EvoScientist/skills/skill-creator/SKILL.md +356 -0
- EvoScientist/skills/skill-creator/references/output-patterns.md +82 -0
- EvoScientist/skills/skill-creator/references/workflows.md +28 -0
- EvoScientist/skills/skill-creator/scripts/init_skill.py +303 -0
- EvoScientist/skills/skill-creator/scripts/package_skill.py +110 -0
- EvoScientist/skills/skill-creator/scripts/quick_validate.py +95 -0
- EvoScientist/stream/__init__.py +53 -0
- EvoScientist/stream/emitter.py +94 -0
- EvoScientist/stream/formatter.py +168 -0
- EvoScientist/stream/tracker.py +115 -0
- EvoScientist/stream/utils.py +255 -0
- EvoScientist/subagent.yaml +147 -0
- EvoScientist/tools.py +135 -0
- EvoScientist/utils.py +207 -0
- evoscientist-0.0.1.dev1.dist-info/METADATA +222 -0
- evoscientist-0.0.1.dev1.dist-info/RECORD +107 -0
- evoscientist-0.0.1.dev1.dist-info/WHEEL +5 -0
- evoscientist-0.0.1.dev1.dist-info/entry_points.txt +2 -0
- evoscientist-0.0.1.dev1.dist-info/licenses/LICENSE +21 -0
- evoscientist-0.0.1.dev1.dist-info/top_level.txt +1 -0
EvoScientist/tools.py
ADDED
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
"""Tools.
|
|
2
|
+
|
|
3
|
+
This module provides search and reflection tools for the research agent,
|
|
4
|
+
using Tavily for URL discovery and fetching full webpage content.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
import asyncio
|
|
8
|
+
from typing import Literal
|
|
9
|
+
|
|
10
|
+
import httpx
|
|
11
|
+
from dotenv import load_dotenv
|
|
12
|
+
from langchain_core.tools import InjectedToolArg, tool
|
|
13
|
+
from markdownify import markdownify
|
|
14
|
+
from tavily import TavilyClient
|
|
15
|
+
from typing_extensions import Annotated
|
|
16
|
+
|
|
17
|
+
load_dotenv(override=True)
|
|
18
|
+
|
|
19
|
+
tavily_client = TavilyClient()
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
async def fetch_webpage_content(url: str, timeout: float = 10.0) -> str:
|
|
23
|
+
"""Fetch and convert webpage content to markdown.
|
|
24
|
+
|
|
25
|
+
Args:
|
|
26
|
+
url: URL to fetch
|
|
27
|
+
timeout: Request timeout in seconds
|
|
28
|
+
|
|
29
|
+
Returns:
|
|
30
|
+
Webpage content as markdown
|
|
31
|
+
"""
|
|
32
|
+
headers = {
|
|
33
|
+
"User-Agent": (
|
|
34
|
+
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
|
|
35
|
+
"AppleWebKit/537.36 (KHTML, like Gecko) "
|
|
36
|
+
"Chrome/91.0.4472.124 Safari/537.36"
|
|
37
|
+
)
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
try:
|
|
41
|
+
async with httpx.AsyncClient() as client:
|
|
42
|
+
response = await client.get(url, headers=headers, timeout=timeout)
|
|
43
|
+
response.raise_for_status()
|
|
44
|
+
return markdownify(response.text)
|
|
45
|
+
except Exception as e:
|
|
46
|
+
return f"Error fetching content from {url}: {str(e)}"
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
@tool(parse_docstring=True)
|
|
50
|
+
async def tavily_search(
|
|
51
|
+
query: str,
|
|
52
|
+
max_results: Annotated[int, InjectedToolArg] = 3,
|
|
53
|
+
topic: Annotated[
|
|
54
|
+
Literal["general", "news", "finance"], InjectedToolArg
|
|
55
|
+
] = "general",
|
|
56
|
+
) -> str:
|
|
57
|
+
"""Search the web for information on a given query.
|
|
58
|
+
|
|
59
|
+
Uses Tavily to discover relevant URLs, then fetches and returns
|
|
60
|
+
full webpage content as markdown for comprehensive research.
|
|
61
|
+
|
|
62
|
+
Args:
|
|
63
|
+
query: Search query to execute
|
|
64
|
+
|
|
65
|
+
Returns:
|
|
66
|
+
Formatted search results with full webpage content in markdown
|
|
67
|
+
"""
|
|
68
|
+
|
|
69
|
+
def _sync_search() -> dict:
|
|
70
|
+
return tavily_client.search(
|
|
71
|
+
query,
|
|
72
|
+
max_results=max_results,
|
|
73
|
+
topic=topic,
|
|
74
|
+
)
|
|
75
|
+
|
|
76
|
+
try:
|
|
77
|
+
# Run Tavily search asynchronously
|
|
78
|
+
search_results = await asyncio.to_thread(_sync_search)
|
|
79
|
+
|
|
80
|
+
# Fetch full content for each URL concurrently
|
|
81
|
+
results = search_results.get("results", [])
|
|
82
|
+
if not results:
|
|
83
|
+
return f"No results found for '{query}'"
|
|
84
|
+
|
|
85
|
+
# Fetch all webpages concurrently
|
|
86
|
+
fetch_tasks = [fetch_webpage_content(r["url"]) for r in results]
|
|
87
|
+
contents = await asyncio.gather(*fetch_tasks)
|
|
88
|
+
|
|
89
|
+
# Format results
|
|
90
|
+
result_texts = []
|
|
91
|
+
for result, content in zip(results, contents):
|
|
92
|
+
result_text = f"""## {result["title"]}
|
|
93
|
+
**URL:** {result["url"]}
|
|
94
|
+
|
|
95
|
+
{content}
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
"""
|
|
99
|
+
result_texts.append(result_text)
|
|
100
|
+
|
|
101
|
+
return f"""Found {len(result_texts)} result(s) for '{query}':
|
|
102
|
+
|
|
103
|
+
{"".join(result_texts)}"""
|
|
104
|
+
|
|
105
|
+
except Exception as e:
|
|
106
|
+
return f"Search failed: {str(e)}"
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
@tool(parse_docstring=True)
|
|
110
|
+
def think_tool(reflection: str) -> str:
|
|
111
|
+
"""Tool for strategic reflection on research progress and decision-making.
|
|
112
|
+
|
|
113
|
+
Use this tool after each search to analyze results and plan next steps systematically.
|
|
114
|
+
This creates a deliberate pause in the research workflow for quality decision-making.
|
|
115
|
+
|
|
116
|
+
When to use:
|
|
117
|
+
- After receiving search results: What key information did I find?
|
|
118
|
+
- Before deciding next steps: Do I have enough to answer comprehensively?
|
|
119
|
+
- When assessing research gaps: What specific information am I still missing?
|
|
120
|
+
- Before concluding research: Can I provide a complete answer now?
|
|
121
|
+
|
|
122
|
+
Reflection should address:
|
|
123
|
+
1. Analysis of current findings - What concrete information have I gathered?
|
|
124
|
+
2. Gap assessment - What crucial information is still missing?
|
|
125
|
+
3. Quality evaluation - Do I have sufficient evidence/examples for a good answer?
|
|
126
|
+
4. Strategic decision - Should I continue searching or provide my answer?
|
|
127
|
+
5. Skill leverage - Is there a relevant local skill to load that can accelerate this work?
|
|
128
|
+
|
|
129
|
+
Args:
|
|
130
|
+
reflection: Your detailed reflection on research progress, findings, gaps, and next steps
|
|
131
|
+
|
|
132
|
+
Returns:
|
|
133
|
+
Confirmation that reflection was recorded for decision-making
|
|
134
|
+
"""
|
|
135
|
+
return f"Reflection recorded: {reflection}"
|
EvoScientist/utils.py
ADDED
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
"""Utility functions for EvoScientist.
|
|
2
|
+
|
|
3
|
+
This module primarily contains helpers for displaying messages and prompts in
|
|
4
|
+
notebooks, and lightweight configuration loaders used by the agent runtime.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
import json
|
|
8
|
+
from pathlib import Path
|
|
9
|
+
from typing import Any
|
|
10
|
+
|
|
11
|
+
import yaml
|
|
12
|
+
from rich.console import Console
|
|
13
|
+
from rich.panel import Panel
|
|
14
|
+
from rich.text import Text
|
|
15
|
+
|
|
16
|
+
console = Console()
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def format_message_content(message):
|
|
20
|
+
"""Convert message content to displayable string."""
|
|
21
|
+
parts = []
|
|
22
|
+
tool_calls_processed = False
|
|
23
|
+
|
|
24
|
+
# Handle main content
|
|
25
|
+
if isinstance(message.content, str):
|
|
26
|
+
parts.append(message.content)
|
|
27
|
+
elif isinstance(message.content, list):
|
|
28
|
+
# Handle complex content like tool calls (Anthropic format)
|
|
29
|
+
for item in message.content:
|
|
30
|
+
if item.get("type") == "text":
|
|
31
|
+
parts.append(item["text"])
|
|
32
|
+
elif item.get("type") == "tool_use":
|
|
33
|
+
parts.append(f"\n🔧 Tool Call: {item['name']}")
|
|
34
|
+
parts.append(f" Args: {json.dumps(item['input'], indent=2)}")
|
|
35
|
+
parts.append(f" ID: {item.get('id', 'N/A')}")
|
|
36
|
+
tool_calls_processed = True
|
|
37
|
+
else:
|
|
38
|
+
parts.append(str(message.content))
|
|
39
|
+
|
|
40
|
+
# Handle tool calls attached to the message (OpenAI format) - only if not already processed
|
|
41
|
+
if (
|
|
42
|
+
not tool_calls_processed
|
|
43
|
+
and hasattr(message, "tool_calls")
|
|
44
|
+
and message.tool_calls
|
|
45
|
+
):
|
|
46
|
+
for tool_call in message.tool_calls:
|
|
47
|
+
parts.append(f"\n🔧 Tool Call: {tool_call['name']}")
|
|
48
|
+
parts.append(f" Args: {json.dumps(tool_call['args'], indent=2)}")
|
|
49
|
+
parts.append(f" ID: {tool_call['id']}")
|
|
50
|
+
|
|
51
|
+
return "\n".join(parts)
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
def format_messages(messages):
|
|
55
|
+
"""Format and display a list of messages with Rich formatting."""
|
|
56
|
+
for m in messages:
|
|
57
|
+
msg_type = m.__class__.__name__.replace("Message", "")
|
|
58
|
+
content = format_message_content(m)
|
|
59
|
+
|
|
60
|
+
if msg_type == "Human":
|
|
61
|
+
console.print(Panel(content, title="🧑 Human", border_style="blue"))
|
|
62
|
+
elif msg_type == "Ai":
|
|
63
|
+
console.print(Panel(content, title="🤖 Assistant", border_style="green"))
|
|
64
|
+
elif msg_type == "Tool":
|
|
65
|
+
console.print(Panel(content, title="🔧 Tool Output", border_style="yellow"))
|
|
66
|
+
else:
|
|
67
|
+
console.print(Panel(content, title=f"📝 {msg_type}", border_style="white"))
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
def format_message(messages):
|
|
71
|
+
"""Alias for format_messages for backward compatibility."""
|
|
72
|
+
return format_messages(messages)
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
def show_prompt(prompt_text: str, title: str = "Prompt", border_style: str = "blue"):
|
|
76
|
+
"""Display a prompt with rich formatting and XML tag highlighting.
|
|
77
|
+
|
|
78
|
+
Args:
|
|
79
|
+
prompt_text: The prompt string to display
|
|
80
|
+
title: Title for the panel (default: "Prompt")
|
|
81
|
+
border_style: Border color style (default: "blue")
|
|
82
|
+
"""
|
|
83
|
+
# Create a formatted display of the prompt
|
|
84
|
+
formatted_text = Text(prompt_text)
|
|
85
|
+
formatted_text.highlight_regex(r"<[^>]+>", style="bold blue") # Highlight XML tags
|
|
86
|
+
formatted_text.highlight_regex(
|
|
87
|
+
r"##[^#\n]+", style="bold magenta"
|
|
88
|
+
) # Highlight headers
|
|
89
|
+
formatted_text.highlight_regex(
|
|
90
|
+
r"###[^#\n]+", style="bold cyan"
|
|
91
|
+
) # Highlight sub-headers
|
|
92
|
+
|
|
93
|
+
# Display in a panel for better presentation
|
|
94
|
+
console.print(
|
|
95
|
+
Panel(
|
|
96
|
+
formatted_text,
|
|
97
|
+
title=f"[bold green]{title}[/bold green]",
|
|
98
|
+
border_style=border_style,
|
|
99
|
+
padding=(1, 2),
|
|
100
|
+
)
|
|
101
|
+
)
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
def load_subagents(
|
|
105
|
+
config_path: Path,
|
|
106
|
+
*,
|
|
107
|
+
tool_registry: dict[str, Any],
|
|
108
|
+
prompt_refs: dict[str, str] | None = None,
|
|
109
|
+
) -> list[dict[str, Any]]:
|
|
110
|
+
"""Load subagent definitions from YAML and wire up tools.
|
|
111
|
+
|
|
112
|
+
NOTE: This is a custom utility. deepagents does not natively load subagents
|
|
113
|
+
from files - they're normally defined inline in the create_deep_agent() call.
|
|
114
|
+
We externalize to YAML here to keep configuration separate from code.
|
|
115
|
+
|
|
116
|
+
Supported YAML schemas:
|
|
117
|
+
|
|
118
|
+
1) Mapping style (recommended):
|
|
119
|
+
planner-agent:
|
|
120
|
+
description: "..."
|
|
121
|
+
tools: [think_tool]
|
|
122
|
+
system_prompt: |
|
|
123
|
+
...
|
|
124
|
+
research-agent:
|
|
125
|
+
description: "..."
|
|
126
|
+
tools: [tavily_search, think_tool]
|
|
127
|
+
system_prompt_ref: RESEARCHER_INSTRUCTIONS
|
|
128
|
+
|
|
129
|
+
2) List style (legacy):
|
|
130
|
+
subagents:
|
|
131
|
+
- name: planner-agent
|
|
132
|
+
description: "..."
|
|
133
|
+
tools: [think_tool]
|
|
134
|
+
system_prompt: |
|
|
135
|
+
...
|
|
136
|
+
"""
|
|
137
|
+
prompt_refs = prompt_refs or {}
|
|
138
|
+
|
|
139
|
+
with config_path.open(encoding="utf-8") as f:
|
|
140
|
+
config = yaml.safe_load(f) or {}
|
|
141
|
+
|
|
142
|
+
if not isinstance(config, dict) or not config:
|
|
143
|
+
raise ValueError("subagent.yaml must be a mapping or contain 'subagents:'")
|
|
144
|
+
|
|
145
|
+
subagents: list[dict[str, Any]] = []
|
|
146
|
+
|
|
147
|
+
def _build_one(name: str, spec: dict[str, Any]) -> dict[str, Any]:
|
|
148
|
+
subagent: dict[str, Any] = {
|
|
149
|
+
"name": name,
|
|
150
|
+
"description": spec.get("description", ""),
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
if "system_prompt_ref" in spec:
|
|
154
|
+
ref = spec["system_prompt_ref"]
|
|
155
|
+
if ref not in prompt_refs:
|
|
156
|
+
raise ValueError(f"Unknown system_prompt_ref '{ref}' for subagent '{name}'")
|
|
157
|
+
subagent["system_prompt"] = prompt_refs[ref]
|
|
158
|
+
else:
|
|
159
|
+
subagent["system_prompt"] = spec.get("system_prompt", "")
|
|
160
|
+
|
|
161
|
+
if "model" in spec:
|
|
162
|
+
subagent["model"] = spec["model"]
|
|
163
|
+
|
|
164
|
+
if "tools" in spec:
|
|
165
|
+
subagent["tools"] = [tool_registry[t] for t in spec["tools"]]
|
|
166
|
+
|
|
167
|
+
return subagent
|
|
168
|
+
|
|
169
|
+
# Legacy list style
|
|
170
|
+
if "subagents" in config:
|
|
171
|
+
items = config.get("subagents")
|
|
172
|
+
if not isinstance(items, list) or not items:
|
|
173
|
+
raise ValueError("subagent.yaml must contain a non-empty 'subagents:' list")
|
|
174
|
+
for item in items:
|
|
175
|
+
if not isinstance(item, dict):
|
|
176
|
+
continue
|
|
177
|
+
name = item.get("name")
|
|
178
|
+
if not name:
|
|
179
|
+
raise ValueError("Each subagent entry must have a 'name'")
|
|
180
|
+
subagents.append(_build_one(name, item))
|
|
181
|
+
return subagents
|
|
182
|
+
|
|
183
|
+
# Mapping style: {<name>: <spec>}
|
|
184
|
+
for name, spec in config.items():
|
|
185
|
+
if not isinstance(spec, dict):
|
|
186
|
+
continue
|
|
187
|
+
subagents.append(_build_one(name, spec))
|
|
188
|
+
|
|
189
|
+
return subagents
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
def load_subagent(
|
|
193
|
+
config_path: Path,
|
|
194
|
+
name: str,
|
|
195
|
+
*,
|
|
196
|
+
tool_registry: dict[str, Any],
|
|
197
|
+
prompt_refs: dict[str, str] | None = None,
|
|
198
|
+
) -> dict[str, Any]:
|
|
199
|
+
"""Load a single sub-agent by name from YAML."""
|
|
200
|
+
for agent in load_subagents(
|
|
201
|
+
config_path,
|
|
202
|
+
tool_registry=tool_registry,
|
|
203
|
+
prompt_refs=prompt_refs,
|
|
204
|
+
):
|
|
205
|
+
if agent.get("name") == name:
|
|
206
|
+
return agent
|
|
207
|
+
raise KeyError(f"Sub-agent not found: {name}")
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: EvoScientist
|
|
3
|
+
Version: 0.0.1.dev1
|
|
4
|
+
Summary: EvoScientist: Towards Self-Evolving AI Scientists for End-to-End Scientific Discovery
|
|
5
|
+
Author: Xi Zhang
|
|
6
|
+
Maintainer: Xi Zhang
|
|
7
|
+
License-Expression: MIT
|
|
8
|
+
Project-URL: Homepage, https://github.com/EvoScientist/EvoScientist
|
|
9
|
+
Project-URL: Bug Tracker, https://github.com/EvoScientist/EvoScientist/issues
|
|
10
|
+
Project-URL: Documentation, https://github.com/EvoScientist/EvoScientist#readme
|
|
11
|
+
Keywords: ai-scientific,scientific-discovery,self-evolving,ai-scientists,end-to-end
|
|
12
|
+
Classifier: Programming Language :: Python :: 3
|
|
13
|
+
Requires-Python: >=3.11
|
|
14
|
+
Description-Content-Type: text/markdown
|
|
15
|
+
License-File: LICENSE
|
|
16
|
+
Requires-Dist: deepagents>=0.3.6
|
|
17
|
+
Requires-Dist: langchain>=1.2
|
|
18
|
+
Requires-Dist: langchain-anthropic>=1.3
|
|
19
|
+
Requires-Dist: anthropic>=0.76
|
|
20
|
+
Requires-Dist: tavily-python>=0.7
|
|
21
|
+
Requires-Dist: pyyaml>=6.0
|
|
22
|
+
Requires-Dist: rich>=14.0
|
|
23
|
+
Requires-Dist: prompt-toolkit>=3.0
|
|
24
|
+
Requires-Dist: python-dotenv>=1.0
|
|
25
|
+
Requires-Dist: langgraph-cli[inmem]>=0.4
|
|
26
|
+
Requires-Dist: httpx>=0.27
|
|
27
|
+
Requires-Dist: markdownify>=0.14
|
|
28
|
+
Provides-Extra: dev
|
|
29
|
+
Requires-Dist: pytest>=8.0; extra == "dev"
|
|
30
|
+
Requires-Dist: pytest-cov>=5.0; extra == "dev"
|
|
31
|
+
Dynamic: license-file
|
|
32
|
+
|
|
33
|
+
<!-- Add logo here -->
|
|
34
|
+
<h1 align="center">
|
|
35
|
+
<!-- <img src="./assets/CCD_icon_logo.png" alt="CCD Logo" height="27" style="position: relative; top: -2px;"/> -->
|
|
36
|
+
<strong>EvoScientist</strong>
|
|
37
|
+
</h1>
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
<div align="center">
|
|
41
|
+
|
|
42
|
+
<a href="https://git.io/typing-svg"><img src="https://readme-typing-svg.demolab.com?font=Fira+Code&pause=1000&width=435&lines=Towards+Self-Evolving+AI+Scientists+for+End-to-End+Scientific+Discovery" alt="Typing SVG" /></a>
|
|
43
|
+
|
|
44
|
+
[]()
|
|
45
|
+
[]()
|
|
46
|
+
[]()
|
|
47
|
+
[]()
|
|
48
|
+
[]()
|
|
49
|
+
|
|
50
|
+
</div>
|
|
51
|
+
|
|
52
|
+
## 🔥 News
|
|
53
|
+
> TODO
|
|
54
|
+
- **[27 Sep 2025]** ⛳ Our preprint is now live on [arXiv] — check it out for details.
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
## Overview
|
|
58
|
+
> TODO
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
## 📖 Contents
|
|
62
|
+
- [⛏️ Installation](#️-installation)
|
|
63
|
+
- [⚡ Quick Start](#-quick-start)
|
|
64
|
+
- [CLI Inference](#cli-inference)
|
|
65
|
+
- [Script Inference](#script-inference)
|
|
66
|
+
- [Web Interface](#web-interface)
|
|
67
|
+
- [📊 Evaluation](#-evaluation)
|
|
68
|
+
- [📝 Citation](#-citation)
|
|
69
|
+
- [📚 Acknowledgments](#-acknowledgments)
|
|
70
|
+
- [📦 Codebase Contributors](#-codebase-contributors)
|
|
71
|
+
- [📜 License](#-license)
|
|
72
|
+
|
|
73
|
+
## ⛏️ Installation
|
|
74
|
+
|
|
75
|
+
> [!TIP]
|
|
76
|
+
> Use [`uv`](https://pypi.org/project/uv) for installation — it's faster and more reliable than `pip`.
|
|
77
|
+
### For Development
|
|
78
|
+
|
|
79
|
+
```Shell
|
|
80
|
+
# Create and activate a conda environment
|
|
81
|
+
conda create -n EvoSci python=3.11 -y
|
|
82
|
+
conda activate EvoSci
|
|
83
|
+
|
|
84
|
+
# Install in development (editable) mode
|
|
85
|
+
pip install EvoScientist
|
|
86
|
+
# or
|
|
87
|
+
pip install -e .
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### Option 1:
|
|
91
|
+
Install the latest version directly from GitHub for quick setup:
|
|
92
|
+
> TODO
|
|
93
|
+
### Option 2:
|
|
94
|
+
If you plan to modify the code or contribute to the project, you can clone the repository and install it in editable mode:
|
|
95
|
+
|
|
96
|
+
> TODO
|
|
97
|
+
|
|
98
|
+
<details>
|
|
99
|
+
<summary> 🔄 Upgrade to the latest code base </summary>
|
|
100
|
+
|
|
101
|
+
```Shell
|
|
102
|
+
git pull
|
|
103
|
+
uv pip install -e .
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
</details>
|
|
107
|
+
|
|
108
|
+
## ⚡ Quick Start
|
|
109
|
+
|
|
110
|
+
### CLI Inference
|
|
111
|
+
You can perform inference directly from the command line using our CLI tool:
|
|
112
|
+
|
|
113
|
+

|
|
114
|
+
|
|
115
|
+
```Shell
|
|
116
|
+
python -m EvoScientist
|
|
117
|
+
```
|
|
118
|
+
**Optional arguments:**
|
|
119
|
+
|
|
120
|
+
> TODO
|
|
121
|
+
|
|
122
|
+
### Script Inference
|
|
123
|
+
```python
|
|
124
|
+
from EvoScientist import EvoScientist_agent
|
|
125
|
+
from langchain_core.messages import HumanMessage
|
|
126
|
+
from EvoScientist.utils import format_messages
|
|
127
|
+
|
|
128
|
+
thread = {"configurable": {"thread_id": "1"}}
|
|
129
|
+
question = "Hi?"
|
|
130
|
+
last_len = 0
|
|
131
|
+
|
|
132
|
+
for state in EvoScientist_agent.stream(
|
|
133
|
+
{"messages": [HumanMessage(content=question)]},
|
|
134
|
+
config=thread,
|
|
135
|
+
stream_mode="values",
|
|
136
|
+
):
|
|
137
|
+
msgs = state["messages"]
|
|
138
|
+
if len(msgs) > last_len:
|
|
139
|
+
format_messages(msgs[last_len:])
|
|
140
|
+
last_len = len(msgs)
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
<details>
|
|
144
|
+
<summary> Output </summary>
|
|
145
|
+
|
|
146
|
+
```json
|
|
147
|
+
|
|
148
|
+
╭─────────────────────────────────────────────────── 🧑 Human ────────────────────────────────────────────────────╮
|
|
149
|
+
│ Hi? │
|
|
150
|
+
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
|
|
151
|
+
╭───────────────────────────────────────────────────── 📝 AI ─────────────────────────────────────────────────────╮
|
|
152
|
+
│ Hi! I'm here to help you with experimental research tasks. I can assist with: │
|
|
153
|
+
│ │
|
|
154
|
+
│ - **Planning experiments** - designing stages, success criteria, and workflows │
|
|
155
|
+
│ - **Running experiments** - implementing baselines, training models, analyzing results │
|
|
156
|
+
│ - **Research** - finding papers, methods, datasets, and baselines │
|
|
157
|
+
│ - **Analysis** - computing metrics, creating visualizations, interpreting results │
|
|
158
|
+
│ - **Writing** - drafting experimental reports and documentation │
|
|
159
|
+
│ │
|
|
160
|
+
│ What would you like to work on today? │
|
|
161
|
+
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
</details>
|
|
165
|
+
|
|
166
|
+
### Web Interface
|
|
167
|
+
|
|
168
|
+
> TODO
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
## 📊 Evaluation
|
|
172
|
+
|
|
173
|
+
> TODO
|
|
174
|
+
|
|
175
|
+
## 📝 Citation
|
|
176
|
+
|
|
177
|
+
If you find our paper and code useful in your research and applications, please cite using this BibTeX:
|
|
178
|
+
|
|
179
|
+
> TODO
|
|
180
|
+
|
|
181
|
+
## 📚 Acknowledgments
|
|
182
|
+
|
|
183
|
+
This project builds upon the following outstanding open-source works:
|
|
184
|
+
|
|
185
|
+
- [**Deep Agents**](https://github.com/langchain-ai/deepagents) — A framework for building AI agents that can interact with various tools and environments.
|
|
186
|
+
- [**Deep Agents UI**](https://github.com/langchain-ai/deep-agents-ui) — A user interface for visualising and managing Deep Agents.
|
|
187
|
+
|
|
188
|
+
We thank the authors for their valuable contributions to the open-source community.
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
## 📦 Codebase Contributors
|
|
192
|
+
|
|
193
|
+
<table>
|
|
194
|
+
<tbody>
|
|
195
|
+
<tr>
|
|
196
|
+
<td align="center">
|
|
197
|
+
<a href="https://youganglyu.github.io/">
|
|
198
|
+
<img src="https://youganglyu.github.io/images/profile.png"
|
|
199
|
+
width="100" height="100"
|
|
200
|
+
style="object-fit: cover; border-radius: 20%;" alt="Yougang Lyu"/>
|
|
201
|
+
<br />
|
|
202
|
+
<sub><b>Yougang Lyu</b></sub>
|
|
203
|
+
</a>
|
|
204
|
+
</td>
|
|
205
|
+
<td align="center">
|
|
206
|
+
<a href="https://x-izhang.github.io/">
|
|
207
|
+
<img src="https://x-izhang.github.io/author/xi-zhang/avatar_hu13660783057866068725.jpg"
|
|
208
|
+
width="100" height="100"
|
|
209
|
+
style="object-fit: cover; border-radius: 20%;" alt="Xi Zhang"/>
|
|
210
|
+
<br />
|
|
211
|
+
<sub><b>Xi Zhang</b></sub>
|
|
212
|
+
</a>
|
|
213
|
+
</td>
|
|
214
|
+
</tr>
|
|
215
|
+
</tbody>
|
|
216
|
+
</table>
|
|
217
|
+
|
|
218
|
+
For any enquiries or collaboration opportunities, please contact: [**youganglyu@gmail.com**](mailto:youganglyu@gmail.com)
|
|
219
|
+
|
|
220
|
+
## 📜 License
|
|
221
|
+
|
|
222
|
+
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
EvoScientist/EvoScientist.py,sha256=k7iMQUDR6AB37k8z6n84hRQunLbWAwr43e8VJhG-hpI,4806
|
|
2
|
+
EvoScientist/__init__.py,sha256=yj4YJUPldtq4xx8geadIoZ1n-BmgsM2Z_S2W8ld9S1k,702
|
|
3
|
+
EvoScientist/__main__.py,sha256=P5USQ_BiiY0TBhtajGMuX5AMXlQ5joz1kvljHeacqmA,91
|
|
4
|
+
EvoScientist/backends.py,sha256=3fIYRdOecL-KZx2hSNolsLO-2_rMzey-NpVMDMN701U,13355
|
|
5
|
+
EvoScientist/cli.py,sha256=-7iL6NUjW5CmLKx1BLd0d-Y2DtcXPcoMOCdOgA6X-_E,59946
|
|
6
|
+
EvoScientist/middleware.py,sha256=xHpqmru32osSBeQ43ZCn-8obgnheWekaTgE3TGa_1nQ,1044
|
|
7
|
+
EvoScientist/prompts.py,sha256=ni-qHoEoM703xtfD4J3IlvwAWPcW8gcNiCBVjRJoy3g,10692
|
|
8
|
+
EvoScientist/subagent.yaml,sha256=yoFlMJWitLlYuOe4_44EPG6vjpNP_txHBlqr-kNX2GM,6130
|
|
9
|
+
EvoScientist/tools.py,sha256=oYaJN8tl_NCw6PLFFNRZbjPB9-VriVcpVb6Zp-d_xVQ,4223
|
|
10
|
+
EvoScientist/utils.py,sha256=GuWMRMkPHYgUOtoPZA0ErIt4FUBE4NMkz_OZluxYyRo,6801
|
|
11
|
+
EvoScientist/skills/accelerate/SKILL.md,sha256=Ju_xLlGW3bZBWQO_8FWThkP155jE2atq9Ww0Zn8XwEs,8328
|
|
12
|
+
EvoScientist/skills/accelerate/references/custom-plugins.md,sha256=Gy8c9dcKFV93ksrRKkZr5DFbeH_iHgGzbTK_N0aTwCA,11781
|
|
13
|
+
EvoScientist/skills/accelerate/references/megatron-integration.md,sha256=ad7cw8eMGX3vqGUxQSVBuWpiQJDAr9eHqWfPhlEXJz0,11252
|
|
14
|
+
EvoScientist/skills/accelerate/references/performance.md,sha256=VZ6gUcI3c9OnInYQAYQpoOEuSXlZSabprfqRswUYKjc,12569
|
|
15
|
+
EvoScientist/skills/bitsandbytes/SKILL.md,sha256=3VM2RakwcfyTM6Yul6MwgDnUqHPV-3FbTPa8-LpGo74,10108
|
|
16
|
+
EvoScientist/skills/bitsandbytes/references/memory-optimization.md,sha256=a8y1Mt5qkEeFylaRRPuGSKGnBXIL2JT6xFDdW-qBBWc,12642
|
|
17
|
+
EvoScientist/skills/bitsandbytes/references/qlora-training.md,sha256=E2Nrxy-_gLz6nEgA30MQ_RQ4mdRX3w-aJO7f16RJriQ,12015
|
|
18
|
+
EvoScientist/skills/bitsandbytes/references/quantization-formats.md,sha256=U1nvDKjlg305DaYvlyJW2SS5NMNVI2XHD__m1YEErH4,10258
|
|
19
|
+
EvoScientist/skills/find-skills/SKILL.md,sha256=fvjNEIEVsOauW_LuEKshYkbvd19pRdVV-rXcQqfFeKo,4169
|
|
20
|
+
EvoScientist/skills/find-skills/scripts/install_skill.py,sha256=sbLrZeY887LeiKcvA7f3AuxJI98PwGeAVyttVXxs_eA,6332
|
|
21
|
+
EvoScientist/skills/flash-attention/SKILL.md,sha256=3GL1xP6jFkjZhs9ZcE-61FbkB5d4p7NvVXm9MvxTG58,10190
|
|
22
|
+
EvoScientist/skills/flash-attention/references/benchmarks.md,sha256=Jk_zBgr4JMMvem48DgIIw4ZGxyiyKS-zXt6SOjjWC2s,7129
|
|
23
|
+
EvoScientist/skills/flash-attention/references/transformers-integration.md,sha256=ievo4gdW7iGBA6EUTUaC6WCg-qB4cMJYhTC8jSbEQaE,7427
|
|
24
|
+
EvoScientist/skills/llama-cpp/SKILL.md,sha256=10yqRUg_Wzxr1iZ-ObREYnmJ_5D9uEtsLnw9pN3xQ-8,5912
|
|
25
|
+
EvoScientist/skills/llama-cpp/references/optimization.md,sha256=TomBHAgn9eud65_GCc1EHrGX-w-oXnndjB8nKxSmaf0,1659
|
|
26
|
+
EvoScientist/skills/llama-cpp/references/quantization.md,sha256=x2hqhok9Tg4FLMczti6hvA5dro8bF0Q2zCk6RqSGiT0,4956
|
|
27
|
+
EvoScientist/skills/llama-cpp/references/server.md,sha256=GBqErhd_MFIFzDDQUwX8QjeqJV8__ykpk2LLHgy222Q,2259
|
|
28
|
+
EvoScientist/skills/lm-evaluation-harness/SKILL.md,sha256=PO6Ky_6Pkd0I8MAK0WeV4YTtWdWCD0rRSbCFbEhB63Q,11893
|
|
29
|
+
EvoScientist/skills/lm-evaluation-harness/references/api-evaluation.md,sha256=QzNy2EuLvWwo5blxwarnxdLQMqrp_yPdfXpHpRJ33Hg,11114
|
|
30
|
+
EvoScientist/skills/lm-evaluation-harness/references/benchmark-guide.md,sha256=bz5tr3jO4hRTzrwcRojuEm-_DUVmeCSW3VhB3Waa4pU,10769
|
|
31
|
+
EvoScientist/skills/lm-evaluation-harness/references/custom-tasks.md,sha256=xrVZHHfBZXC0P6X0l0BaZfNe9z0XAqOHHMDIolfHaus,13125
|
|
32
|
+
EvoScientist/skills/lm-evaluation-harness/references/distributed-eval.md,sha256=PdxFUfJc4NPLCflx8nGRMx-2W1tMiC79Spvee9-4I1M,11426
|
|
33
|
+
EvoScientist/skills/ml-paper-writing/SKILL.md,sha256=f6mlckj8UCXM9AjZ7Cgyn7r3FPF6S-K5n-3rV8RxvNk,35573
|
|
34
|
+
EvoScientist/skills/ml-paper-writing/references/checklists.md,sha256=Azqosw47finMHIK-GFdkNRSNVzC8KArPWRrU7_-yXqA,10774
|
|
35
|
+
EvoScientist/skills/ml-paper-writing/references/citation-workflow.md,sha256=Bno7AtqotNDzI45k009HG7NZuW513c6PqWKq9eQx5-0,15167
|
|
36
|
+
EvoScientist/skills/ml-paper-writing/references/reviewer-guidelines.md,sha256=PHC-X7hWi2SZGqeLYc9H02EQgnxILiSSvn_fu4OKEOA,10451
|
|
37
|
+
EvoScientist/skills/ml-paper-writing/references/sources.md,sha256=e68aVk_r_SRnezFs9HPs3w3IbSjgsc23e3ogvdDqCqY,7310
|
|
38
|
+
EvoScientist/skills/ml-paper-writing/references/writing-guide.md,sha256=7V_2lgoEvThbaihXeiZCgFbjWSAAGxkWJApOtWP1Rwk,16297
|
|
39
|
+
EvoScientist/skills/ml-paper-writing/templates/README.md,sha256=5l3BoiyxUNoSTb1N-wjsOktol4Q2kYqIDoWB1vdOOeU,6707
|
|
40
|
+
EvoScientist/skills/ml-paper-writing/templates/aaai2026/README.md,sha256=7ixhqLBuFHHA33x3QHTS_xvoJOY3ep449q3KXGjdu2A,17987
|
|
41
|
+
EvoScientist/skills/ml-paper-writing/templates/aaai2026/aaai2026-unified-supp.tex,sha256=Na3P9BnvwloDIUDFINQFINDQ_GkSPp2OOK0WHECtB7c,4548
|
|
42
|
+
EvoScientist/skills/ml-paper-writing/templates/aaai2026/aaai2026-unified-template.tex,sha256=vtEsULXgJ_2ICX0jjsTn6_Gue0UMsG1t98iuEmpiCuo,63140
|
|
43
|
+
EvoScientist/skills/ml-paper-writing/templates/aaai2026/aaai2026.bib,sha256=2Pzz3Am51Imu_xNjEXTFmYpIyw0IAKyKAKL3vbxAKVs,4766
|
|
44
|
+
EvoScientist/skills/ml-paper-writing/templates/aaai2026/aaai2026.bst,sha256=rCbixmBHQ1wO0l8hrjatQtcxzz15TEqLXwWmIUGicpQ,30207
|
|
45
|
+
EvoScientist/skills/ml-paper-writing/templates/aaai2026/aaai2026.sty,sha256=o58YZqBN0eJgNhPIdvpEaq6iwvPjTQK-ho_SFSC_reU,11802
|
|
46
|
+
EvoScientist/skills/ml-paper-writing/templates/acl/README.md,sha256=5VYI-bwLVk9Y2GTUMZdUd4XvAhw-wcXwptIFeqYVaB4,2126
|
|
47
|
+
EvoScientist/skills/ml-paper-writing/templates/acl/acl.sty,sha256=Gd_t3CwORI85JqC-8Eip2z82EbRiZbdgyqvXraTzYd4,11615
|
|
48
|
+
EvoScientist/skills/ml-paper-writing/templates/acl/acl_latex.tex,sha256=M5ye6XBcF2fUTvJLhTZcC7hhnsw_z2YXK_E1YpI4lhQ,14533
|
|
49
|
+
EvoScientist/skills/ml-paper-writing/templates/acl/acl_lualatex.tex,sha256=DZmHuoMzMamW-avNGgPuu6fXrjMRRXk-fdtrWujbJ7M,3050
|
|
50
|
+
EvoScientist/skills/ml-paper-writing/templates/acl/acl_natbib.bst,sha256=4zL9UdzqSOKoqJdUiSw8uZZ0oc1wtSe2Yemq_8I16Dw,45186
|
|
51
|
+
EvoScientist/skills/ml-paper-writing/templates/acl/anthology.bib.txt,sha256=K3jS2a7aYuFMTkYJnoIltfwRY4fY4KVKrXdkheJJzv8,1169
|
|
52
|
+
EvoScientist/skills/ml-paper-writing/templates/acl/custom.bib,sha256=12zLMN3OtwyeGtC-P0Pf4wGtV2Wqsslg_IMO9nv4Iyo,2071
|
|
53
|
+
EvoScientist/skills/ml-paper-writing/templates/acl/formatting.md,sha256=ngBKE2xd1DMA2X5b716zp30OKi01AvDyQ27AEdHEnpw,17923
|
|
54
|
+
EvoScientist/skills/ml-paper-writing/templates/colm2025/README.md,sha256=fCxYXVZUgjV9_99Jm1Z5KeB6nwlhlgjBnOnrKYRpfqE,51
|
|
55
|
+
EvoScientist/skills/ml-paper-writing/templates/colm2025/colm2025_conference.bib,sha256=xfq_Rsx9em5Se4KGC5qdZY6wf2Orqvqbe-tjHYq7kb0,496
|
|
56
|
+
EvoScientist/skills/ml-paper-writing/templates/colm2025/colm2025_conference.bst,sha256=LWdVLbftOMz8y1lXtS-VZW4lwklyR2HTz195Iq0YRMU,26973
|
|
57
|
+
EvoScientist/skills/ml-paper-writing/templates/colm2025/colm2025_conference.pdf,sha256=2LPXS8ga7Jup1rc5tJIq3JOuAC18glIrnGBkAUvsHRY,122635
|
|
58
|
+
EvoScientist/skills/ml-paper-writing/templates/colm2025/colm2025_conference.sty,sha256=ed-LKhsULfsySgp-h_q82dXcKjRwDhxsCDqbu55dqo4,7727
|
|
59
|
+
EvoScientist/skills/ml-paper-writing/templates/colm2025/colm2025_conference.tex,sha256=uvAc0FbM0bNRZdGQAZQUlGIX3haD-K493GaxHjxlPbw,12830
|
|
60
|
+
EvoScientist/skills/ml-paper-writing/templates/colm2025/fancyhdr.sty,sha256=tW7EQ0ufRgdSmksj3GitjUuU8fYxyM3a99p4FA1Tpeo,20521
|
|
61
|
+
EvoScientist/skills/ml-paper-writing/templates/colm2025/math_commands.tex,sha256=kEc8TQVCBw2yRM6nPvli1s3cWyp0Z1fmpA3fX9-5C6k,12284
|
|
62
|
+
EvoScientist/skills/ml-paper-writing/templates/colm2025/natbib.sty,sha256=iLxwwOSEYZNMq1sqzO8Gt0qLOsRa0DzNPyprfg1tUw0,45154
|
|
63
|
+
EvoScientist/skills/ml-paper-writing/templates/iclr2026/fancyhdr.sty,sha256=tW7EQ0ufRgdSmksj3GitjUuU8fYxyM3a99p4FA1Tpeo,20521
|
|
64
|
+
EvoScientist/skills/ml-paper-writing/templates/iclr2026/iclr2026_conference.bib,sha256=zdhufUwxhU3PIUWHFlfJRFiKbUTDty4WD_S6qN8aUvs,629
|
|
65
|
+
EvoScientist/skills/ml-paper-writing/templates/iclr2026/iclr2026_conference.bst,sha256=LWdVLbftOMz8y1lXtS-VZW4lwklyR2HTz195Iq0YRMU,26973
|
|
66
|
+
EvoScientist/skills/ml-paper-writing/templates/iclr2026/iclr2026_conference.pdf,sha256=yz1BTPpHAtUt6U3hyBI8NLLPRrelUQ30ncwQFKbCZs8,200508
|
|
67
|
+
EvoScientist/skills/ml-paper-writing/templates/iclr2026/iclr2026_conference.sty,sha256=pIUvaOCA1sUkUFfKIDkQC0CeMXJ4mKqTwD143bhDdKM,9025
|
|
68
|
+
EvoScientist/skills/ml-paper-writing/templates/iclr2026/iclr2026_conference.tex,sha256=lBtY3m5S9VON4Ov-LSBCWnnhdoyycdRTt0NpBLUVmFk,16899
|
|
69
|
+
EvoScientist/skills/ml-paper-writing/templates/iclr2026/math_commands.tex,sha256=kEc8TQVCBw2yRM6nPvli1s3cWyp0Z1fmpA3fX9-5C6k,12284
|
|
70
|
+
EvoScientist/skills/ml-paper-writing/templates/iclr2026/natbib.sty,sha256=iLxwwOSEYZNMq1sqzO8Gt0qLOsRa0DzNPyprfg1tUw0,45154
|
|
71
|
+
EvoScientist/skills/ml-paper-writing/templates/icml2026/algorithm.sty,sha256=k_0OsxwRLrQFgz248df10jjH5pGxwFaA1yduaPNtVko,2223
|
|
72
|
+
EvoScientist/skills/ml-paper-writing/templates/icml2026/algorithmic.sty,sha256=SNGHlKXZfAR5pYjMLqwJF5kv652oOsxGMbj1V1fYD5s,7414
|
|
73
|
+
EvoScientist/skills/ml-paper-writing/templates/icml2026/example_paper.bib,sha256=35UBA9OPnPyBsfQNhMm-KjUl0EbSmRppc6REaSLAa9E,2051
|
|
74
|
+
EvoScientist/skills/ml-paper-writing/templates/icml2026/example_paper.pdf,sha256=Po_g6VLehwLKRpfboJylLoO9ZJdnuSqDQNNKWRyqTRs,193509
|
|
75
|
+
EvoScientist/skills/ml-paper-writing/templates/icml2026/example_paper.tex,sha256=wsqBQL8lXR_3fRJ46z7v7UAYtLHnEGW44cy8aLdMis8,29714
|
|
76
|
+
EvoScientist/skills/ml-paper-writing/templates/icml2026/fancyhdr.sty,sha256=kTDFL5EIerxtIjFk_6WH4gfjJX_LzQae8J7LU5EEPxQ,31715
|
|
77
|
+
EvoScientist/skills/ml-paper-writing/templates/icml2026/icml2026.bst,sha256=DsPV65sC77fgtEoy83dYgvQqdD0L3GGPNOaTYwm5h2Q,27147
|
|
78
|
+
EvoScientist/skills/ml-paper-writing/templates/icml2026/icml2026.sty,sha256=fNz5D2pZxSGefxXIj37Qn8r1mNrZHmzd3E3Dyw45epU,27344
|
|
79
|
+
EvoScientist/skills/ml-paper-writing/templates/icml2026/icml_numpapers.pdf,sha256=006NqYIpY2NieZbm4YhQwR-9YW5pRgYSNwUeeo9wgLs,2823
|
|
80
|
+
EvoScientist/skills/ml-paper-writing/templates/neurips2025/Makefile,sha256=CYNCXXTnafJFf2_wZUz3b8DJX40Vj8jq7GbFaXugWU8,1054
|
|
81
|
+
EvoScientist/skills/ml-paper-writing/templates/neurips2025/extra_pkgs.tex,sha256=_NawkVb6GTw0f2rNgYjUMPoo92n7biwlFMu9IVw5AUo,2837
|
|
82
|
+
EvoScientist/skills/ml-paper-writing/templates/neurips2025/main.tex,sha256=NmwJP7wwGMRt4o8_4OywY7SroQoImv4DeDe79nOpxNY,574
|
|
83
|
+
EvoScientist/skills/ml-paper-writing/templates/neurips2025/neurips.sty,sha256=73pV8KfJ2hL-o5r3mQpqMUpyG3SiOxVE8lLlX8upQM0,11625
|
|
84
|
+
EvoScientist/skills/peft/SKILL.md,sha256=5QUOUtNXQaGPRP3bIMEJ1FZ6mWslSPD59-wrxiE0pnI,12198
|
|
85
|
+
EvoScientist/skills/peft/references/advanced-usage.md,sha256=hmPPda-i4QSIMvaAyFlLJwnAIFYDEzq16BVhaXyEdlk,12541
|
|
86
|
+
EvoScientist/skills/peft/references/troubleshooting.md,sha256=BmRb5Zua0EYeg3_OWhsKcSGxmhNTY1wE_fnfWhNXhzg,10344
|
|
87
|
+
EvoScientist/skills/ray-data/SKILL.md,sha256=vMc7M0HcoYxZytCSy23tt6wL8L3oBGegOZIawMAiVsM,7328
|
|
88
|
+
EvoScientist/skills/ray-data/references/integration.md,sha256=0YLgJbA5Z3lELxa2RhwL8UCjN2NQUc-4RyaYoY9Amco,1851
|
|
89
|
+
EvoScientist/skills/ray-data/references/transformations.md,sha256=r8Aa3lO8ld5t7G3mFLUsb5LrSgsUF0DZN7XdGFXeOA0,1664
|
|
90
|
+
EvoScientist/skills/skill-creator/LICENSE.txt,sha256=WNHhf_5RCaeuKWyq_K39vmp9F28LxKsB4SpomwSZ2L0,11357
|
|
91
|
+
EvoScientist/skills/skill-creator/SKILL.md,sha256=suPYP2BCXC0LnUFi77j5qjIrRYQ0lzQPIon0K-QigBw,17837
|
|
92
|
+
EvoScientist/skills/skill-creator/references/output-patterns.md,sha256=1gJ4ALnYwmWJ7bqFtCkBpBrDbXU7Tpzrx_TLsDzc8KQ,1813
|
|
93
|
+
EvoScientist/skills/skill-creator/references/workflows.md,sha256=70hGh31dq0dRGgGmzzFHatZPW8WUVjVFkpV5RXUziYA,818
|
|
94
|
+
EvoScientist/skills/skill-creator/scripts/init_skill.py,sha256=C7olC5TKpMsrKLFdrSb9zzca7aTJeXuBIOVcLjPgxzw,10863
|
|
95
|
+
EvoScientist/skills/skill-creator/scripts/package_skill.py,sha256=sx-8s-Ni1cUwjpklX_joPN46UT4GNpU5ZKZISUyhCTE,3288
|
|
96
|
+
EvoScientist/skills/skill-creator/scripts/quick_validate.py,sha256=OBqy09H9XsMjcQFkEwY-_5nQ1IxBV0cIXGFRfpZ9u4c,3523
|
|
97
|
+
EvoScientist/stream/__init__.py,sha256=cO30Ujs7mVB1pZjI0AXgaggmPeV6jXgBjt6AKYH42kQ,1219
|
|
98
|
+
EvoScientist/stream/emitter.py,sha256=zmdn8vIXNgkgoWRtanrMtPN2GlsHmZtdFmoqCry3o_o,2978
|
|
99
|
+
EvoScientist/stream/formatter.py,sha256=vyv89NGoTzxjsWt0teBXX38MZzFLhzMDBUcIH6-slDo,5532
|
|
100
|
+
EvoScientist/stream/tracker.py,sha256=cVWmiTCiwzOh84I7sAXXfgr_HXxOCCCzTvli-XJhthQ,3670
|
|
101
|
+
EvoScientist/stream/utils.py,sha256=36e5aaEZVpwTZnqO1qlVs2QTr04JbmWuvHMSbor49xM,7278
|
|
102
|
+
evoscientist-0.0.1.dev1.dist-info/licenses/LICENSE,sha256=NsYFy5JSm90lmXcPNQuthVTCVaVcbT4XZ9h5HpAoGIo,1069
|
|
103
|
+
evoscientist-0.0.1.dev1.dist-info/METADATA,sha256=I2RA4m5-rR_eu_h_hwkJJHe3EAg5DCP2y9FxpysI4DQ,8583
|
|
104
|
+
evoscientist-0.0.1.dev1.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
105
|
+
evoscientist-0.0.1.dev1.dist-info/entry_points.txt,sha256=AQTfRSD-9-fgD1ViOdbGcvhsNeaUNgvmNqLkNY7o7Zw,55
|
|
106
|
+
evoscientist-0.0.1.dev1.dist-info/top_level.txt,sha256=XBZouSd9lQfNn0Fus6jQb9nqdXzAbKyzh987Jt3A2-A,13
|
|
107
|
+
evoscientist-0.0.1.dev1.dist-info/RECORD,,
|