aiagents4pharma 1.22.4__py3-none-any.whl → 1.23.0__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.
Files changed (30) hide show
  1. aiagents4pharma/talk2scholars/agents/__init__.py +3 -2
  2. aiagents4pharma/talk2scholars/agents/main_agent.py +51 -4
  3. aiagents4pharma/talk2scholars/agents/zotero_agent.py +120 -0
  4. aiagents4pharma/talk2scholars/configs/agents/talk2scholars/__init__.py +1 -0
  5. aiagents4pharma/talk2scholars/configs/agents/talk2scholars/main_agent/default.yaml +39 -19
  6. aiagents4pharma/talk2scholars/configs/agents/talk2scholars/s2_agent/default.yaml +26 -0
  7. aiagents4pharma/talk2scholars/configs/agents/talk2scholars/zotero_agent/__init__.py +3 -0
  8. aiagents4pharma/talk2scholars/configs/agents/talk2scholars/zotero_agent/default.yaml +35 -0
  9. aiagents4pharma/talk2scholars/configs/config.yaml +3 -1
  10. aiagents4pharma/talk2scholars/configs/tools/__init__.py +1 -0
  11. aiagents4pharma/talk2scholars/configs/tools/zotero_read/__init__.py +3 -0
  12. aiagents4pharma/talk2scholars/configs/tools/zotero_read/default.yaml +15 -0
  13. aiagents4pharma/talk2scholars/state/state_talk2scholars.py +2 -0
  14. aiagents4pharma/talk2scholars/tests/test_call_s2.py +99 -0
  15. aiagents4pharma/talk2scholars/tests/test_call_zotero.py +93 -0
  16. aiagents4pharma/talk2scholars/tests/test_main_agent.py +6 -42
  17. aiagents4pharma/talk2scholars/tests/test_routing_logic.py +71 -0
  18. aiagents4pharma/talk2scholars/tests/test_zotero_agent.py +160 -0
  19. aiagents4pharma/talk2scholars/tests/test_zotero_tool.py +171 -0
  20. aiagents4pharma/talk2scholars/tools/__init__.py +3 -2
  21. aiagents4pharma/talk2scholars/tools/s2/multi_paper_rec.py +17 -2
  22. aiagents4pharma/talk2scholars/tools/s2/search.py +14 -2
  23. aiagents4pharma/talk2scholars/tools/s2/single_paper_rec.py +17 -2
  24. aiagents4pharma/talk2scholars/tools/zotero/__init__.py +5 -0
  25. aiagents4pharma/talk2scholars/tools/zotero/zotero_read.py +142 -0
  26. {aiagents4pharma-1.22.4.dist-info → aiagents4pharma-1.23.0.dist-info}/METADATA +26 -14
  27. {aiagents4pharma-1.22.4.dist-info → aiagents4pharma-1.23.0.dist-info}/RECORD +30 -18
  28. {aiagents4pharma-1.22.4.dist-info → aiagents4pharma-1.23.0.dist-info}/LICENSE +0 -0
  29. {aiagents4pharma-1.22.4.dist-info → aiagents4pharma-1.23.0.dist-info}/WHEEL +0 -0
  30. {aiagents4pharma-1.22.4.dist-info → aiagents4pharma-1.23.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,142 @@
1
+ #!/usr/bin/env python3
2
+
3
+ """
4
+ This tool is used to search for papers in Zotero library.
5
+ """
6
+
7
+ import logging
8
+ from typing import Annotated, Any
9
+ import hydra
10
+ from pyzotero import zotero
11
+ from langchain_core.messages import ToolMessage
12
+ from langchain_core.tools import tool
13
+ from langchain_core.tools.base import InjectedToolCallId
14
+ from langgraph.types import Command
15
+ from pydantic import BaseModel, Field
16
+
17
+ # Configure logging
18
+ logging.basicConfig(level=logging.INFO)
19
+ logger = logging.getLogger(__name__)
20
+
21
+
22
+ class ZoteroSearchInput(BaseModel):
23
+ """Input schema for the Zotero search tool."""
24
+
25
+ query: str = Field(
26
+ description="Search query string to find papers in Zotero library."
27
+ )
28
+ only_articles: bool = Field(
29
+ default=True,
30
+ description="Whether to only search for journal articles/" "conference papers.",
31
+ )
32
+ limit: int = Field(
33
+ default=2, description="Maximum number of results to return", ge=1, le=100
34
+ )
35
+ tool_call_id: Annotated[str, InjectedToolCallId]
36
+
37
+
38
+ # Load hydra configuration
39
+ with hydra.initialize(version_base=None, config_path="../../configs"):
40
+ cfg = hydra.compose(config_name="config", overrides=["tools/zotero_read=default"])
41
+ cfg = cfg.tools.zotero_read
42
+
43
+
44
+ @tool(args_schema=ZoteroSearchInput, parse_docstring=True)
45
+ def zotero_search_tool(
46
+ query: str,
47
+ only_articles: bool,
48
+ tool_call_id: Annotated[str, InjectedToolCallId],
49
+ limit: int = 2,
50
+ ) -> Command[Any]:
51
+ """
52
+ Use this tool to search and retrieve papers from Zotero library.
53
+
54
+ Args:
55
+ query (str): The search query string to find papers.
56
+ tool_call_id (Annotated[str, InjectedToolCallId]): The tool call ID.
57
+ limit (int, optional): The maximum number of results to return. Defaults to 2.
58
+
59
+ Returns:
60
+ Dict[str, Any]: The search results and related information.
61
+ """
62
+ logger.info(
63
+ "Searching Zotero for query: '%s' (only_articles: %s, limit: %d)",
64
+ query,
65
+ only_articles,
66
+ limit,
67
+ )
68
+
69
+ # Initialize Zotero client
70
+ zot = zotero.Zotero(cfg.user_id, cfg.library_type, cfg.api_key)
71
+
72
+ # Get items matching the query
73
+ items = zot.items(q=query, limit=min(limit, cfg.zotero.max_limit))
74
+ logger.info("Received %d items from Zotero", len(items))
75
+
76
+ # Define filter criteria
77
+ filter_item_types = cfg.zotero.filter_item_types if only_articles else []
78
+
79
+ # Filter and format papers
80
+ filtered_papers = {}
81
+
82
+ for item in items:
83
+ if not isinstance(item, dict):
84
+ continue
85
+
86
+ data = item.get("data")
87
+ if not isinstance(data, dict):
88
+ continue
89
+
90
+ item_type = data.get("itemType")
91
+ if only_articles and (
92
+ not item_type
93
+ or not isinstance(item_type, str)
94
+ or item_type not in filter_item_types
95
+ ):
96
+ continue
97
+
98
+ key = data.get("key")
99
+ if not key:
100
+ continue
101
+
102
+ filtered_papers[key] = {
103
+ "Title": data.get("title", "N/A"),
104
+ "Abstract": data.get("abstractNote", "N/A"),
105
+ "Date": data.get("date", "N/A"),
106
+ "URL": data.get("url", "N/A"),
107
+ "Type": item_type if isinstance(item_type, str) else "N/A",
108
+ }
109
+
110
+ if not filtered_papers:
111
+ logger.warning("No matching papers found for query: '%s'", query)
112
+
113
+ logger.info("Filtered %d items", len(filtered_papers))
114
+
115
+ # Prepare content with top 3 paper titles and types
116
+ top_papers = list(filtered_papers.values())[:2]
117
+ top_papers_info = "\n".join(
118
+ [
119
+ f"{i+1}. {paper['Title']} ({paper['Type']})"
120
+ for i, paper in enumerate(top_papers)
121
+ ]
122
+ )
123
+
124
+ content = "Retrieval was successful. Papers are attached as an artifact."
125
+ content += " And here is a summary of the retrieval results:\n"
126
+ content += f"Number of papers found: {len(filtered_papers)}\n"
127
+ content += f"Query: {query}\n"
128
+ content += "Top papers:\n" + top_papers_info
129
+
130
+ return Command(
131
+ update={
132
+ "zotero_read": filtered_papers,
133
+ "last_displayed_papers": "zotero_read",
134
+ "messages": [
135
+ ToolMessage(
136
+ content=content,
137
+ tool_call_id=tool_call_id,
138
+ artifact=filtered_papers,
139
+ )
140
+ ],
141
+ }
142
+ )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: aiagents4pharma
3
- Version: 1.22.4
3
+ Version: 1.23.0
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
@@ -36,6 +36,7 @@ Requires-Dist: pylint==3.3.1
36
36
  Requires-Dist: pypdf==5.2.0
37
37
  Requires-Dist: pytest==8.3.3
38
38
  Requires-Dist: pytest-asyncio==0.25.2
39
+ Requires-Dist: pyzotero==1.6.9
39
40
  Requires-Dist: streamlit==1.39.0
40
41
  Requires-Dist: sentence_transformers==3.3.1
41
42
  Requires-Dist: tabulate==0.9.0
@@ -59,7 +60,6 @@ Requires-Dist: streamlit-feedback
59
60
  ![Python Version from PEP 621 TOML](https://img.shields.io/python/required-version-toml?tomlFilePath=https%3A%2F%2Fraw.githubusercontent.com%2FVirtualPatientEngine%2FAIAgents4Pharma%2Frefs%2Fheads%2Fmain%2Fpyproject.toml)
60
61
  ![Docker Pulls](https://img.shields.io/docker/pulls/virtualpatientengine/talk2biomodels?link=https%3A%2F%2Fhub.docker.com%2Frepository%2Fdocker%2Fvirtualpatientengine%2Ftalk2biomodels%2Fgeneral)
61
62
 
62
-
63
63
  ## Introduction
64
64
 
65
65
  Welcome to **AIAgents4Pharma** – an open-source project by [Team VPE](https://github.com/VirtualPatientEngine) that brings together AI-driven tools to help researchers and pharma interact seamlessly with complex biological data.
@@ -99,8 +99,8 @@ _Please note that this option is currently available only for Talk2Biomodels._
99
99
  ```
100
100
  docker run -e OPENAI_API_KEY=<openai_api_key> -e NVIDIA_API_KEY=<nvidia_api_key> -p 8501:8501 virtualpatientengine/talk2biomodels
101
101
  ```
102
- _You can create a free account at NVIDIA and apply for their
103
- free credits [here](https://build.nvidia.com/explore/discover)._
102
+ _You can create a free account at NVIDIA and apply for their
103
+ free credits [here](https://build.nvidia.com/explore/discover)._
104
104
 
105
105
  #### Option 3: git
106
106
 
@@ -114,31 +114,43 @@ free credits [here](https://build.nvidia.com/explore/discover)._
114
114
  pip install -r requirements.txt
115
115
  ```
116
116
  3. **Initialize OPENAI_API_KEY and NVIDIA_API_KEY**
117
+
117
118
  ```bash
118
119
  export OPENAI_API_KEY=....
119
120
  ```
121
+
120
122
  ```bash
121
123
  export NVIDIA_API_KEY=....
122
124
  ```
123
- _You can create a free account at NVIDIA and apply for their
124
- free credits [here](https://build.nvidia.com/explore/discover)._
125
125
 
126
- 4. **[Optional] Initialize LANGSMITH_API_KEY**
126
+ _You can create a free account at NVIDIA and apply for their
127
+ free credits [here](https://build.nvidia.com/explore/discover)._
128
+
129
+ 4. **Initialize ZOTERO_API_KEY and ZOTERO_USER_ID**
130
+
131
+ ```bash
132
+ export ZOTERO_API_KEY=....
133
+ export ZOTERO_USER_ID=....
134
+ ```
135
+
136
+ 5. **[Optional] Initialize LANGSMITH_API_KEY**
137
+
127
138
  ```bash
128
139
  export LANGCHAIN_TRACING_V2=true
129
140
  export LANGCHAIN_API_KEY=<your-api-key>
130
141
  ```
131
- _Please note that this will create a new tracing project in your Langsmith
132
- account with the name `T2X-xxxx`, where `X` can be `B` (Biomodels), `S` (Scholars),
133
- `KG` (KnowledgeGraphs), or `C` (Cells). If you skip the previous step, it will
134
- default to the name `default`. `xxxx` will be the 4-digit ID created for the
135
- session._
136
142
 
137
- 5. **Launch the app:**
143
+ _Please note that this will create a new tracing project in your Langsmith
144
+ account with the name `T2X-xxxx`, where `X` can be `B` (Biomodels), `S` (Scholars),
145
+ `KG` (KnowledgeGraphs), or `C` (Cells). If you skip the previous step, it will
146
+ default to the name `default`. `xxxx` will be the 4-digit ID created for the
147
+ session._
148
+
149
+ 6. **Launch the app:**
138
150
  ```bash
139
151
  streamlit run app/frontend/streamlit_app_<agent>.py
140
152
  ```
141
- _Replace <agent> with the agent name you are interested to launch._
153
+ _Replace <agent> with the agent name you are interested to launch._
142
154
 
143
155
  For detailed instructions on each agent, please refer to their respective modules.
144
156
 
@@ -124,21 +124,24 @@ aiagents4pharma/talk2knowledgegraphs/utils/enrichments/pubchem_strings.py,sha256
124
124
  aiagents4pharma/talk2knowledgegraphs/utils/extractions/__init__.py,sha256=7gwwtfzKhB8GuOBD47XRi0NprwEXkOzwNl5eeu-hDTI,86
125
125
  aiagents4pharma/talk2knowledgegraphs/utils/extractions/pcst.py,sha256=m5p0yoJb7I19ua5yeQfXPf7c4r6S1XPwttsrM7Qoy94,9336
126
126
  aiagents4pharma/talk2scholars/__init__.py,sha256=gphERyVKZHvOnMQsml7TIHlaIshHJ75R1J3FKExkfuY,120
127
- aiagents4pharma/talk2scholars/agents/__init__.py,sha256=ykszlVGxz3egLHZAttlNoTPxIrnQJZYva_ssR8fwIFk,117
128
- aiagents4pharma/talk2scholars/agents/main_agent.py,sha256=UiiqCMUko4t39uR4NtTvG3kRMf89x67dU_3NSAM4DWw,7603
127
+ aiagents4pharma/talk2scholars/agents/__init__.py,sha256=WxEauzCzLEGyhdIRkxSBpNW5c_Uzf7iJUdM57IQkXH8,144
128
+ aiagents4pharma/talk2scholars/agents/main_agent.py,sha256=ZJf1VAk2eA4Hxk8L7K2btiHTrv1CWRxebf4PAJbntuE,9487
129
129
  aiagents4pharma/talk2scholars/agents/s2_agent.py,sha256=XilKQvlxEVNYK5cEc44x-62OZZ1qG77v1r0FkwLexcw,4581
130
+ aiagents4pharma/talk2scholars/agents/zotero_agent.py,sha256=E-w4avjDLviwrNOII0gVtHYLeO4wv2umykICJLZxfMU,4049
130
131
  aiagents4pharma/talk2scholars/configs/__init__.py,sha256=tf2gz8n7M4ko6xLdX_C925ELVIxoP6SgkPcbeh59ad4,151
131
- aiagents4pharma/talk2scholars/configs/config.yaml,sha256=XaUi1aP0VGiZFeW_ZP68bVSiCJezied5yLzcx3Uljhc,308
132
+ aiagents4pharma/talk2scholars/configs/config.yaml,sha256=IBrHX_mACNb7R4rrI_zbWgscAMUdIAkOg9LDgLN1o28,386
132
133
  aiagents4pharma/talk2scholars/configs/agents/__init__.py,sha256=yyh7PB2oY_JulnpSQCWS4wwCH_uzIdt47O2Ay48x_oU,75
133
- aiagents4pharma/talk2scholars/configs/agents/talk2scholars/__init__.py,sha256=Tj4urOkjpu2cTlpJl0Fmr_18RZCR88vns-Gt-XquDzs,95
134
+ aiagents4pharma/talk2scholars/configs/agents/talk2scholars/__init__.py,sha256=MI4RmoQQ2P-JQgCJ8XEucqF6g2VlNNi37yxcsXFj9Oo,122
134
135
  aiagents4pharma/talk2scholars/configs/agents/talk2scholars/main_agent/__init__.py,sha256=fqQQ-GlRcbzru2KmEk3oMma0R6_SzGM8dOXzYeU4oVA,46
135
- aiagents4pharma/talk2scholars/configs/agents/talk2scholars/main_agent/default.yaml,sha256=kizyUjDasjv3zt2xHcGMqTxnpR_FHAcOs1vgVaH7tsY,1882
136
+ aiagents4pharma/talk2scholars/configs/agents/talk2scholars/main_agent/default.yaml,sha256=wHbFTQSfdRc0JO2lbzXXHliFNz40Oza-mGmVphNOoPw,2615
136
137
  aiagents4pharma/talk2scholars/configs/agents/talk2scholars/s2_agent/__init__.py,sha256=fqQQ-GlRcbzru2KmEk3oMma0R6_SzGM8dOXzYeU4oVA,46
137
- aiagents4pharma/talk2scholars/configs/agents/talk2scholars/s2_agent/default.yaml,sha256=lQUvQDLqqPIxn4TkL58atG2dQFhysNuNyAbd6P8km3g,585
138
+ aiagents4pharma/talk2scholars/configs/agents/talk2scholars/s2_agent/default.yaml,sha256=WQOHG1WwnoQSUyIRfEEK6LLGwmWy2gaZNXpb12WsgNk,1975
139
+ aiagents4pharma/talk2scholars/configs/agents/talk2scholars/zotero_agent/__init__.py,sha256=fqQQ-GlRcbzru2KmEk3oMma0R6_SzGM8dOXzYeU4oVA,46
140
+ aiagents4pharma/talk2scholars/configs/agents/talk2scholars/zotero_agent/default.yaml,sha256=ZYmGnZnr_Q2q3UpkJDvmezADdJxspUGgngyZiMKJFq8,1958
138
141
  aiagents4pharma/talk2scholars/configs/app/__init__.py,sha256=JoSZV6N669kGMv5zLDszwf0ZjcRHx9TJfIqGhIIdPXE,70
139
142
  aiagents4pharma/talk2scholars/configs/app/frontend/__init__.py,sha256=fqQQ-GlRcbzru2KmEk3oMma0R6_SzGM8dOXzYeU4oVA,46
140
143
  aiagents4pharma/talk2scholars/configs/app/frontend/default.yaml,sha256=wsELBdRLv6UqZ9QZfwpS7K4xfMj5s-a99-aXqIs6WEI,868
141
- aiagents4pharma/talk2scholars/configs/tools/__init__.py,sha256=w0BJK0MR6Et8Pw1htP8JV0Lr9F_N68CqvbpV14KBy_8,151
144
+ aiagents4pharma/talk2scholars/configs/tools/__init__.py,sha256=z5PzYS1WyoC4PiWVIIOGICldps2yMh2E_2HFZA9ltpQ,177
142
145
  aiagents4pharma/talk2scholars/configs/tools/multi_paper_recommendation/__init__.py,sha256=fqQQ-GlRcbzru2KmEk3oMma0R6_SzGM8dOXzYeU4oVA,46
143
146
  aiagents4pharma/talk2scholars/configs/tools/multi_paper_recommendation/default.yaml,sha256=iEsEW89MlQwKsAW4ZAxLt4pDBwA1qxImYQ2dfONIf6c,442
144
147
  aiagents4pharma/talk2scholars/configs/tools/retrieve_semantic_scholar_paper_id/__init__.py,sha256=fqQQ-GlRcbzru2KmEk3oMma0R6_SzGM8dOXzYeU4oVA,46
@@ -147,24 +150,33 @@ aiagents4pharma/talk2scholars/configs/tools/search/__init__.py,sha256=fqQQ-GlRcb
147
150
  aiagents4pharma/talk2scholars/configs/tools/search/default.yaml,sha256=tw8N1Mms0qHQbIY3KGDNK1NuT19dQGPiagxzWDdOAJk,504
148
151
  aiagents4pharma/talk2scholars/configs/tools/single_paper_recommendation/__init__.py,sha256=fqQQ-GlRcbzru2KmEk3oMma0R6_SzGM8dOXzYeU4oVA,46
149
152
  aiagents4pharma/talk2scholars/configs/tools/single_paper_recommendation/default.yaml,sha256=TILecrowsu5VGdJPeac6fl5AXSf3piSHN0oKdjY2q1o,596
153
+ aiagents4pharma/talk2scholars/configs/tools/zotero_read/__init__.py,sha256=fqQQ-GlRcbzru2KmEk3oMma0R6_SzGM8dOXzYeU4oVA,46
154
+ aiagents4pharma/talk2scholars/configs/tools/zotero_read/default.yaml,sha256=iILspz9EvN8jpVHzMsW3L9BDEST5eqOUO7TnhxwXBrI,468
150
155
  aiagents4pharma/talk2scholars/state/__init__.py,sha256=S6SxlszIMZSIMJehjevPF9sKyR-PAwWb5TEdo6xWXE8,103
151
- aiagents4pharma/talk2scholars/state/state_talk2scholars.py,sha256=Jbwckhhpv03KFQYkYkuPsYz5OxT0Si-mra7qrynH5Jo,2246
156
+ aiagents4pharma/talk2scholars/state/state_talk2scholars.py,sha256=DoCtKP2qd69mXPwfOb-aYw9Hq2fYmx6b76S-HlsVSNo,2382
152
157
  aiagents4pharma/talk2scholars/tests/__init__.py,sha256=U3PsTiUZaUBD1IZanFGkDIOdFieDVJtGKQ5-woYUo8c,45
158
+ aiagents4pharma/talk2scholars/tests/test_call_s2.py,sha256=kWvjWWjQC3LJuEVmOv5RnHpDqEeGzALZ5-esv65mQvU,3256
159
+ aiagents4pharma/talk2scholars/tests/test_call_zotero.py,sha256=00854fAYJQtd96pb9zlBJ41WgCEWPEra0fwE7gxNnCk,3195
153
160
  aiagents4pharma/talk2scholars/tests/test_llm_main_integration.py,sha256=SAMG-Kb2S9sei8Us5vUWCUJikTKXPZVKQ6aJJPEhJsc,1880
154
- aiagents4pharma/talk2scholars/tests/test_main_agent.py,sha256=TTPfVGWWq6BXJVgfR958qttD6dGRnpJHZMqo86k4aMo,5562
161
+ aiagents4pharma/talk2scholars/tests/test_main_agent.py,sha256=VS5M5sqL0rfSma_pxsGDOH-39K8pJJEbCfTocaWBTOc,4276
162
+ aiagents4pharma/talk2scholars/tests/test_routing_logic.py,sha256=AZrvaEBDk51KL6edrZY3GpQ_N6VbrlADqXFeg_jxDoQ,2284
155
163
  aiagents4pharma/talk2scholars/tests/test_s2_agent.py,sha256=-yEoG2v5SMkCLCrSA2DFcNE-xMOSn97N4UTomzCeW40,7559
156
164
  aiagents4pharma/talk2scholars/tests/test_s2_tools.py,sha256=QEwraJk9_Kp6ZSGYyYDXWH62wIjSwi1Pptwwbx1fuG0,13176
157
165
  aiagents4pharma/talk2scholars/tests/test_state.py,sha256=_iHXvoZnU_eruf8l1sQKBSCIVnxNkH_9VzkVtZZA6bY,384
158
- aiagents4pharma/talk2scholars/tools/__init__.py,sha256=YudBDRwaEzDnAcpxGZvEOfyh5-6xd51CTvTKTkywgXw,68
166
+ aiagents4pharma/talk2scholars/tests/test_zotero_agent.py,sha256=sqoMo2nZPChRiTIb4kWKDLp8iPzCOEKSYcnj9XzE6wg,5932
167
+ aiagents4pharma/talk2scholars/tests/test_zotero_tool.py,sha256=LI7KBTxPga7E-841pugjpNqtWgoIz0mDIJEZzdIL9eI,5759
168
+ aiagents4pharma/talk2scholars/tools/__init__.py,sha256=-9iXVIGzFLak6a14Ib8yDg1bfiHgJz2nAhwWEk1jhOk,89
159
169
  aiagents4pharma/talk2scholars/tools/s2/__init__.py,sha256=wytqCmGm8Fbl8y5qLdIkxhhG8VHLYMifCGjbH_LK2Fc,258
160
170
  aiagents4pharma/talk2scholars/tools/s2/display_results.py,sha256=UR0PtEHGDpOhPH0Di5HT8-Fip2RkEMTJgzROsChb1gc,2959
161
- aiagents4pharma/talk2scholars/tools/s2/multi_paper_rec.py,sha256=sYtoJWFmJuSTSHMrZmqiBfGS-mDKS1gAbKtNyjRnlwU,4979
171
+ aiagents4pharma/talk2scholars/tools/s2/multi_paper_rec.py,sha256=QM30Oq3518cuEWwpfA5R7NzNmNklYUkt9Y1D5jdjmG4,5430
162
172
  aiagents4pharma/talk2scholars/tools/s2/query_results.py,sha256=EUfzRh5Qc_tMl5fDIFb9PIsQkkrU4Xb5MR0sud_X5-c,2017
163
173
  aiagents4pharma/talk2scholars/tools/s2/retrieve_semantic_scholar_paper_id.py,sha256=Lg1L4HQCN2LaQEyWtLD73O67PMoXkPHi-Y8rCzHS0A4,2499
164
- aiagents4pharma/talk2scholars/tools/s2/search.py,sha256=mnBQWDuQ50UVw6B-bRuL8Ek1av-pEtdgzVMxpEA2BpI,4296
165
- aiagents4pharma/talk2scholars/tools/s2/single_paper_rec.py,sha256=xgnUj9W9JkeTvB2VJBJUAnia789GGNGqdqgJ_G16v2s,5120
166
- aiagents4pharma-1.22.4.dist-info/LICENSE,sha256=IcIbyB1Hyk5ZDah03VNQvJkbNk2hkBCDqQ8qtnCvB4Q,1077
167
- aiagents4pharma-1.22.4.dist-info/METADATA,sha256=N4iGmBxCDPa1DxefrkYMUCGjyXeFHsgc7_Rbi4d3o80,7789
168
- aiagents4pharma-1.22.4.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
169
- aiagents4pharma-1.22.4.dist-info/top_level.txt,sha256=-AH8rMmrSnJtq7HaAObS78UU-cTCwvX660dSxeM7a0A,16
170
- aiagents4pharma-1.22.4.dist-info/RECORD,,
174
+ aiagents4pharma/talk2scholars/tools/s2/search.py,sha256=i5KMFJWK31CjYtVT1McJpLzgcwvyTHZe2aHZlscfK3Q,4667
175
+ aiagents4pharma/talk2scholars/tools/s2/single_paper_rec.py,sha256=7PoZfcstxDThWX6NYOgxN_9M_nwgMPAALch8OmjraVY,5568
176
+ aiagents4pharma/talk2scholars/tools/zotero/__init__.py,sha256=1UW4r5ECvAwYpo1Fjf7lQPO--M8I85baYCHocFOAq4M,53
177
+ aiagents4pharma/talk2scholars/tools/zotero/zotero_read.py,sha256=NJ65fAJ4u2Zq15uvEajVOhI4QnNvyqA6FHPaEDqvMw0,4321
178
+ aiagents4pharma-1.23.0.dist-info/LICENSE,sha256=IcIbyB1Hyk5ZDah03VNQvJkbNk2hkBCDqQ8qtnCvB4Q,1077
179
+ aiagents4pharma-1.23.0.dist-info/METADATA,sha256=wu_6sSTg9hG3eXOX27pKj2qSza_HxfeFV_T_oef57NY,7986
180
+ aiagents4pharma-1.23.0.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
181
+ aiagents4pharma-1.23.0.dist-info/top_level.txt,sha256=-AH8rMmrSnJtq7HaAObS78UU-cTCwvX660dSxeM7a0A,16
182
+ aiagents4pharma-1.23.0.dist-info/RECORD,,