aiagents4pharma 1.30.2__py3-none-any.whl → 1.30.4__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.
- aiagents4pharma/talk2scholars/__init__.py +2 -0
- aiagents4pharma/talk2scholars/agents/__init__.py +8 -0
- aiagents4pharma/talk2scholars/configs/__init__.py +2 -0
- aiagents4pharma/talk2scholars/configs/agents/__init__.py +2 -0
- aiagents4pharma/talk2scholars/configs/agents/talk2scholars/__init__.py +2 -0
- aiagents4pharma/talk2scholars/configs/app/__init__.py +2 -0
- aiagents4pharma/talk2scholars/configs/tools/__init__.py +9 -0
- aiagents4pharma/talk2scholars/state/__init__.py +4 -2
- aiagents4pharma/talk2scholars/tests/test_s2_multi.py +10 -8
- aiagents4pharma/talk2scholars/tests/test_s2_search.py +9 -5
- aiagents4pharma/talk2scholars/tests/test_s2_single.py +7 -7
- aiagents4pharma/talk2scholars/tests/test_zotero_path.py +25 -11
- aiagents4pharma/talk2scholars/tests/test_zotero_read.py +49 -35
- aiagents4pharma/talk2scholars/tests/test_zotero_write.py +10 -10
- aiagents4pharma/talk2scholars/tools/__init__.py +3 -0
- aiagents4pharma/talk2scholars/tools/pdf/__init__.py +4 -2
- aiagents4pharma/talk2scholars/tools/s2/__init__.py +9 -0
- aiagents4pharma/talk2scholars/tools/s2/multi_paper_rec.py +9 -135
- aiagents4pharma/talk2scholars/tools/s2/search.py +8 -114
- aiagents4pharma/talk2scholars/tools/s2/single_paper_rec.py +8 -126
- aiagents4pharma/talk2scholars/tools/s2/utils/__init__.py +7 -0
- aiagents4pharma/talk2scholars/tools/s2/utils/multi_helper.py +194 -0
- aiagents4pharma/talk2scholars/tools/s2/utils/search_helper.py +175 -0
- aiagents4pharma/talk2scholars/tools/s2/utils/single_helper.py +186 -0
- aiagents4pharma/talk2scholars/tools/zotero/__init__.py +2 -0
- aiagents4pharma/talk2scholars/tools/zotero/utils/__init__.py +5 -0
- aiagents4pharma/talk2scholars/tools/zotero/utils/read_helper.py +167 -0
- aiagents4pharma/talk2scholars/tools/zotero/utils/review_helper.py +78 -0
- aiagents4pharma/talk2scholars/tools/zotero/utils/write_helper.py +197 -0
- aiagents4pharma/talk2scholars/tools/zotero/utils/zotero_path.py +1 -1
- aiagents4pharma/talk2scholars/tools/zotero/zotero_read.py +9 -136
- aiagents4pharma/talk2scholars/tools/zotero/zotero_review.py +14 -48
- aiagents4pharma/talk2scholars/tools/zotero/zotero_write.py +22 -147
- {aiagents4pharma-1.30.2.dist-info → aiagents4pharma-1.30.4.dist-info}/METADATA +1 -1
- {aiagents4pharma-1.30.2.dist-info → aiagents4pharma-1.30.4.dist-info}/RECORD +38 -31
- {aiagents4pharma-1.30.2.dist-info → aiagents4pharma-1.30.4.dist-info}/WHEEL +0 -0
- {aiagents4pharma-1.30.2.dist-info → aiagents4pharma-1.30.4.dist-info}/licenses/LICENSE +0 -0
- {aiagents4pharma-1.30.2.dist-info → aiagents4pharma-1.30.4.dist-info}/top_level.txt +0 -0
@@ -13,8 +13,8 @@ from langgraph.prebuilt import InjectedState
|
|
13
13
|
from langgraph.types import Command, interrupt
|
14
14
|
from pydantic import BaseModel, Field
|
15
15
|
from .utils.zotero_path import fetch_papers_for_save
|
16
|
+
from .utils.review_helper import ReviewData
|
16
17
|
|
17
|
-
# pylint: disable=R0914,R0911,R0912,R0915
|
18
18
|
# Configure logging
|
19
19
|
logging.basicConfig(level=logging.INFO)
|
20
20
|
logger = logging.getLogger(__name__)
|
@@ -71,43 +71,12 @@ def zotero_review(
|
|
71
71
|
"Please retrieve papers using Zotero Read or Semantic Scholar first."
|
72
72
|
)
|
73
73
|
|
74
|
-
#
|
75
|
-
|
76
|
-
for paper_id, paper in list(fetched_papers.items())[
|
77
|
-
:5
|
78
|
-
]: # Limit to 5 papers for readability
|
79
|
-
logger.info("Paper ID: %s", paper_id)
|
80
|
-
title = paper.get("Title", "N/A")
|
81
|
-
authors = ", ".join(
|
82
|
-
[author.split(" (ID: ")[0] for author in paper.get("Authors", [])[:2]]
|
83
|
-
)
|
84
|
-
if len(paper.get("Authors", [])) > 2:
|
85
|
-
authors += " et al."
|
86
|
-
papers_summary.append(f"- {title} by {authors}")
|
87
|
-
|
88
|
-
if len(fetched_papers) > 5:
|
89
|
-
papers_summary.append(f"... and {len(fetched_papers) - 5} more papers")
|
90
|
-
|
91
|
-
papers_preview = "\n".join(papers_summary)
|
92
|
-
total_papers = len(fetched_papers)
|
93
|
-
|
94
|
-
# Prepare review information
|
95
|
-
review_info = {
|
96
|
-
"action": "save_to_zotero",
|
97
|
-
"collection_path": collection_path,
|
98
|
-
"total_papers": total_papers,
|
99
|
-
"papers_preview": papers_preview,
|
100
|
-
"message": (
|
101
|
-
f"Would you like to save {total_papers} papers to Zotero "
|
102
|
-
f"collection '{collection_path}'? Please respond with a structured decision "
|
103
|
-
f"using one of the following options: 'approve', 'reject', or 'custom' "
|
104
|
-
f"(with a custom_path)."
|
105
|
-
),
|
106
|
-
}
|
74
|
+
# Create review data object to organize variables
|
75
|
+
review_data = ReviewData(collection_path, fetched_papers, tool_call_id, state)
|
107
76
|
|
108
77
|
try:
|
109
78
|
# Interrupt the graph to get human approval
|
110
|
-
human_review = interrupt(review_info)
|
79
|
+
human_review = interrupt(review_data.review_info)
|
111
80
|
# Process human response using structured output via LLM
|
112
81
|
llm_model = state.get("llm_model")
|
113
82
|
if llm_model is None:
|
@@ -125,15 +94,12 @@ def zotero_review(
|
|
125
94
|
update={
|
126
95
|
"messages": [
|
127
96
|
ToolMessage(
|
128
|
-
content=(
|
129
|
-
f"Human approved saving {total_papers} papers to Zotero "
|
130
|
-
f"collection '{collection_path}'."
|
131
|
-
),
|
97
|
+
content=review_data.get_approval_message(),
|
132
98
|
tool_call_id=tool_call_id,
|
133
99
|
)
|
134
100
|
],
|
135
101
|
"zotero_write_approval_status": {
|
136
|
-
"collection_path": collection_path,
|
102
|
+
"collection_path": review_data.collection_path,
|
137
103
|
"approved": True,
|
138
104
|
},
|
139
105
|
}
|
@@ -146,9 +112,8 @@ def zotero_review(
|
|
146
112
|
update={
|
147
113
|
"messages": [
|
148
114
|
ToolMessage(
|
149
|
-
content=(
|
150
|
-
|
151
|
-
f"collection '{decision_response.custom_path}'."
|
115
|
+
content=review_data.get_custom_path_approval_message(
|
116
|
+
decision_response.custom_path
|
152
117
|
),
|
153
118
|
tool_call_id=tool_call_id,
|
154
119
|
)
|
@@ -180,19 +145,20 @@ def zotero_review(
|
|
180
145
|
"messages": [
|
181
146
|
ToolMessage(
|
182
147
|
content=(
|
183
|
-
f"REVIEW REQUIRED: Would you like to save
|
184
|
-
f"to Zotero collection
|
185
|
-
f"
|
148
|
+
f"REVIEW REQUIRED: Would you like to save "
|
149
|
+
f"{review_data.total_papers} papers to Zotero collection "
|
150
|
+
f"'{review_data.collection_path}'?\n\n"
|
151
|
+
f"Papers to save:\n{review_data.papers_preview}\n\n"
|
186
152
|
"Please respond with 'Yes' to confirm or 'No' to cancel."
|
187
153
|
),
|
188
154
|
tool_call_id=tool_call_id,
|
189
155
|
)
|
190
156
|
],
|
191
157
|
"zotero_write_approval_status": {
|
192
|
-
"collection_path": collection_path,
|
158
|
+
"collection_path": review_data.collection_path,
|
193
159
|
"papers_reviewed": True,
|
194
160
|
"approved": False, # Not approved yet
|
195
|
-
"papers_count": total_papers,
|
161
|
+
"papers_count": review_data.total_papers,
|
196
162
|
},
|
197
163
|
}
|
198
164
|
)
|
@@ -6,22 +6,15 @@ This tool is used to save fetched papers to Zotero library after human approval.
|
|
6
6
|
|
7
7
|
import logging
|
8
8
|
from typing import Annotated, Any
|
9
|
-
import hydra
|
10
|
-
from pyzotero import zotero
|
11
9
|
from langchain_core.messages import ToolMessage
|
12
10
|
from langchain_core.tools import tool
|
13
11
|
from langchain_core.tools.base import InjectedToolCallId
|
14
12
|
from langgraph.types import Command
|
15
13
|
from langgraph.prebuilt import InjectedState
|
16
14
|
from pydantic import BaseModel, Field
|
17
|
-
from .utils.
|
18
|
-
find_or_create_collection,
|
19
|
-
fetch_papers_for_save,
|
20
|
-
)
|
15
|
+
from .utils.write_helper import ZoteroWriteData
|
21
16
|
|
22
17
|
|
23
|
-
# pylint: disable=R0914,R0911,R0912,R0915
|
24
|
-
|
25
18
|
# Configure logging
|
26
19
|
logging.basicConfig(level=logging.INFO)
|
27
20
|
logger = logging.getLogger(__name__)
|
@@ -61,155 +54,37 @@ def zotero_write(
|
|
61
54
|
Returns:
|
62
55
|
Command[Any]: The save results and related information.
|
63
56
|
"""
|
64
|
-
#
|
65
|
-
|
66
|
-
cfg = hydra.compose(
|
67
|
-
config_name="config", overrides=["tools/zotero_write=default"]
|
68
|
-
)
|
69
|
-
cfg = cfg.tools.zotero_write
|
70
|
-
logger.info("Loaded configuration for Zotero write tool")
|
71
|
-
logger.info(
|
72
|
-
"Saving fetched papers to Zotero under collection path: %s", collection_path
|
73
|
-
)
|
74
|
-
|
75
|
-
# Initialize Zotero client
|
76
|
-
zot = zotero.Zotero(cfg.user_id, cfg.library_type, cfg.api_key)
|
77
|
-
|
78
|
-
# Use our utility function to fetch papers from state
|
79
|
-
fetched_papers = fetch_papers_for_save(state)
|
80
|
-
|
81
|
-
if not fetched_papers:
|
82
|
-
raise ValueError(
|
83
|
-
"No fetched papers were found to save. "
|
84
|
-
"Please retrieve papers using Zotero Read or Semantic Scholar first."
|
85
|
-
)
|
86
|
-
|
87
|
-
# Normalize the requested collection path
|
88
|
-
normalized_path = collection_path.rstrip("/").lower()
|
89
|
-
|
90
|
-
# Use our utility function to find or optionally create the collection
|
91
|
-
# First try to find the exact collection
|
92
|
-
matched_collection_key = find_or_create_collection(
|
93
|
-
zot, normalized_path, create_missing=False # First try without creating
|
94
|
-
)
|
57
|
+
# Create write data object to organize variables
|
58
|
+
write_data = ZoteroWriteData(tool_call_id, collection_path, state)
|
95
59
|
|
96
|
-
|
97
|
-
#
|
98
|
-
|
99
|
-
collection_names = [col["data"]["name"] for col in available_collections]
|
100
|
-
names_display = ", ".join(collection_names)
|
60
|
+
try:
|
61
|
+
# Process the write operation
|
62
|
+
results = write_data.process_write()
|
101
63
|
|
102
64
|
return Command(
|
103
65
|
update={
|
104
66
|
"messages": [
|
105
67
|
ToolMessage(
|
106
|
-
content=
|
107
|
-
f"Error: The collection path '{collection_path}' does "
|
108
|
-
f"not exist in Zotero. "
|
109
|
-
f"Available collections are: {names_display}. "
|
110
|
-
f"Please try saving to one of these existing collections."
|
111
|
-
),
|
68
|
+
content=results["content"],
|
112
69
|
tool_call_id=tool_call_id,
|
70
|
+
artifact=results["fetched_papers"],
|
113
71
|
)
|
114
72
|
],
|
73
|
+
"zotero_write_approval_status": {}, # Clear approval info
|
115
74
|
}
|
116
75
|
)
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
journal_name = paper.get("Journal Name", "N/A")
|
129
|
-
journal_volume = paper.get("Journal Volume", "N/A")
|
130
|
-
journal_pages = paper.get("Journal Pages", "N/A")
|
131
|
-
|
132
|
-
# Convert Authors list to Zotero format
|
133
|
-
authors = [
|
134
|
-
(
|
135
|
-
{
|
136
|
-
"creatorType": "author",
|
137
|
-
"firstName": name.split(" ")[0],
|
138
|
-
"lastName": " ".join(name.split(" ")[1:]),
|
76
|
+
except ValueError as e:
|
77
|
+
# Only handle collection not found errors with a Command
|
78
|
+
if "collection path" in str(e).lower():
|
79
|
+
return Command(
|
80
|
+
update={
|
81
|
+
"messages": [
|
82
|
+
ToolMessage(
|
83
|
+
content=str(e),
|
84
|
+
tool_call_id=tool_call_id,
|
85
|
+
)
|
86
|
+
],
|
139
87
|
}
|
140
|
-
if " " in name
|
141
|
-
else {"creatorType": "author", "lastName": name}
|
142
88
|
)
|
143
|
-
|
144
|
-
|
145
|
-
]
|
146
|
-
]
|
147
|
-
|
148
|
-
zotero_items.append(
|
149
|
-
{
|
150
|
-
"itemType": "journalArticle",
|
151
|
-
"title": title,
|
152
|
-
"abstractNote": abstract,
|
153
|
-
"date": publication_date, # Now saving full publication date
|
154
|
-
"url": url,
|
155
|
-
"extra": f"Paper ID: {paper_id}\nCitations: {citations}",
|
156
|
-
"collections": [matched_collection_key],
|
157
|
-
"publicationTitle": (
|
158
|
-
publication_venue if publication_venue != "N/A" else venue
|
159
|
-
), # Use publication venue if available
|
160
|
-
"journalAbbreviation": journal_name, # Save Journal Name
|
161
|
-
"volume": (
|
162
|
-
journal_volume if journal_volume != "N/A" else None
|
163
|
-
), # Save Journal Volume
|
164
|
-
"pages": (
|
165
|
-
journal_pages if journal_pages != "N/A" else None
|
166
|
-
), # Save Journal Pages
|
167
|
-
"creators": authors, # Save authors list properly
|
168
|
-
}
|
169
|
-
)
|
170
|
-
|
171
|
-
# Save items to Zotero
|
172
|
-
try:
|
173
|
-
response = zot.create_items(zotero_items)
|
174
|
-
logger.info("Papers successfully saved to Zotero: %s", response)
|
175
|
-
except Exception as e:
|
176
|
-
logger.error("Error saving to Zotero: %s", str(e))
|
177
|
-
raise RuntimeError(f"Error saving papers to Zotero: {str(e)}") from e
|
178
|
-
|
179
|
-
# Get the collection name for better feedback
|
180
|
-
collections = zot.collections()
|
181
|
-
collection_name = ""
|
182
|
-
for col in collections:
|
183
|
-
if col["key"] == matched_collection_key:
|
184
|
-
collection_name = col["data"]["name"]
|
185
|
-
break
|
186
|
-
|
187
|
-
content = (
|
188
|
-
f"Save was successful. Papers have been saved to Zotero collection '{collection_name}' "
|
189
|
-
f"with the requested path '{collection_path}'.\n"
|
190
|
-
)
|
191
|
-
content += "Summary of saved papers:\n"
|
192
|
-
content += f"Number of articles saved: {len(fetched_papers)}\n"
|
193
|
-
content += f"Query: {state.get('query', 'N/A')}\n"
|
194
|
-
top_papers = list(fetched_papers.values())[:2]
|
195
|
-
top_papers_info = "\n".join(
|
196
|
-
[
|
197
|
-
f"{i+1}. {paper.get('Title', 'N/A')} ({paper.get('URL', 'N/A')})"
|
198
|
-
for i, paper in enumerate(top_papers)
|
199
|
-
]
|
200
|
-
)
|
201
|
-
content += "Here are a few of these articles:\n" + top_papers_info
|
202
|
-
|
203
|
-
# Clear the approval info so it's not reused
|
204
|
-
return Command(
|
205
|
-
update={
|
206
|
-
"messages": [
|
207
|
-
ToolMessage(
|
208
|
-
content=content,
|
209
|
-
tool_call_id=tool_call_id,
|
210
|
-
artifact=fetched_papers,
|
211
|
-
)
|
212
|
-
],
|
213
|
-
"zotero_write_approval_status": {}, # Clear approval info
|
214
|
-
}
|
215
|
-
)
|
89
|
+
# Let other ValueErrors (like no papers) propagate up
|
90
|
+
raise
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: aiagents4pharma
|
3
|
-
Version: 1.30.
|
3
|
+
Version: 1.30.4
|
4
4
|
Summary: AI Agents for drug discovery, drug development, and other pharmaceutical R&D.
|
5
5
|
Classifier: Programming Language :: Python :: 3
|
6
6
|
Classifier: License :: OSI Approved :: MIT License
|
@@ -134,17 +134,17 @@ aiagents4pharma/talk2knowledgegraphs/utils/enrichments/ollama.py,sha256=8eoxR-VH
|
|
134
134
|
aiagents4pharma/talk2knowledgegraphs/utils/enrichments/pubchem_strings.py,sha256=qsVlDCGGDkUCv-R5_xFGhrtLS7P0CfagnM2qATwiOFM,1333
|
135
135
|
aiagents4pharma/talk2knowledgegraphs/utils/extractions/__init__.py,sha256=7gwwtfzKhB8GuOBD47XRi0NprwEXkOzwNl5eeu-hDTI,86
|
136
136
|
aiagents4pharma/talk2knowledgegraphs/utils/extractions/pcst.py,sha256=m5p0yoJb7I19ua5yeQfXPf7c4r6S1XPwttsrM7Qoy94,9336
|
137
|
-
aiagents4pharma/talk2scholars/__init__.py,sha256=
|
138
|
-
aiagents4pharma/talk2scholars/agents/__init__.py,sha256=
|
137
|
+
aiagents4pharma/talk2scholars/__init__.py,sha256=NOZxTklAH1j1ggu97Ib8Xn9LCKudEWt-8dx8w7yxVD8,180
|
138
|
+
aiagents4pharma/talk2scholars/agents/__init__.py,sha256=c_0Pk85bt-RfK5RMyALM3MXo3qXVMoYS7BOqM9wuFME,317
|
139
139
|
aiagents4pharma/talk2scholars/agents/main_agent.py,sha256=KdKbnc-5zxktLUkzEZHC3bvn8_iKa8Kk4So90i48cdE,3275
|
140
140
|
aiagents4pharma/talk2scholars/agents/paper_download_agent.py,sha256=wrK9CPy5evH56fyOZ2BlkBfY5aEj6tefc4jSDPVzYvs,3041
|
141
141
|
aiagents4pharma/talk2scholars/agents/pdf_agent.py,sha256=xt_bgCTVJ6jOCkhc_rHh8pngq4uS8kuNOevuP3eC-sA,3702
|
142
142
|
aiagents4pharma/talk2scholars/agents/s2_agent.py,sha256=ua1bjKE2HBKZuLnDn8me5fuV1lSvdZbwAlo3Yp27TT4,4659
|
143
143
|
aiagents4pharma/talk2scholars/agents/zotero_agent.py,sha256=f11kNqtyZnpBiIf3Fe9gU0WqQ0-ohhngTKl-o0u997Q,4442
|
144
|
-
aiagents4pharma/talk2scholars/configs/__init__.py,sha256=
|
144
|
+
aiagents4pharma/talk2scholars/configs/__init__.py,sha256=Y9-4PxsNCMoxyyQgDSbPByJnO9wnyem5SYL3eOZt1HY,189
|
145
145
|
aiagents4pharma/talk2scholars/configs/config.yaml,sha256=-8X0_gTmjEuXAeIrnppw3Npy8HICelHZOvTKEScI-rs,596
|
146
|
-
aiagents4pharma/talk2scholars/configs/agents/__init__.py,sha256=
|
147
|
-
aiagents4pharma/talk2scholars/configs/agents/talk2scholars/__init__.py,sha256=
|
146
|
+
aiagents4pharma/talk2scholars/configs/agents/__init__.py,sha256=plv5Iw34gvbGZbRyJapvoOiiFXekRQIwjV_yy5AR_SI,104
|
147
|
+
aiagents4pharma/talk2scholars/configs/agents/talk2scholars/__init__.py,sha256=D94LW4cXLmJe4dNl5qoR9QN0JnBqGLbQDgDLqhCNUE0,213
|
148
148
|
aiagents4pharma/talk2scholars/configs/agents/talk2scholars/main_agent/__init__.py,sha256=fqQQ-GlRcbzru2KmEk3oMma0R6_SzGM8dOXzYeU4oVA,46
|
149
149
|
aiagents4pharma/talk2scholars/configs/agents/talk2scholars/main_agent/default.yaml,sha256=GZRqZoUy8eAWXyd9GJDh-A4mYSJOhnkid6TaIJTGBeU,1192
|
150
150
|
aiagents4pharma/talk2scholars/configs/agents/talk2scholars/paper_download_agent/__init__.py,sha256=fqQQ-GlRcbzru2KmEk3oMma0R6_SzGM8dOXzYeU4oVA,46
|
@@ -153,10 +153,10 @@ aiagents4pharma/talk2scholars/configs/agents/talk2scholars/s2_agent/__init__.py,
|
|
153
153
|
aiagents4pharma/talk2scholars/configs/agents/talk2scholars/s2_agent/default.yaml,sha256=UIYkr060IpoLHMXVPxGAjrkCJSjX7H0DzcFSasyW6sE,1185
|
154
154
|
aiagents4pharma/talk2scholars/configs/agents/talk2scholars/zotero_agent/__init__.py,sha256=fqQQ-GlRcbzru2KmEk3oMma0R6_SzGM8dOXzYeU4oVA,46
|
155
155
|
aiagents4pharma/talk2scholars/configs/agents/talk2scholars/zotero_agent/default.yaml,sha256=09nMAlI4CTLlss03trR0ZaEeLdABQfkwUUE6ZCK4WzY,718
|
156
|
-
aiagents4pharma/talk2scholars/configs/app/__init__.py,sha256=
|
156
|
+
aiagents4pharma/talk2scholars/configs/app/__init__.py,sha256=tXpOW3R4eAfNoqvoaHfabSG-DcMHmUGSTg_4zH_vlgw,94
|
157
157
|
aiagents4pharma/talk2scholars/configs/app/frontend/__init__.py,sha256=fqQQ-GlRcbzru2KmEk3oMma0R6_SzGM8dOXzYeU4oVA,46
|
158
158
|
aiagents4pharma/talk2scholars/configs/app/frontend/default.yaml,sha256=A6nYjrgzEyRv5JYsGN7oqNX4-tufMBZ6mg-A7bMX6V4,906
|
159
|
-
aiagents4pharma/talk2scholars/configs/tools/__init__.py,sha256=
|
159
|
+
aiagents4pharma/talk2scholars/configs/tools/__init__.py,sha256=6pHPF0ZGY78SD6KPMukd_xrfO1ocVXcyrsrB-kz-OnI,402
|
160
160
|
aiagents4pharma/talk2scholars/configs/tools/download_arxiv_paper/__init__.py,sha256=fqQQ-GlRcbzru2KmEk3oMma0R6_SzGM8dOXzYeU4oVA,46
|
161
161
|
aiagents4pharma/talk2scholars/configs/tools/multi_paper_recommendation/__init__.py,sha256=fqQQ-GlRcbzru2KmEk3oMma0R6_SzGM8dOXzYeU4oVA,46
|
162
162
|
aiagents4pharma/talk2scholars/configs/tools/multi_paper_recommendation/default.yaml,sha256=comNgL9hRpH--IWuEsrN6hV5WdrJmh-ZsRh7hbryVhg,631
|
@@ -171,7 +171,7 @@ aiagents4pharma/talk2scholars/configs/tools/zotero_read/__init__.py,sha256=fqQQ-
|
|
171
171
|
aiagents4pharma/talk2scholars/configs/tools/zotero_read/default.yaml,sha256=ifOtX8Huj1LPHF_rRe1JxWgrDaLiKg6HVoQen_1R1Ls,1223
|
172
172
|
aiagents4pharma/talk2scholars/configs/tools/zotero_write/__inti__.py,sha256=fqQQ-GlRcbzru2KmEk3oMma0R6_SzGM8dOXzYeU4oVA,46
|
173
173
|
aiagents4pharma/talk2scholars/configs/tools/zotero_write/default.yaml,sha256=gB7y7pznviQUzu49Eu4ONNkjQjT8wPKNSw6S_vfd9kI,1222
|
174
|
-
aiagents4pharma/talk2scholars/state/__init__.py,sha256=
|
174
|
+
aiagents4pharma/talk2scholars/state/__init__.py,sha256=ReScKLpEvedq4P6ww52NRQS0Xr6SSQV7hqoQ83Mt75U,138
|
175
175
|
aiagents4pharma/talk2scholars/state/state_talk2scholars.py,sha256=8ZFfv55tXO3LU-2DzKC5JjH4_ryodgu-H1ieKBmVFvw,2844
|
176
176
|
aiagents4pharma/talk2scholars/tests/__init__.py,sha256=U3PsTiUZaUBD1IZanFGkDIOdFieDVJtGKQ5-woYUo8c,45
|
177
177
|
aiagents4pharma/talk2scholars/tests/test_llm_main_integration.py,sha256=FBRqS06IKJYFOudQEHQr-9oJ4tftkH-gTCowTAqwWSg,3686
|
@@ -183,39 +183,46 @@ aiagents4pharma/talk2scholars/tests/test_question_and_answer_tool.py,sha256=te6w
|
|
183
183
|
aiagents4pharma/talk2scholars/tests/test_routing_logic.py,sha256=g79tG68ZrUOL3-duCCJwvFK6OieR5KedRf3yTUDqIFk,2784
|
184
184
|
aiagents4pharma/talk2scholars/tests/test_s2_agent.py,sha256=BhW1wGc-wUPS4fwNBQRtBXJaJ_i7L6t_G9Bq57fK7rI,7784
|
185
185
|
aiagents4pharma/talk2scholars/tests/test_s2_display.py,sha256=w1TqgEdl9WpW_A2Ud1slfI5fkRFkKtKadAlkEfSLOZk,2247
|
186
|
-
aiagents4pharma/talk2scholars/tests/test_s2_multi.py,sha256=
|
186
|
+
aiagents4pharma/talk2scholars/tests/test_s2_multi.py,sha256=VCTfexhtX7FgWOBS0YtSm1zghbByZnni1NBLGVTJVGI,11166
|
187
187
|
aiagents4pharma/talk2scholars/tests/test_s2_query.py,sha256=hEcBt142nn_bKV9lor__Yk4LusgE1tN5dA-qpT606Bc,2443
|
188
188
|
aiagents4pharma/talk2scholars/tests/test_s2_retrieve.py,sha256=YtA2nbPRtoSR7mPqEjqLF5ERGVzTfeULztsNoCI48X8,2003
|
189
|
-
aiagents4pharma/talk2scholars/tests/test_s2_search.py,sha256=
|
190
|
-
aiagents4pharma/talk2scholars/tests/test_s2_single.py,sha256=
|
189
|
+
aiagents4pharma/talk2scholars/tests/test_s2_search.py,sha256=mCGpoCYVn0SJ9BPcEjTz2MLy_K2XJIxvPngwsMoKijA,9945
|
190
|
+
aiagents4pharma/talk2scholars/tests/test_s2_single.py,sha256=KjSh7V2cl1IuO_M9O6dj0vnMHr13H-xKxia_ZgT4qag,10313
|
191
191
|
aiagents4pharma/talk2scholars/tests/test_state.py,sha256=_iHXvoZnU_eruf8l1sQKBSCIVnxNkH_9VzkVtZZA6bY,384
|
192
192
|
aiagents4pharma/talk2scholars/tests/test_zotero_agent.py,sha256=fQDQj28uFNC1TyMPzNaNfDJacuw1_DqwGiX6IgliR3Y,6130
|
193
193
|
aiagents4pharma/talk2scholars/tests/test_zotero_human_in_the_loop.py,sha256=YelLQu9Y_r1SNQsC1xoLHJoJ3soIZtBt1MFbbNhY-Dg,10744
|
194
|
-
aiagents4pharma/talk2scholars/tests/test_zotero_path.py,sha256=
|
195
|
-
aiagents4pharma/talk2scholars/tests/test_zotero_read.py,sha256=
|
196
|
-
aiagents4pharma/talk2scholars/tests/test_zotero_write.py,sha256=
|
197
|
-
aiagents4pharma/talk2scholars/tools/__init__.py,sha256=
|
194
|
+
aiagents4pharma/talk2scholars/tests/test_zotero_path.py,sha256=i1bS-5uSv25z4UFrc_W5rKZ0bwOg6ZK5cwLHMkjWgt8,18592
|
195
|
+
aiagents4pharma/talk2scholars/tests/test_zotero_read.py,sha256=ecu9C-RWaLNgmAFqGN8s7dzCrtODqXOSZDievzjtAfQ,15511
|
196
|
+
aiagents4pharma/talk2scholars/tests/test_zotero_write.py,sha256=qWlO0XoZJ6vxUxgisjYv9Np87CoTEDxiQBEOhdj9foo,6111
|
197
|
+
aiagents4pharma/talk2scholars/tools/__init__.py,sha256=c8pYHDqR9P0Frz2jWjbvyizfSTBMlMFzGsiQzx2KC9c,189
|
198
198
|
aiagents4pharma/talk2scholars/tools/paper_download/__init__.py,sha256=0XmPLEqCply536Y1uWksmHYjlgNWcmcMpZx63XvGEFI,413
|
199
199
|
aiagents4pharma/talk2scholars/tools/paper_download/abstract_downloader.py,sha256=nwVhRUqkdta3WLgd9roAWpx-bhJm3aAgJLx4RSYSJXQ,1327
|
200
200
|
aiagents4pharma/talk2scholars/tools/paper_download/arxiv_downloader.py,sha256=hM9fdbwtOxuW1mpAfmfbILTI7kSVALgrGpjC2vMsvf8,3970
|
201
201
|
aiagents4pharma/talk2scholars/tools/paper_download/download_arxiv_input.py,sha256=zndAnNFRBztuBK-tpW9UyYsGL8tB3gFjYhiTq6nzZu4,2203
|
202
|
-
aiagents4pharma/talk2scholars/tools/pdf/__init__.py,sha256=
|
202
|
+
aiagents4pharma/talk2scholars/tools/pdf/__init__.py,sha256=DPpOfON3AySko5EBBAe_3udOoSaAdQWNyGeNvJyV5R8,138
|
203
203
|
aiagents4pharma/talk2scholars/tools/pdf/question_and_answer.py,sha256=tNv0frCr0dxA0lfbwf5yudKRyWtbuRGMwqW5mk9u4eE,8797
|
204
|
-
aiagents4pharma/talk2scholars/tools/s2/__init__.py,sha256=
|
204
|
+
aiagents4pharma/talk2scholars/tools/s2/__init__.py,sha256=u_qh1bpDhVdyTr_S2wVfPwQ_lMz77NQ-ZDWtOP_PWzo,420
|
205
205
|
aiagents4pharma/talk2scholars/tools/s2/display_results.py,sha256=UR0PtEHGDpOhPH0Di5HT8-Fip2RkEMTJgzROsChb1gc,2959
|
206
|
-
aiagents4pharma/talk2scholars/tools/s2/multi_paper_rec.py,sha256=
|
206
|
+
aiagents4pharma/talk2scholars/tools/s2/multi_paper_rec.py,sha256=N6GwG3oCQFEcntpjTQObAELzM5OpZq0u9J9-gUWU2kc,2716
|
207
207
|
aiagents4pharma/talk2scholars/tools/s2/query_results.py,sha256=5yXuHqz5UKO9BbovEUnqgjcMvqVG4vp9VJO8Zaz5N1w,2029
|
208
208
|
aiagents4pharma/talk2scholars/tools/s2/retrieve_semantic_scholar_paper_id.py,sha256=llzMMnEQKeYVamJbF4_DTMx-BgVe79vwDcUIFGLrmUY,2615
|
209
|
-
aiagents4pharma/talk2scholars/tools/s2/search.py,sha256=
|
210
|
-
aiagents4pharma/talk2scholars/tools/s2/single_paper_rec.py,sha256=
|
211
|
-
aiagents4pharma/talk2scholars/tools/
|
212
|
-
aiagents4pharma/talk2scholars/tools/
|
213
|
-
aiagents4pharma/talk2scholars/tools/
|
214
|
-
aiagents4pharma/talk2scholars/tools/
|
215
|
-
aiagents4pharma/talk2scholars/tools/zotero/
|
216
|
-
aiagents4pharma/talk2scholars/tools/zotero/
|
217
|
-
aiagents4pharma
|
218
|
-
aiagents4pharma
|
219
|
-
aiagents4pharma
|
220
|
-
aiagents4pharma
|
221
|
-
aiagents4pharma
|
209
|
+
aiagents4pharma/talk2scholars/tools/s2/search.py,sha256=NGzo1rF5VJJuZJbSLDwy2f220wSh7DWEw6xT1qQA2V0,2452
|
210
|
+
aiagents4pharma/talk2scholars/tools/s2/single_paper_rec.py,sha256=7VivBGHcmaJZN7v7gYwddC-rfrDHaZo74pSNBYlJ2xU,2673
|
211
|
+
aiagents4pharma/talk2scholars/tools/s2/utils/__init__.py,sha256=wBTPVgiXbmIJUMouOQRwojgk5PJXeEinDJzHzEToZbU,229
|
212
|
+
aiagents4pharma/talk2scholars/tools/s2/utils/multi_helper.py,sha256=rrR0DRNeGHpYcONZS7oS-VCSWBL5zNALU4m7IF6Yxng,7268
|
213
|
+
aiagents4pharma/talk2scholars/tools/s2/utils/search_helper.py,sha256=_eP7q4ZTSWisEF4Stffe-IpR2MD9WrQ0u3jbbeJBRLU,6363
|
214
|
+
aiagents4pharma/talk2scholars/tools/s2/utils/single_helper.py,sha256=ahTDT0lp5VRZS5hLL3-hsHx4wB3LUVY2OBTCTEJyR3Y,6983
|
215
|
+
aiagents4pharma/talk2scholars/tools/zotero/__init__.py,sha256=wXiQILLq-utV35PkDUpm_F074mG9yRMyGQAFlr9UAOw,197
|
216
|
+
aiagents4pharma/talk2scholars/tools/zotero/zotero_read.py,sha256=B21TOdB1nR--2Ug6Zx7nYjAKfCbndMF4L-cWcHPBWII,2267
|
217
|
+
aiagents4pharma/talk2scholars/tools/zotero/zotero_review.py,sha256=iqwpolg7GWAjXizubLrPaAsgOpsOhKz-tFRyLOiBvC0,6325
|
218
|
+
aiagents4pharma/talk2scholars/tools/zotero/zotero_write.py,sha256=KnDcnUBB0lwMcxNpC3hsVnICWkj23MDAePdHlK-Kekk,3024
|
219
|
+
aiagents4pharma/talk2scholars/tools/zotero/utils/__init__.py,sha256=uIyKZSFB07-zd3vjS9ABL0r6fdBX9JHw60j8oUfxHQs,209
|
220
|
+
aiagents4pharma/talk2scholars/tools/zotero/utils/read_helper.py,sha256=6f2yu5admNZp7xw5VW2TFGF4wh_oyVn9aLaQF47FLMc,6038
|
221
|
+
aiagents4pharma/talk2scholars/tools/zotero/utils/review_helper.py,sha256=IPD1V9yrBYaDnRe7sR6PrpwR82OBJbA2P_Tc6RbxAbM,2748
|
222
|
+
aiagents4pharma/talk2scholars/tools/zotero/utils/write_helper.py,sha256=ALwLecy1QVebbsmXJiDj1GhGmyhq2R2tZlAyEl1vfhw,7410
|
223
|
+
aiagents4pharma/talk2scholars/tools/zotero/utils/zotero_path.py,sha256=oIrfbOySgts50ksHKyjcWjRkPRIS88g3Lc0v9mBkU8w,6375
|
224
|
+
aiagents4pharma-1.30.4.dist-info/licenses/LICENSE,sha256=IcIbyB1Hyk5ZDah03VNQvJkbNk2hkBCDqQ8qtnCvB4Q,1077
|
225
|
+
aiagents4pharma-1.30.4.dist-info/METADATA,sha256=0Sr-ukEvXz5sLl0PdoHYJ9bqFHjdScBvP75GSvxeUHc,13267
|
226
|
+
aiagents4pharma-1.30.4.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
|
227
|
+
aiagents4pharma-1.30.4.dist-info/top_level.txt,sha256=-AH8rMmrSnJtq7HaAObS78UU-cTCwvX660dSxeM7a0A,16
|
228
|
+
aiagents4pharma-1.30.4.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|