aurelian 0.3.4__py3-none-any.whl → 0.4.2__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.
- aurelian/agents/biblio/biblio_agent.py +1 -0
- aurelian/agents/checklist/checklist_agent.py +1 -0
- aurelian/agents/chemistry/chemistry_agent.py +2 -1
- aurelian/agents/d4d/__init__.py +2 -2
- aurelian/agents/d4d/d4d_agent.py +4 -3
- aurelian/agents/d4d/d4d_gradio.py +2 -2
- aurelian/agents/diagnosis/diagnosis_agent.py +1 -0
- aurelian/agents/gocam/__init__.py +10 -1
- aurelian/agents/gocam/gocam_agent.py +3 -0
- aurelian/agents/gocam/gocam_evals.py +0 -3
- aurelian/agents/linkml/linkml_mcp.py +1 -6
- aurelian/agents/literature/literature_agent.py +20 -0
- aurelian/agents/monarch/__init__.py +0 -25
- aurelian/agents/monarch/monarch_agent.py +1 -0
- aurelian/agents/monarch/monarch_tools.py +0 -1
- aurelian/agents/ontology_mapper/ontology_mapper_agent.py +1 -0
- aurelian/agents/paperqa/paperqa_agent.py +1 -0
- aurelian/agents/rag/rag_agent.py +1 -0
- aurelian/agents/talisman/talisman_mcp.py +50 -143
- aurelian/agents/ubergraph/ubergraph_agent.py +1 -0
- aurelian/agents/ubergraph/ubergraph_tools.py +18 -6
- aurelian/agents/uniprot/__init__.py +0 -37
- aurelian/agents/web/web_tools.py +16 -3
- aurelian/cli.py +9 -0
- aurelian/evaluators/model.py +9 -0
- aurelian/evaluators/substring_evaluator.py +30 -0
- aurelian/utils/async_utils.py +6 -3
- {aurelian-0.3.4.dist-info → aurelian-0.4.2.dist-info}/METADATA +6 -4
- {aurelian-0.3.4.dist-info → aurelian-0.4.2.dist-info}/RECORD +32 -30
- aurelian-0.4.2.dist-info/entry_points.txt +4 -0
- aurelian-0.3.4.dist-info/entry_points.txt +0 -3
- {aurelian-0.3.4.dist-info → aurelian-0.4.2.dist-info}/LICENSE +0 -0
- {aurelian-0.3.4.dist-info → aurelian-0.4.2.dist-info}/WHEEL +0 -0
aurelian/agents/d4d/__init__.py
CHANGED
@@ -3,7 +3,7 @@ D4D (Datasheets for Datasets) agent package for extracting dataset metadata.
|
|
3
3
|
"""
|
4
4
|
|
5
5
|
# isort: skip_file
|
6
|
-
from .d4d_agent import
|
6
|
+
from .d4d_agent import d4d_agent # noqa: E402
|
7
7
|
from .d4d_config import D4DConfig, get_config # noqa: E402
|
8
8
|
from .d4d_gradio import chat # noqa: E402
|
9
9
|
from .d4d_tools import ( # noqa: E402
|
@@ -14,7 +14,7 @@ from .d4d_tools import ( # noqa: E402
|
|
14
14
|
|
15
15
|
__all__ = [
|
16
16
|
# Agent
|
17
|
-
"
|
17
|
+
"d4d_agent",
|
18
18
|
|
19
19
|
# Config
|
20
20
|
"D4DConfig",
|
aurelian/agents/d4d/d4d_agent.py
CHANGED
@@ -8,7 +8,7 @@ from .d4d_tools import get_full_schema, process_website_or_pdf
|
|
8
8
|
|
9
9
|
|
10
10
|
# Create the agent, the full schema will be loaded when needed
|
11
|
-
|
11
|
+
d4d_agent = Agent(
|
12
12
|
model="openai:gpt-4o",
|
13
13
|
deps_type=D4DConfig,
|
14
14
|
system_prompt="""
|
@@ -21,10 +21,11 @@ content, extract all the relevant metadata, and output a YAML document that exac
|
|
21
21
|
conforms to the above schema. The output must be valid YAML with all required fields
|
22
22
|
filled in, following the schema exactly.
|
23
23
|
""",
|
24
|
+
defer_model_check=True,
|
24
25
|
)
|
25
26
|
|
26
27
|
|
27
|
-
@
|
28
|
+
@d4d_agent.system_prompt
|
28
29
|
async def add_schema(ctx: RunContext[D4DConfig]) -> str:
|
29
30
|
"""
|
30
31
|
Add the full schema to the system prompt.
|
@@ -39,7 +40,7 @@ async def add_schema(ctx: RunContext[D4DConfig]) -> str:
|
|
39
40
|
return schema
|
40
41
|
|
41
42
|
|
42
|
-
@
|
43
|
+
@d4d_agent.tool
|
43
44
|
async def extract_metadata(ctx: RunContext[D4DConfig], url: str) -> str:
|
44
45
|
"""
|
45
46
|
Extract metadata from a dataset description document or webpage.
|
@@ -5,7 +5,7 @@ from typing import List, Optional
|
|
5
5
|
|
6
6
|
import gradio as gr
|
7
7
|
|
8
|
-
from .d4d_agent import
|
8
|
+
from .d4d_agent import d4d_agent
|
9
9
|
from .d4d_config import D4DConfig, get_config
|
10
10
|
|
11
11
|
|
@@ -22,7 +22,7 @@ async def process_url(url: str, history: List[str], config: D4DConfig) -> str:
|
|
22
22
|
YAML formatted metadata
|
23
23
|
"""
|
24
24
|
# Run the agent with the URL
|
25
|
-
result = await
|
25
|
+
result = await d4d_agent.run(url, deps=config)
|
26
26
|
return result.data
|
27
27
|
|
28
28
|
|
@@ -3,11 +3,13 @@ GOCAM agent module for working with Gene Ontology Causal Activity Models.
|
|
3
3
|
"""
|
4
4
|
from pathlib import Path
|
5
5
|
|
6
|
+
from ...evaluators.substring_evaluator import SubstringEvaluator
|
7
|
+
|
6
8
|
THIS_DIR = Path(__file__).parent
|
7
9
|
DOCUMENTS_DIR = THIS_DIR / "documents"
|
8
10
|
|
9
11
|
# isort: skip_file
|
10
|
-
from .gocam_agent import gocam_agent # noqa: E402
|
12
|
+
from .gocam_agent import gocam_agent, gocam_reviewer_agent, gocam_review_summarizer_agent # noqa: E402
|
11
13
|
from .gocam_config import GOCAMDependencies, get_config # noqa: E402
|
12
14
|
from .gocam_gradio import chat # noqa: E402
|
13
15
|
from .gocam_tools import ( # noqa: E402
|
@@ -18,6 +20,7 @@ from .gocam_tools import ( # noqa: E402
|
|
18
20
|
fetch_document,
|
19
21
|
validate_gocam_model,
|
20
22
|
)
|
23
|
+
from .gocam_evals import create_eval_dataset # noqa: E402
|
21
24
|
|
22
25
|
__all__ = [
|
23
26
|
# Constants
|
@@ -26,6 +29,8 @@ __all__ = [
|
|
26
29
|
|
27
30
|
# Agent
|
28
31
|
"gocam_agent",
|
32
|
+
"gocam_reviewer_agent",
|
33
|
+
"gocam_review_summarizer_agent",
|
29
34
|
# Config
|
30
35
|
"GOCAMDependencies",
|
31
36
|
"get_config",
|
@@ -40,4 +45,8 @@ __all__ = [
|
|
40
45
|
|
41
46
|
# Gradio
|
42
47
|
"chat",
|
48
|
+
|
49
|
+
# Evals
|
50
|
+
"create_eval_dataset",
|
51
|
+
"SubstringEvaluator",
|
43
52
|
]
|
@@ -135,6 +135,7 @@ gocam_agent = Agent(
|
|
135
135
|
deps_type=GOCAMDependencies,
|
136
136
|
system_prompt=SYSTEM,
|
137
137
|
tools=core_tools,
|
138
|
+
defer_model_check=True,
|
138
139
|
)
|
139
140
|
|
140
141
|
def get_documents_for_prompt() -> str:
|
@@ -208,6 +209,7 @@ gocam_reviewer_agent = Agent(
|
|
208
209
|
Tool(lookup_gocam_local),
|
209
210
|
#Tool(validate_gocam_model),
|
210
211
|
],
|
212
|
+
defer_model_check=True,
|
211
213
|
)
|
212
214
|
|
213
215
|
|
@@ -237,4 +239,5 @@ gocam_review_summarizer_agent = Agent(
|
|
237
239
|
#Tool(lookup_gocam_local),
|
238
240
|
],
|
239
241
|
result_type=GOCamReviewSummary,
|
242
|
+
defer_model_check=True,
|
240
243
|
)
|
@@ -14,9 +14,6 @@ from pydantic_evals import Case, Dataset
|
|
14
14
|
from aurelian.agents.gocam.gocam_agent import gocam_agent
|
15
15
|
from aurelian.agents.gocam.gocam_config import GOCAMDependencies
|
16
16
|
|
17
|
-
class GOCAMMetadata(Dict[str, Any]):
|
18
|
-
"""Simple metadata dictionary for GO-CAM evaluations."""
|
19
|
-
pass
|
20
17
|
|
21
18
|
# Define individual evaluation cases
|
22
19
|
case1 = Case(
|
@@ -56,7 +56,6 @@ async def inspect_file(data_file: str) -> str:
|
|
56
56
|
Inspect a file in the working directory.
|
57
57
|
|
58
58
|
Args:
|
59
|
-
ctx:
|
60
59
|
data_file: name of file
|
61
60
|
|
62
61
|
Returns:
|
@@ -71,7 +70,6 @@ async def list_files() -> str:
|
|
71
70
|
List files in the working directory.
|
72
71
|
|
73
72
|
Args:
|
74
|
-
ctx:
|
75
73
|
|
76
74
|
Returns:
|
77
75
|
|
@@ -84,7 +82,6 @@ async def write_to_file(data: str, file_name: str) -> str:
|
|
84
82
|
Write data to a file in the working directory.
|
85
83
|
|
86
84
|
Args:
|
87
|
-
ctx:
|
88
85
|
data:
|
89
86
|
file_name:
|
90
87
|
|
@@ -104,7 +101,6 @@ async def validate_data(schema: str, data_file: str) -> str:
|
|
104
101
|
You can write data to the working directory using the `write_to_file` tool.
|
105
102
|
|
106
103
|
Args:
|
107
|
-
ctx:
|
108
104
|
schema: the schema (as a YAML string)
|
109
105
|
data_file: the name of the data file in the working directory
|
110
106
|
|
@@ -167,7 +163,6 @@ async def download_web_page(url: str, local_file_name: str) -> str:
|
|
167
163
|
Download contents of a web page.
|
168
164
|
|
169
165
|
Args:
|
170
|
-
ctx:
|
171
166
|
url: URL of the web page
|
172
167
|
local_file_name: Name of the local file to save the
|
173
168
|
|
@@ -183,4 +178,4 @@ async def download_web_page(url: str, local_file_name: str) -> str:
|
|
183
178
|
|
184
179
|
if __name__ == "__main__":
|
185
180
|
# Initialize and run the server
|
186
|
-
mcp.run(transport='stdio')
|
181
|
+
mcp.run(transport='stdio')
|
@@ -1,6 +1,7 @@
|
|
1
1
|
"""
|
2
2
|
Agent for working with scientific literature and publications.
|
3
3
|
"""
|
4
|
+
from aurelian.agents.web.web_tools import perplexity_query
|
4
5
|
from aurelian.agents.literature.literature_config import LiteratureDependencies
|
5
6
|
from aurelian.agents.literature.literature_tools import (
|
6
7
|
lookup_pmid,
|
@@ -48,6 +49,25 @@ literature_agent = Agent(
|
|
48
49
|
Tool(get_article_abstract),
|
49
50
|
Tool(extract_text_from_pdf_url),
|
50
51
|
Tool(search_literature_web),
|
52
|
+
#Tool(perplexity_query),
|
53
|
+
Tool(retrieve_literature_page),
|
54
|
+
Tool(inspect_file),
|
55
|
+
Tool(list_files),
|
56
|
+
]
|
57
|
+
)
|
58
|
+
|
59
|
+
advanced_literature_agent = Agent(
|
60
|
+
model="openai:gpt-4o",
|
61
|
+
deps_type=LiteratureDependencies,
|
62
|
+
system_prompt=SYSTEM,
|
63
|
+
tools=[
|
64
|
+
Tool(lookup_pmid),
|
65
|
+
Tool(lookup_doi),
|
66
|
+
Tool(convert_pmid_to_doi),
|
67
|
+
Tool(convert_doi_to_pmid),
|
68
|
+
Tool(get_article_abstract),
|
69
|
+
Tool(extract_text_from_pdf_url),
|
70
|
+
Tool(perplexity_query),
|
51
71
|
Tool(retrieve_literature_page),
|
52
72
|
Tool(inspect_file),
|
53
73
|
Tool(list_files),
|
@@ -1,25 +0,0 @@
|
|
1
|
-
"""
|
2
|
-
Monarch agent package for interacting with the Monarch Knowledge Base.
|
3
|
-
"""
|
4
|
-
|
5
|
-
from .monarch_agent import monarch_agent, MONARCH_SYSTEM_PROMPT
|
6
|
-
from .monarch_config import MonarchDependencies, get_config
|
7
|
-
from .monarch_gradio import chat
|
8
|
-
from .monarch_tools import find_gene_associations, find_disease_associations
|
9
|
-
|
10
|
-
__all__ = [
|
11
|
-
# Agent
|
12
|
-
"monarch_agent",
|
13
|
-
"MONARCH_SYSTEM_PROMPT",
|
14
|
-
|
15
|
-
# Config
|
16
|
-
"MonarchDependencies",
|
17
|
-
"get_config",
|
18
|
-
|
19
|
-
# Tools
|
20
|
-
"find_gene_associations",
|
21
|
-
"find_disease_associations",
|
22
|
-
|
23
|
-
# Gradio
|
24
|
-
"chat",
|
25
|
-
]
|
aurelian/agents/rag/rag_agent.py
CHANGED
@@ -1,168 +1,75 @@
|
|
1
1
|
"""
|
2
|
-
MCP
|
2
|
+
MCP tools for retrieving gene information using the UniProt API and NCBI Entrez.
|
3
3
|
"""
|
4
|
-
import json
|
5
4
|
import os
|
6
|
-
from typing import Dict, Any, List, Optional
|
7
5
|
|
8
|
-
from
|
9
|
-
from pydantic_ai import Agent
|
6
|
+
from mcp.server.fastmcp import FastMCP
|
10
7
|
|
11
|
-
|
12
|
-
from .
|
13
|
-
from .
|
8
|
+
from aurelian.agents.talisman.talisman_agent import TALISMAN_SYSTEM_PROMPT
|
9
|
+
from aurelian.agents.talisman.talisman_config import TalismanConfig, get_config
|
10
|
+
from aurelian.agents.talisman.talisman_tools import (
|
11
|
+
get_gene_description,
|
12
|
+
get_gene_descriptions,
|
13
|
+
get_genes_from_list,
|
14
|
+
analyze_gene_set
|
15
|
+
)
|
14
16
|
|
17
|
+
from pydantic_ai import RunContext
|
15
18
|
|
16
|
-
|
17
|
-
|
19
|
+
# Initialize FastMCP server
|
20
|
+
mcp = FastMCP("talisman", instructions=TALISMAN_SYSTEM_PROMPT)
|
21
|
+
|
22
|
+
def deps() -> TalismanConfig:
|
23
|
+
"""Get the Talisman dependencies."""
|
24
|
+
return get_config()
|
25
|
+
|
26
|
+
def ctx() -> RunContext[TalismanConfig]:
|
27
|
+
"""Get the run context with dependencies."""
|
28
|
+
rc: RunContext[TalismanConfig] = RunContext[TalismanConfig](
|
29
|
+
deps=deps(),
|
30
|
+
model=None, usage=None, prompt=None,
|
31
|
+
)
|
32
|
+
return rc
|
33
|
+
|
34
|
+
@mcp.tool()
|
35
|
+
async def get_gene_info(gene_id: str) -> str:
|
36
|
+
"""
|
37
|
+
Get description for a single gene ID.
|
18
38
|
|
19
39
|
Args:
|
20
|
-
|
40
|
+
gene_id: The gene identifier (UniProt ID, gene symbol, etc.)
|
21
41
|
|
22
42
|
Returns:
|
23
|
-
|
43
|
+
The gene description in a structured format
|
24
44
|
"""
|
25
|
-
|
26
|
-
for tool in agent.tools:
|
27
|
-
anthropic_tool = {
|
28
|
-
"name": tool.name,
|
29
|
-
"description": tool.description,
|
30
|
-
"input_schema": {
|
31
|
-
"type": "object",
|
32
|
-
"properties": {},
|
33
|
-
"required": []
|
34
|
-
}
|
35
|
-
}
|
36
|
-
|
37
|
-
for param_name, param in tool.params.items():
|
38
|
-
if param_name == "ctx":
|
39
|
-
continue
|
40
|
-
|
41
|
-
param_schema = {"type": "string"}
|
42
|
-
if param.annotation.__origin__ == list:
|
43
|
-
param_schema = {
|
44
|
-
"type": "array",
|
45
|
-
"items": {"type": "string"}
|
46
|
-
}
|
47
|
-
|
48
|
-
anthropic_tool["input_schema"]["properties"][param_name] = param_schema
|
49
|
-
if param.default == param.empty:
|
50
|
-
anthropic_tool["input_schema"]["required"].append(param_name)
|
51
|
-
|
52
|
-
anthropic_tools.append(anthropic_tool)
|
53
|
-
|
54
|
-
return anthropic_tools
|
55
|
-
|
45
|
+
return get_gene_description(ctx(), gene_id)
|
56
46
|
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
content: List[Dict[str, Any]]
|
62
|
-
) -> Dict[str, Any]:
|
63
|
-
"""Create a response compatible with the Bedrock format.
|
47
|
+
@mcp.tool()
|
48
|
+
async def get_multiple_gene_info(gene_ids: str) -> str:
|
49
|
+
"""
|
50
|
+
Get descriptions for multiple gene IDs provided as a string.
|
64
51
|
|
65
52
|
Args:
|
66
|
-
|
67
|
-
model: The model name
|
68
|
-
role: The role (usually 'assistant')
|
69
|
-
content: The content from the Anthropic response
|
53
|
+
gene_ids: String containing gene identifiers separated by commas, spaces, or newlines
|
70
54
|
|
71
55
|
Returns:
|
72
|
-
|
56
|
+
The gene descriptions in a structured format
|
73
57
|
"""
|
74
|
-
return
|
75
|
-
"id": response_id,
|
76
|
-
"model": model,
|
77
|
-
"choices": [
|
78
|
-
{
|
79
|
-
"message": {
|
80
|
-
"role": role,
|
81
|
-
"content": content
|
82
|
-
}
|
83
|
-
}
|
84
|
-
]
|
85
|
-
}
|
86
|
-
|
58
|
+
return get_genes_from_list(ctx(), gene_ids)
|
87
59
|
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
Returns:
|
92
|
-
A list of tools in the MCP format
|
60
|
+
@mcp.tool()
|
61
|
+
async def analyze_genes(gene_list: str) -> str:
|
93
62
|
"""
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
def get_talisman_mcp_messages(
|
98
|
-
messages: Optional[List[Dict[str, Any]]] = None,
|
99
|
-
system: Optional[str] = None,
|
100
|
-
) -> List[Dict[str, Any]]:
|
101
|
-
"""Get MCP messages for the Talisman agent.
|
102
|
-
|
103
|
-
Args:
|
104
|
-
messages: Previous messages
|
105
|
-
system: System message override
|
106
|
-
|
107
|
-
Returns:
|
108
|
-
List of MCP messages
|
109
|
-
"""
|
110
|
-
if messages is None:
|
111
|
-
messages = []
|
112
|
-
|
113
|
-
if system is None:
|
114
|
-
system = TALISMAN_SYSTEM_PROMPT
|
63
|
+
Analyze a set of genes and generate a biological summary of their properties and relationships.
|
115
64
|
|
116
|
-
if not messages or messages[0].get("role") != "system":
|
117
|
-
messages = [{"role": "system", "content": system}] + messages
|
118
|
-
|
119
|
-
return messages
|
120
|
-
|
121
|
-
|
122
|
-
def handle_talisman_mcp_request(
|
123
|
-
messages: List[Dict[str, Any]],
|
124
|
-
config: Optional[TalismanConfig] = None,
|
125
|
-
model: str = "claude-3-5-sonnet-20240620",
|
126
|
-
max_tokens: int = 4096,
|
127
|
-
temperature: float = 0.0,
|
128
|
-
) -> Dict[str, Any]:
|
129
|
-
"""Handle an MCP request for the Talisman agent.
|
130
|
-
|
131
65
|
Args:
|
132
|
-
|
133
|
-
|
134
|
-
model: The model to use
|
135
|
-
max_tokens: The maximum number of tokens to generate
|
136
|
-
temperature: The temperature to use for generation
|
137
|
-
|
66
|
+
gene_list: String containing gene identifiers separated by commas, spaces, or newlines
|
67
|
+
|
138
68
|
Returns:
|
139
|
-
|
69
|
+
A structured biological summary of the gene set with Narrative, Functional Terms Table, and Gene Summary Table
|
140
70
|
"""
|
141
|
-
|
142
|
-
|
143
|
-
api_key = os.environ.get("ANTHROPIC_API_KEY")
|
144
|
-
if not api_key:
|
145
|
-
raise ValueError("ANTHROPIC_API_KEY environment variable is required for MCP")
|
146
|
-
|
147
|
-
client = Anthropic(api_key=api_key)
|
148
|
-
|
149
|
-
# Prepare the messages and tools
|
150
|
-
mcp_messages = get_talisman_mcp_messages(messages)
|
151
|
-
mcp_tools = get_talisman_mcp_tools()
|
152
|
-
|
153
|
-
# Send the request to Anthropic
|
154
|
-
response = client.messages.create(
|
155
|
-
model=model,
|
156
|
-
messages=mcp_messages,
|
157
|
-
tools=mcp_tools,
|
158
|
-
max_tokens=max_tokens,
|
159
|
-
temperature=temperature,
|
160
|
-
)
|
71
|
+
return analyze_gene_set(ctx(), gene_list)
|
161
72
|
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
model=model,
|
166
|
-
role="assistant",
|
167
|
-
content=response.content,
|
168
|
-
)
|
73
|
+
if __name__ == "__main__":
|
74
|
+
# Initialize and run the server
|
75
|
+
mcp.run(transport='stdio')
|
@@ -4,9 +4,9 @@ Tools for interacting with the UberGraph SPARQL endpoint.
|
|
4
4
|
import asyncio
|
5
5
|
from typing import Any, Dict, List, Optional
|
6
6
|
|
7
|
+
import requests
|
7
8
|
from pydantic import BaseModel
|
8
9
|
from pydantic_ai import RunContext, ModelRetry
|
9
|
-
from SPARQLWrapper import JSON, SPARQLWrapper
|
10
10
|
|
11
11
|
from .ubergraph_config import Dependencies, get_config
|
12
12
|
|
@@ -88,13 +88,23 @@ async def query_ubergraph(ctx: RunContext[Dependencies], query: str) -> QueryRes
|
|
88
88
|
print("##")
|
89
89
|
|
90
90
|
try:
|
91
|
-
#
|
92
|
-
|
93
|
-
|
94
|
-
|
91
|
+
# Define a function to execute in a thread pool
|
92
|
+
def run_query():
|
93
|
+
response = requests.post(
|
94
|
+
endpoint,
|
95
|
+
data={
|
96
|
+
'query': prefixed_query,
|
97
|
+
},
|
98
|
+
headers={
|
99
|
+
'Accept': 'application/sparql-results+json',
|
100
|
+
'Content-Type': 'application/x-www-form-urlencoded'
|
101
|
+
}
|
102
|
+
)
|
103
|
+
response.raise_for_status() # Raise an exception for HTTP errors
|
104
|
+
return response.json()
|
95
105
|
|
96
106
|
# Execute the query in a thread pool
|
97
|
-
ret = await asyncio.to_thread(
|
107
|
+
ret = await asyncio.to_thread(run_query)
|
98
108
|
|
99
109
|
# Process the results
|
100
110
|
results = simplify_results(ret, prefixes, limit=config.max_results)
|
@@ -105,6 +115,8 @@ async def query_ubergraph(ctx: RunContext[Dependencies], query: str) -> QueryRes
|
|
105
115
|
raise ModelRetry(f"No results found for SPARQL query. Try refining your query.")
|
106
116
|
|
107
117
|
return QueryResults(results=results)
|
118
|
+
except requests.RequestException as e:
|
119
|
+
raise ModelRetry(f"Error connecting to SPARQL endpoint: {str(e)}")
|
108
120
|
except Exception as e:
|
109
121
|
if "ModelRetry" in str(type(e)):
|
110
122
|
raise e
|
@@ -1,37 +0,0 @@
|
|
1
|
-
"""
|
2
|
-
UniProt agent package for interacting with the UniProt database.
|
3
|
-
"""
|
4
|
-
|
5
|
-
from .uniprot_agent import uniprot_agent, UNIPROT_SYSTEM_PROMPT
|
6
|
-
from .uniprot_config import UniprotConfig, get_config
|
7
|
-
from .uniprot_gradio import chat
|
8
|
-
from .uniprot_mcp import (
|
9
|
-
get_uniprot_mcp_tools,
|
10
|
-
get_uniprot_mcp_messages,
|
11
|
-
handle_uniprot_mcp_request,
|
12
|
-
)
|
13
|
-
from .uniprot_tools import lookup_uniprot_entry, search, uniprot_mapping, normalize_uniprot_id
|
14
|
-
|
15
|
-
__all__ = [
|
16
|
-
# Agent
|
17
|
-
"uniprot_agent",
|
18
|
-
"UNIPROT_SYSTEM_PROMPT",
|
19
|
-
|
20
|
-
# Config
|
21
|
-
"UniprotConfig",
|
22
|
-
"get_config",
|
23
|
-
|
24
|
-
# Tools
|
25
|
-
"lookup_uniprot_entry",
|
26
|
-
"search",
|
27
|
-
"uniprot_mapping",
|
28
|
-
"normalize_uniprot_id",
|
29
|
-
|
30
|
-
# Gradio
|
31
|
-
"chat",
|
32
|
-
|
33
|
-
# MCP
|
34
|
-
"get_uniprot_mcp_tools",
|
35
|
-
"get_uniprot_mcp_messages",
|
36
|
-
"handle_uniprot_mcp_request",
|
37
|
-
]
|
aurelian/agents/web/web_tools.py
CHANGED
@@ -43,9 +43,11 @@ async def search_web(query: str) -> str:
|
|
43
43
|
return web_search(query)
|
44
44
|
|
45
45
|
|
46
|
-
async def perplexity_query(query: str, model_name: str = "sonar") -> ResultWithCitations:
|
46
|
+
async def perplexity_query(query: str, model_name: str = "sonar-pro") -> ResultWithCitations:
|
47
47
|
"""
|
48
48
|
Query the Perplexity API and return structured results with citations.
|
49
|
+
|
50
|
+
The Perplexity API performs a web search and returns a structured response with citations.
|
49
51
|
|
50
52
|
Args:
|
51
53
|
query: The query to send to Perplexity
|
@@ -58,14 +60,25 @@ async def perplexity_query(query: str, model_name: str = "sonar") -> ResultWithC
|
|
58
60
|
ValueError: If the Perplexity API key is not set
|
59
61
|
RuntimeError: If the response parsing fails
|
60
62
|
"""
|
63
|
+
# TODO: consider using perplexity API directly, gives control over search domains, e.g. https://docs.perplexity.ai/guides/search-domain-filters
|
61
64
|
perplexity_api_key = os.environ.get("PERPLEXITY_API_KEY")
|
62
65
|
if not perplexity_api_key:
|
63
66
|
raise ValueError("PERPLEXITY_API_KEY environment variable is not set")
|
64
67
|
|
68
|
+
# Use specific implementation instead of OpenAIModel directly
|
69
|
+
# since OpenAIModel doesn't accept base_url and api_key params directly
|
70
|
+
from pydantic_ai.models.openai import Provider
|
71
|
+
from pydantic_ai.providers.openai import OpenAIProvider
|
72
|
+
|
73
|
+
|
74
|
+
provider = OpenAIProvider(
|
75
|
+
api_key=perplexity_api_key,
|
76
|
+
base_url='https://api.perplexity.ai'
|
77
|
+
)
|
78
|
+
|
65
79
|
sonar_model = OpenAIModel(
|
66
80
|
model_name=model_name,
|
67
|
-
|
68
|
-
api_key=perplexity_api_key,
|
81
|
+
provider=provider,
|
69
82
|
)
|
70
83
|
|
71
84
|
agent = Agent(sonar_model,
|
aurelian/cli.py
CHANGED
@@ -4,6 +4,7 @@ import logging
|
|
4
4
|
import os
|
5
5
|
from typing import Any, Awaitable, Callable, Optional, List
|
6
6
|
|
7
|
+
from aurelian.utils.async_utils import run_sync
|
7
8
|
import click
|
8
9
|
from pydantic_ai.models.openai import OpenAIModel
|
9
10
|
from pydantic_ai.providers.openai import OpenAIProvider
|
@@ -550,6 +551,14 @@ def websearch(term):
|
|
550
551
|
txt = web_search(term)
|
551
552
|
print(txt)
|
552
553
|
|
554
|
+
@main.command()
|
555
|
+
@click.argument("term")
|
556
|
+
def perplexity(term):
|
557
|
+
"""Search the web for a query term, with citations."""
|
558
|
+
from aurelian.agents.web.web_tools import perplexity_query
|
559
|
+
result = run_sync(perplexity_query(term))
|
560
|
+
import yaml
|
561
|
+
print(yaml.dump(result.model_dump(), indent=2))
|
553
562
|
|
554
563
|
@main.command()
|
555
564
|
@click.argument("url")
|
@@ -0,0 +1,30 @@
|
|
1
|
+
from pydantic_evals.evaluators import Evaluator, EvaluatorContext
|
2
|
+
|
3
|
+
|
4
|
+
class SubstringEvaluator(Evaluator[str, str]):
|
5
|
+
"""
|
6
|
+
Custom evaluator for GO-CAM agent responses.
|
7
|
+
|
8
|
+
This evaluator checks if the expected substring is present in the agent's response.
|
9
|
+
If no expected output is specified, it assumes the test passes (for cases where we
|
10
|
+
only want to verify the agent doesn't error out).
|
11
|
+
"""
|
12
|
+
|
13
|
+
def evaluate(self, ctx: EvaluatorContext[str, str]) -> float:
|
14
|
+
"""
|
15
|
+
Evaluate GO-CAM agent response by checking for expected substring.
|
16
|
+
|
17
|
+
Args:
|
18
|
+
ctx: The evaluator context containing input, output, and expected output
|
19
|
+
|
20
|
+
Returns:
|
21
|
+
Score between 0.0 and 1.0 (1.0 = pass, 0.0 = fail)
|
22
|
+
"""
|
23
|
+
# If no expected output is specified, return 1.0 (success)
|
24
|
+
if ctx.expected_output is None:
|
25
|
+
return 1.0
|
26
|
+
|
27
|
+
# Check if expected string is in output
|
28
|
+
if ctx.expected_output.lower() in ctx.output.lower():
|
29
|
+
return 1.0
|
30
|
+
return 0.0
|
aurelian/utils/async_utils.py
CHANGED
@@ -1,11 +1,14 @@
|
|
1
1
|
import asyncio
|
2
|
-
from typing import Callable
|
2
|
+
from typing import Callable, Coroutine
|
3
3
|
|
4
4
|
|
5
|
-
def run_sync(f: Callable):
|
5
|
+
def run_sync(f: Callable | Coroutine):
|
6
6
|
loop = asyncio.new_event_loop()
|
7
7
|
asyncio.set_event_loop(loop)
|
8
|
-
|
8
|
+
if isinstance(f, Coroutine):
|
9
|
+
result = f
|
10
|
+
else:
|
11
|
+
result = f()
|
9
12
|
|
10
13
|
# Ensure it's a coroutine before running it
|
11
14
|
if asyncio.iscoroutine(result):
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: aurelian
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.4.2
|
4
4
|
Summary: aurelian
|
5
5
|
License: MIT
|
6
6
|
Author: Author 1
|
@@ -17,6 +17,7 @@ Provides-Extra: gocam
|
|
17
17
|
Provides-Extra: gradio
|
18
18
|
Provides-Extra: linkml
|
19
19
|
Provides-Extra: pdfminer
|
20
|
+
Provides-Extra: pypaperbot
|
20
21
|
Provides-Extra: rdkit
|
21
22
|
Requires-Dist: bioservices (>=1.12.0) ; extra == "bioservices"
|
22
23
|
Requires-Dist: bs4 (>=0.0.2)
|
@@ -30,13 +31,14 @@ Requires-Dist: linkml ; extra == "linkml"
|
|
30
31
|
Requires-Dist: linkml-store[llm,mongodb] (>=0.2.4)
|
31
32
|
Requires-Dist: logfire (>=3.5.3)
|
32
33
|
Requires-Dist: markdownify (>=0.14.1)
|
33
|
-
Requires-Dist: markitdown (>=0.
|
34
|
+
Requires-Dist: markitdown (>=0.1.1)
|
34
35
|
Requires-Dist: mcp[cli] (>=1.3.0,<2.0.0)
|
35
36
|
Requires-Dist: oaklib (>=0.6.19)
|
37
|
+
Requires-Dist: onnxruntime (<=1.19.0)
|
36
38
|
Requires-Dist: paper-qa (>=5.20.0,<6.0.0)
|
37
39
|
Requires-Dist: pdfminer-six ; extra == "pdfminer"
|
38
|
-
Requires-Dist: pydantic-ai (>=0.0
|
39
|
-
Requires-Dist: pypaperbot (>=1.4.1)
|
40
|
+
Requires-Dist: pydantic-ai (>=0.2.0)
|
41
|
+
Requires-Dist: pypaperbot (>=1.4.1) ; extra == "pypaperbot"
|
40
42
|
Requires-Dist: pytest-asyncio (>=0.25.3,<0.26.0)
|
41
43
|
Requires-Dist: rdkit ; extra == "rdkit" or extra == "chem"
|
42
44
|
Requires-Dist: tabulate (>=0.9.0)
|
@@ -8,14 +8,14 @@ aurelian/agents/amigo/amigo_gradio.py,sha256=UYJW2ZdDQJz77wZNetxejWEI5tz39lVRWXZ
|
|
8
8
|
aurelian/agents/amigo/amigo_mcp.py,sha256=byLMDguj_osVV5Q4m1Fp_I1megZm28TzV3YVoi5qa1Q,3831
|
9
9
|
aurelian/agents/amigo/amigo_tools.py,sha256=upTjjw4rKCFe3qX-633-9mlQZmXGcNsU8IV7Zd9XJvE,5561
|
10
10
|
aurelian/agents/biblio/__init__.py,sha256=xBuwjRYjyWRbABMaa7NaMwJUmSDj0AATQ_55Oy_FitA,814
|
11
|
-
aurelian/agents/biblio/biblio_agent.py,sha256=
|
11
|
+
aurelian/agents/biblio/biblio_agent.py,sha256=7icG6TzCr1vNgkMHju662IceRQOsEt5XLkipnybxHlw,3726
|
12
12
|
aurelian/agents/biblio/biblio_config.py,sha256=K2crtuWIsvzLaoD0bINrx7_VPucp4Qwbfwj8DEn_09E,1254
|
13
13
|
aurelian/agents/biblio/biblio_gradio.py,sha256=4YTqYn4Jw0MX29udZ4iCJP-YXKl9yQdPAwouPRr_B1I,1911
|
14
14
|
aurelian/agents/biblio/biblio_mcp.py,sha256=zZpRHTc7tVAcBL190sDSPcmvous7vjYx0S0OD8-q4IE,3156
|
15
15
|
aurelian/agents/biblio/biblio_tools.py,sha256=tTihpzOTjLBwvMm6QNAHsUb9yWdT4DziOt7t3XWe0_o,4936
|
16
16
|
aurelian/agents/biblio_agent.py,sha256=0Uvh6N6AQdva-4NgjOlFHXQFPuEwLyAqUVGtRkokn-U,1241
|
17
17
|
aurelian/agents/checklist/__init__.py,sha256=ZN70snI4C871K-76oRCMU3XZPYl_4lKH4VzPUx9tvCg,1034
|
18
|
-
aurelian/agents/checklist/checklist_agent.py,sha256=
|
18
|
+
aurelian/agents/checklist/checklist_agent.py,sha256=G7NpLDSqKvqz3mti1t8SAceFnXHko0knjotqx1YpMQY,2788
|
19
19
|
aurelian/agents/checklist/checklist_config.py,sha256=8V_fwWj3dPEyJmcle0nscfvcxdUFiAGsE1T17GnFNIk,828
|
20
20
|
aurelian/agents/checklist/checklist_gradio.py,sha256=UOwL7BCjyRsnldP-3RVhzxQsRGLC5QztY8iuAxqjIsY,1981
|
21
21
|
aurelian/agents/checklist/checklist_mcp.py,sha256=cQo_VmP_U-A0cQEHBMrgt5gYIr3nkVFTLv-8ucS0D20,2238
|
@@ -24,22 +24,22 @@ aurelian/agents/checklist/content/checklists.yaml,sha256=QVPp65lnPfRJvHxXgFEFu_W
|
|
24
24
|
aurelian/agents/checklist/content/streams.csv,sha256=VjqssvA05-tdJC5Egr-ZR6RZVTSfHvucZRQFEOlqGm4,50132
|
25
25
|
aurelian/agents/checklist_agent.py,sha256=2K1l2ctb8oIWGOqMuWBfuM0WEZ0pa2BiQUefXWAvnJI,1187
|
26
26
|
aurelian/agents/chemistry/__init__.py,sha256=_a0iQB50o5cF-t-SI5EkaP8oCeDWc2QKvJ0m628Typ8,68
|
27
|
-
aurelian/agents/chemistry/chemistry_agent.py,sha256=
|
27
|
+
aurelian/agents/chemistry/chemistry_agent.py,sha256=ah8ba8-WLyi-5DIjmRfRURbmienbwyx_h1TXkR16o98,1594
|
28
28
|
aurelian/agents/chemistry/chemistry_config.py,sha256=r348qJwBpvp6Q8MbnA3OOOSBjhFj-J_5J68OpKgTijE,1900
|
29
29
|
aurelian/agents/chemistry/chemistry_evals.py,sha256=s_elRDsjle8fNrkL4c4Ud2NrFnoCM3goJkcwORhi-4Y,2611
|
30
30
|
aurelian/agents/chemistry/chemistry_gradio.py,sha256=2tF6HhRhbJK_3zQfydBn0kwFAJiQQcHzeva8tax4DEM,1545
|
31
31
|
aurelian/agents/chemistry/chemistry_mcp.py,sha256=ZS8lXMjCwj60RCv4t6BFxqU0uiiGxLFhWoG9vNb_Ld0,2892
|
32
32
|
aurelian/agents/chemistry/chemistry_tools.py,sha256=sJ0FWMqwvf1cOd1XEmdOkViYY7FhWUZ_z0zMD8EyQ30,3387
|
33
33
|
aurelian/agents/chemistry/image_agent.py,sha256=Taty5MYbhg7XPzpGgfMeu7Ll6D5f_grClGPF9M3boTE,562
|
34
|
-
aurelian/agents/d4d/__init__.py,sha256=
|
35
|
-
aurelian/agents/d4d/d4d_agent.py,sha256=
|
34
|
+
aurelian/agents/d4d/__init__.py,sha256=h7jmgzmu_zEU-5HpejrDs0Wsigq4kpvdNLC3s-MHXuI,597
|
35
|
+
aurelian/agents/d4d/d4d_agent.py,sha256=tmWb3qnHQcS1o5GMyyePN-UaC7231KOGIPUDEK1-Tg0,2119
|
36
36
|
aurelian/agents/d4d/d4d_config.py,sha256=vQz1ym2NDim2cQV4gFMXTDcAEeg5RAVBkWvVIdo7CNo,1471
|
37
|
-
aurelian/agents/d4d/d4d_gradio.py,sha256=
|
37
|
+
aurelian/agents/d4d/d4d_gradio.py,sha256=gJXImWqQv9PAPKVlexhdvXqTcDpQWbEi1xLWVGIly9Q,1844
|
38
38
|
aurelian/agents/d4d/d4d_mcp.py,sha256=QjRqFd4miAbfFwzos5idHA-wfdN5-djpD2Ot0xogb58,1810
|
39
39
|
aurelian/agents/d4d/d4d_tools.py,sha256=ymyWSOOYF6vgv06mpU_GQH7gecIUYluqvT3eXgEhfVA,4803
|
40
40
|
aurelian/agents/d4d_agent.py,sha256=hDS5RVisPcKzDX202vYzz54kyGZ1_L8VfBCDfXPlpPk,1896
|
41
41
|
aurelian/agents/diagnosis/__init__.py,sha256=HhW4NEjr8Zo6Lqxiq0AW3pzGZu1N8xEkdAd0EG_7fak,668
|
42
|
-
aurelian/agents/diagnosis/diagnosis_agent.py,sha256
|
42
|
+
aurelian/agents/diagnosis/diagnosis_agent.py,sha256=-nJ7gwZZ6N6I-A6y9SVxrqKV98b-DgrkAE82jpiZ20s,2369
|
43
43
|
aurelian/agents/diagnosis/diagnosis_config.py,sha256=TCoJ9tPmXS0gvXgmziSqAMHKXdl48Mg5AFejS_0Wvxo,1565
|
44
44
|
aurelian/agents/diagnosis/diagnosis_evals.py,sha256=FL42urNIAsWo9iMRmpynlrvMYLnazsC9tMPdPm86JG8,2582
|
45
45
|
aurelian/agents/diagnosis/diagnosis_gradio.py,sha256=We_ZxhxmlvcxcvVmf2NuflmeHVIYmDJ_LvrO4hL1Y9U,1754
|
@@ -78,7 +78,7 @@ aurelian/agents/goann/goann_evals.py,sha256=foDikX0KBYcfBamf0G5UWcJstADbNrRB7q_T
|
|
78
78
|
aurelian/agents/goann/goann_gradio.py,sha256=s_mx4Qh2_5SgXdR3NuY_Jr1h38vTjz__-Tv0yk8QLU0,2025
|
79
79
|
aurelian/agents/goann/goann_mcp.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
80
80
|
aurelian/agents/goann/goann_tools.py,sha256=m5nM41nbH45IZ8-BXCaWOX970j0spYwjQJhFs23EvAs,2059
|
81
|
-
aurelian/agents/gocam/__init__.py,sha256=
|
81
|
+
aurelian/agents/gocam/__init__.py,sha256=CuXryR9hlrCSdlDSctqKsorHO7jbrI2eGBwcoBDYEJY,1196
|
82
82
|
aurelian/agents/gocam/documents/DNA-binding transcription factor activity annotation guidelines.docx,sha256=aohQYDq-iI6dj4AWpWZO-6dG91i_UhJ9Cvre40hsO5I,946469
|
83
83
|
aurelian/agents/gocam/documents/DNA-binding transcription factor activity annotation guidelines.pdf,sha256=ffnp3EwWD-guJtv69IEo2y-Sw-mQn-ZiXPK-V2CvWC8,602114
|
84
84
|
aurelian/agents/gocam/documents/DNA-binding_transcription_factor_activity_annotation_guidelines.md,sha256=m2C4wIk0snHbG5BEH2ys_u1bisdK6D-2l5rxbWYiDww,5604
|
@@ -136,10 +136,10 @@ aurelian/agents/gocam/documents/md/Transcription_coregulator_activity.md,sha256=
|
|
136
136
|
aurelian/agents/gocam/documents/md/Transporter_activity_annotation_annotation_guidelines.md,sha256=7wrC8TryecwxXdXN6_XpUP7dHoUZ2-vzCHhLitCm42A,1688
|
137
137
|
aurelian/agents/gocam/documents/md/WIP_-_Regulation_and_Regulatory_Processes_in_GO-CAM.md,sha256=Ug84Aa640VBwpMom5blksjweKjCutHKUYqBBzwzgG-I,2653
|
138
138
|
aurelian/agents/gocam/documents/pandoc_md/Signaling_receptor_activity_annotation_guidelines.md,sha256=TGw39vKs5XE0jF3s0A6XzP4_ovKS3nohqlrGlK7kVFo,11990
|
139
|
-
aurelian/agents/gocam/gocam_agent.py,sha256=
|
139
|
+
aurelian/agents/gocam/gocam_agent.py,sha256=5em_lS64D2eG_srlGU4B_76FTx3NABPAgmTrYcPr1a0,9497
|
140
140
|
aurelian/agents/gocam/gocam_config.py,sha256=MU7jRhrkB05kRT-ruPDoPpHMPFCn2y2Od6B13XIj6R0,2492
|
141
141
|
aurelian/agents/gocam/gocam_curator_agent.py,sha256=4OK3PoNCNA3pVLV6yq7Rm0ZN7YQ5todAvjJvYzAPPrY,1452
|
142
|
-
aurelian/agents/gocam/gocam_evals.py,sha256=
|
142
|
+
aurelian/agents/gocam/gocam_evals.py,sha256=x9K04niguY2BVtPA99ifj3gb7dIlu5Xt_YEpqpPcky4,1934
|
143
143
|
aurelian/agents/gocam/gocam_gradio.py,sha256=Ah1VnlGSYVzLPQel5SbZ-RNsI_QRg0PJBt6VGGIOOfo,3098
|
144
144
|
aurelian/agents/gocam/gocam_mcp.py,sha256=S-KT5GuQKtzvq33Qemm1Wwg3jhl64GnGbic_tA4-XoQ,5915
|
145
145
|
aurelian/agents/gocam/gocam_tools.py,sha256=tmhXLIYHDbXiteChzV6n-RzRhMiX2GSR9D2b47MmyxI,9671
|
@@ -148,32 +148,32 @@ aurelian/agents/linkml/linkml_agent.py,sha256=JhYfg-xMGhlj2VqaqeqTZEOhTcBkGzTj5a
|
|
148
148
|
aurelian/agents/linkml/linkml_config.py,sha256=VIPPX7H5eGbw7Rx-YyDorOYVHZz1TQxqFtFKwFtmFwg,1450
|
149
149
|
aurelian/agents/linkml/linkml_evals.py,sha256=odQ6unXhobBT6krqYVtdx1Jl91xh4m6avBk7-BlnHvc,2124
|
150
150
|
aurelian/agents/linkml/linkml_gradio.py,sha256=XaaBQEZTJdW2HdENbs2LjlHjcfjAr2-setFePJKp6bg,1303
|
151
|
-
aurelian/agents/linkml/linkml_mcp.py,sha256=
|
151
|
+
aurelian/agents/linkml/linkml_mcp.py,sha256=8CttCtfiFrRU4FX4-JjXvDBnpMYnz3oOVvVuP2OlMjE,4711
|
152
152
|
aurelian/agents/linkml/linkml_tools.py,sha256=-y53s1MIJdLsqJstZF-8t5ocigHOLtXTDxmRIhY7uyc,3684
|
153
153
|
aurelian/agents/literature/__init__.py,sha256=8EY_j4JWf5Mbowv6mzUE6TLpkhwrbNZSKT-NEH65KpU,101
|
154
|
-
aurelian/agents/literature/literature_agent.py,sha256=
|
154
|
+
aurelian/agents/literature/literature_agent.py,sha256=LB9RYOK4bzaQUfs8D6rmLQ-1NCwNAPSFsfu_hCY4f00,2275
|
155
155
|
aurelian/agents/literature/literature_config.py,sha256=uDyhonTSdMP5L1dXgIGhgwlaHeyRPxjpVQkmt6kx7cE,947
|
156
156
|
aurelian/agents/literature/literature_gradio.py,sha256=5GAef4fB8GgfOokwpL016MIpyIZ20gfb5snZJWGF-k8,1646
|
157
157
|
aurelian/agents/literature/literature_mcp.py,sha256=fVBW7Vg8pW2vRq8RPio6Ltk_xe4KJCs_UCQzlsLDrJo,3925
|
158
158
|
aurelian/agents/literature/literature_tools.py,sha256=vZMTV-V3xpo4SvkEPnuJAsbv6gGCwQGbcvLW6ec6jX8,5849
|
159
|
-
aurelian/agents/monarch/__init__.py,sha256=
|
160
|
-
aurelian/agents/monarch/monarch_agent.py,sha256=
|
159
|
+
aurelian/agents/monarch/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
160
|
+
aurelian/agents/monarch/monarch_agent.py,sha256=nve0m3BDj9_QwbUBy4Ht5ltVXElo1H_Hh3lPgc43rE4,1826
|
161
161
|
aurelian/agents/monarch/monarch_config.py,sha256=3g5OXmMnuH0by1IZY9YLn4WPR6hr4XKCreq1SBGMzXo,1390
|
162
162
|
aurelian/agents/monarch/monarch_gradio.py,sha256=GG5m4m8x4crFwP2a5z8s97nylG6gwuRXHa7RO82PPvY,1528
|
163
163
|
aurelian/agents/monarch/monarch_mcp.py,sha256=U-K0XlpRIMPlAm5dKQkqemepz-DemCmFLMJWLASV0AI,1839
|
164
|
-
aurelian/agents/monarch/monarch_tools.py,sha256=
|
164
|
+
aurelian/agents/monarch/monarch_tools.py,sha256=z6ohe4wzO8vBVSV_23FSPwLzFNhFrk6Hkdy7FCOmhos,3554
|
165
165
|
aurelian/agents/oak/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
166
166
|
aurelian/agents/oak/oak_config.py,sha256=Gc9_edlkZKF-8377xwx2QiIxVHGiHA2xWPgYVyG-tvE,675
|
167
167
|
aurelian/agents/oak/oak_gradio.py,sha256=-y99MoEORea2sLIvcvEEbeKDojxm0I7bXzzZkoSHu_s,1669
|
168
168
|
aurelian/agents/ontology_mapper/__init__.py,sha256=5SCUej1UyBJSuSwZrNHHO8rrTPElup_ufOClKom6_v8,646
|
169
|
-
aurelian/agents/ontology_mapper/ontology_mapper_agent.py,sha256=
|
169
|
+
aurelian/agents/ontology_mapper/ontology_mapper_agent.py,sha256=sE22zXyAru9dc1nlZB-0uAWWmd2RsoUndqoiwvrL_yk,2796
|
170
170
|
aurelian/agents/ontology_mapper/ontology_mapper_config.py,sha256=iqJzuZ6M7BSs0qGgeah5u7THOusZ3VjvH8lJ6IiYgSE,1639
|
171
171
|
aurelian/agents/ontology_mapper/ontology_mapper_evals.py,sha256=6kympT8LV570rRozgeBIyEdZ3dDfRGH2o3x4x2F__9Q,3591
|
172
172
|
aurelian/agents/ontology_mapper/ontology_mapper_gradio.py,sha256=nzkwPvK3k6Sze8oNS2R8z4k2XeXj4LU2wjV4G_Jn-Ec,1819
|
173
173
|
aurelian/agents/ontology_mapper/ontology_mapper_mcp.py,sha256=YnXCKU2Yzy_RPqEba8hJPWwtb1H07Wo-zlZY-nnKurw,2208
|
174
174
|
aurelian/agents/ontology_mapper/ontology_mapper_tools.py,sha256=S0azD3wR0pTh-9ipjVBUiNRkgsDEb30n1KMZD0qWvyw,4272
|
175
175
|
aurelian/agents/paperqa/__init__.py,sha256=Dfff3fyx9PeoeqA4DcvyE_loW-UXegYM281alttwLvI,590
|
176
|
-
aurelian/agents/paperqa/paperqa_agent.py,sha256=
|
176
|
+
aurelian/agents/paperqa/paperqa_agent.py,sha256=FAPgHVeW63jT07trjV2HzNqq7OivRDlhp2Kn50Kb5Gs,2643
|
177
177
|
aurelian/agents/paperqa/paperqa_cli.py,sha256=A0cwGUUTVcFVO1e_PsXusvBae9N5ElyeCtsZuQh-eGo,10357
|
178
178
|
aurelian/agents/paperqa/paperqa_config.py,sha256=CUj3BARcII8AippAYJXAq9MsqrQlkRm36ucHyuCGnII,4554
|
179
179
|
aurelian/agents/paperqa/paperqa_gradio.py,sha256=Thz82905TBeUQSiKcT40ZFs9MOqlN3YzYrJ5LNZPjHs,2844
|
@@ -187,7 +187,7 @@ aurelian/agents/phenopackets/phenopackets_gradio.py,sha256=KJdu5ZIgyYhAvpQLQ012J
|
|
187
187
|
aurelian/agents/phenopackets/phenopackets_mcp.py,sha256=PzhqNW6RC9E5jRG9xBzMGVP3u-tQmTt6Idq_zDAeEsE,4677
|
188
188
|
aurelian/agents/phenopackets/phenopackets_tools.py,sha256=3U8mjA_mi3K6Sb5VOSfT3Z-ytTx2cuz8zFLnFxxp-U8,4052
|
189
189
|
aurelian/agents/rag/__init__.py,sha256=eqnU5tVCH52qW5KKSAgUzhh7WDYl-HZb84j-V5fs48g,749
|
190
|
-
aurelian/agents/rag/rag_agent.py,sha256=
|
190
|
+
aurelian/agents/rag/rag_agent.py,sha256=vkOsAwDWyt-uexqdUuHQ1QehLiYjk8P8E83QK61f9-0,2554
|
191
191
|
aurelian/agents/rag/rag_config.py,sha256=M5q56xOp7ZfK21mi0gOCJP8dXiWjPvbTHmv-36YyVq8,2692
|
192
192
|
aurelian/agents/rag/rag_gradio.py,sha256=Vl9GicDP0xlL7126RUHx9f0loQGa_JnFwN0QtOT_58w,1844
|
193
193
|
aurelian/agents/rag/rag_mcp.py,sha256=-o0c868DZdqfB38QOHFDqGHrwyWqI7vAK6aNAtDP3XA,2543
|
@@ -208,15 +208,15 @@ aurelian/agents/talisman/run_talisman.py,sha256=K_GX9eqA2wrhXIDjtTfpCh7UHRObniSY
|
|
208
208
|
aurelian/agents/talisman/talisman_agent.py,sha256=KBvCCkzl-j_PObfMBrsyXg3kvCDmCpi2DAOnuaURdMI,6641
|
209
209
|
aurelian/agents/talisman/talisman_config.py,sha256=bYjgMecVrKXwwZwv7n7Leseks6DFEfqVEZF9MqgoShQ,2301
|
210
210
|
aurelian/agents/talisman/talisman_gradio.py,sha256=ogpFwnxVngvu5UmQ1GKz2JdbpCWlIK7duQDLJGisWs8,1617
|
211
|
-
aurelian/agents/talisman/talisman_mcp.py,sha256=
|
211
|
+
aurelian/agents/talisman/talisman_mcp.py,sha256=yQbLR6ITvl3qsV-p4nnqEDYW_R5qRyQNl56CkEWiY8k,2189
|
212
212
|
aurelian/agents/talisman/talisman_tools.py,sha256=ZzvpFxZBXpeZrIFV9aqtwVqa6O3z_5WvUReWOHh-aS4,42256
|
213
213
|
aurelian/agents/ubergraph/__init__.py,sha256=Nl81e1H7XKBSQ2nIHoY0UCHgcOW5N-PJ1AugKh_YGOs,767
|
214
|
-
aurelian/agents/ubergraph/ubergraph_agent.py,sha256=
|
214
|
+
aurelian/agents/ubergraph/ubergraph_agent.py,sha256=dW1IG35w7OgNgC5SDgNFB6K2RJCsRrfnTRd2nqrU9Tg,3066
|
215
215
|
aurelian/agents/ubergraph/ubergraph_config.py,sha256=Fi2hFVu92v55IinNYFlLjdvt9THXtRFPkSEcXtTrC10,2774
|
216
216
|
aurelian/agents/ubergraph/ubergraph_gradio.py,sha256=Gig_3AK0B4AkfvjlNklHkr87z2vcphll2I9DLgfdmdU,1372
|
217
217
|
aurelian/agents/ubergraph/ubergraph_mcp.py,sha256=p_YbEkSF4yN0T5OJ8FKIkuOtutOYvFL3TJDtJydSnws,2475
|
218
|
-
aurelian/agents/ubergraph/ubergraph_tools.py,sha256=
|
219
|
-
aurelian/agents/uniprot/__init__.py,sha256=
|
218
|
+
aurelian/agents/ubergraph/ubergraph_tools.py,sha256=OtyqOyRviuBInCuMwK5dn1jaFJRJIZq6QFImqK3uFWk,3909
|
219
|
+
aurelian/agents/uniprot/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
220
220
|
aurelian/agents/uniprot/uniprot_agent.py,sha256=KMTRKGVpRpSchz7YEShh9ZSSGHzmeaGEUaNFKJPDWSI,1648
|
221
221
|
aurelian/agents/uniprot/uniprot_config.py,sha256=YhL265Z0GnTeXINHawe5iMcpR2ETLmdY3XhNXcYIc8w,1404
|
222
222
|
aurelian/agents/uniprot/uniprot_evals.py,sha256=aZAZAOYFfvywqWuWV1-6p3PpXCxEl_ZkHppl88z5GUw,3178
|
@@ -227,11 +227,13 @@ aurelian/agents/web/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSu
|
|
227
227
|
aurelian/agents/web/web_config.py,sha256=uk-etu-DzYgeuS2zBs0SVfX_BvZ6QGs0X5PFsf1NR-Q,675
|
228
228
|
aurelian/agents/web/web_gradio.py,sha256=T7qzuRuBaWCYckWjpLu3L0LzHPLEKkxUYp2rj-Og_ms,1334
|
229
229
|
aurelian/agents/web/web_mcp.py,sha256=3mrUlxBqeMSOmtpnD2wWedsOiRJbtveEnbyJqQdfEXQ,1163
|
230
|
-
aurelian/agents/web/web_tools.py,sha256=
|
230
|
+
aurelian/agents/web/web_tools.py,sha256=oSS8MFxFqtcPfdEhmEuuiRKW8_NTg3ktLxahlF8h0Ec,4645
|
231
231
|
aurelian/chat.py,sha256=hg9eGKiz_NAjwG5jNGwNqoFrhhx029XX3dWdMRrk-EU,563
|
232
|
-
aurelian/cli.py,sha256
|
232
|
+
aurelian/cli.py,sha256=-6r3w8H43fhoHrkzn3GQmpQ37McsFHjWP5wZIrnk0gQ,34856
|
233
233
|
aurelian/dependencies/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
234
234
|
aurelian/dependencies/workdir.py,sha256=G_eGlxKpHRjO3EL2hHN8lvtticgSZvJe300KkJP4vZQ,2228
|
235
|
+
aurelian/evaluators/model.py,sha256=USfoHcYTMTlPJaM9-BPksb3asBoDd7amqSnHIbg9YYs,253
|
236
|
+
aurelian/evaluators/substring_evaluator.py,sha256=cx1fF3f5FulEeD9iTkgtwo-zByt5qgdmk1XKWJ1_eqQ,1039
|
235
237
|
aurelian/mcp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
236
238
|
aurelian/mcp/amigo_mcp_test.py,sha256=TtlYU-5AKcXf2XubFUNpZE2RxFHYi_cVbtte6KJQnzE,2902
|
237
239
|
aurelian/mcp/config_generator.py,sha256=QIaLqURiuOPgGfOImItf89d4ZltYonpybzAcO2vjA2Y,4350
|
@@ -246,7 +248,7 @@ aurelian/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
246
248
|
aurelian/tools/web/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
247
249
|
aurelian/tools/web/url_download.py,sha256=Tpg41yx4Sd3dToV-kGBZggwYUq3hmeLwJttSQrnqz4M,1435
|
248
250
|
aurelian/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
249
|
-
aurelian/utils/async_utils.py,sha256=
|
251
|
+
aurelian/utils/async_utils.py,sha256=mqjYPr8RlXlIXKYRgQ95ZcGTbdIeOw4PHvr37Clopd0,417
|
250
252
|
aurelian/utils/data_utils.py,sha256=LFuSKWtApLJxFGuHLG4-Zhw42cbaQK0juCEXD44b3S4,1047
|
251
253
|
aurelian/utils/documentation_manager.py,sha256=uvAnI_N1V1ITQX53ytOSgvDLbV0IIsSkxpKDg0y3E4g,1767
|
252
254
|
aurelian/utils/doi_fetcher.py,sha256=BNIsYaS9cb2uOSY0jxdjnZAFI2VSk2odzP4ppz3ToHg,8553
|
@@ -257,8 +259,8 @@ aurelian/utils/pubmed_utils.py,sha256=Gk00lu1Lv0GRSNeF5M4zplp3UMSpe5byCaVKCJimUH
|
|
257
259
|
aurelian/utils/pytest_report_to_markdown.py,sha256=WH1NlkVYj0UfUqpXjRD1KMpkMgEW3qev3fDdPvZG9Yw,1406
|
258
260
|
aurelian/utils/robot_ontology_utils.py,sha256=aaRe9eyLgJCtj1EfV13v4Q7khFTWzUoFFEE_lizGuGg,3591
|
259
261
|
aurelian/utils/search_utils.py,sha256=9MloT3SzOE4JsElsYlCznp9N6fv_OQK7YWOU8MIy1WU,2818
|
260
|
-
aurelian-0.
|
261
|
-
aurelian-0.
|
262
|
-
aurelian-0.
|
263
|
-
aurelian-0.
|
264
|
-
aurelian-0.
|
262
|
+
aurelian-0.4.2.dist-info/LICENSE,sha256=FB6RpUUfbUeKS4goWrvpp1QmOtyywrMiNBsYPMlLT3A,1086
|
263
|
+
aurelian-0.4.2.dist-info/METADATA,sha256=Wtded6_NxBHSXTCFxjUcXUrbLz00vOQgoy7xsHPM8YM,3557
|
264
|
+
aurelian-0.4.2.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
265
|
+
aurelian-0.4.2.dist-info/entry_points.txt,sha256=EnGehbtRm0YmhdfwfcoGJjVG3Man-zgKvob20fTIBik,102
|
266
|
+
aurelian-0.4.2.dist-info/RECORD,,
|
File without changes
|
File without changes
|