aiagents4pharma 1.15.2__py3-none-any.whl → 1.16.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 (22) hide show
  1. aiagents4pharma/__init__.py +1 -1
  2. aiagents4pharma/{talk2competitors → talk2scholars}/agents/main_agent.py +7 -7
  3. aiagents4pharma/{talk2competitors → talk2scholars}/agents/s2_agent.py +4 -4
  4. aiagents4pharma/{talk2competitors → talk2scholars}/state/__init__.py +1 -1
  5. aiagents4pharma/{talk2competitors/state/state_talk2competitors.py → talk2scholars/state/state_talk2scholars.py} +3 -3
  6. aiagents4pharma/{talk2competitors → talk2scholars}/tests/test_langgraph.py +2 -2
  7. {aiagents4pharma-1.15.2.dist-info → aiagents4pharma-1.16.0.dist-info}/METADATA +7 -6
  8. {aiagents4pharma-1.15.2.dist-info → aiagents4pharma-1.16.0.dist-info}/RECORD +22 -22
  9. /aiagents4pharma/{talk2competitors → talk2scholars}/__init__.py +0 -0
  10. /aiagents4pharma/{talk2competitors → talk2scholars}/agents/__init__.py +0 -0
  11. /aiagents4pharma/{talk2competitors → talk2scholars}/config/__init__.py +0 -0
  12. /aiagents4pharma/{talk2competitors → talk2scholars}/config/config.py +0 -0
  13. /aiagents4pharma/{talk2competitors → talk2scholars}/tests/__init__.py +0 -0
  14. /aiagents4pharma/{talk2competitors → talk2scholars}/tools/__init__.py +0 -0
  15. /aiagents4pharma/{talk2competitors → talk2scholars}/tools/s2/__init__.py +0 -0
  16. /aiagents4pharma/{talk2competitors → talk2scholars}/tools/s2/display_results.py +0 -0
  17. /aiagents4pharma/{talk2competitors → talk2scholars}/tools/s2/multi_paper_rec.py +0 -0
  18. /aiagents4pharma/{talk2competitors → talk2scholars}/tools/s2/search.py +0 -0
  19. /aiagents4pharma/{talk2competitors → talk2scholars}/tools/s2/single_paper_rec.py +0 -0
  20. {aiagents4pharma-1.15.2.dist-info → aiagents4pharma-1.16.0.dist-info}/LICENSE +0 -0
  21. {aiagents4pharma-1.15.2.dist-info → aiagents4pharma-1.16.0.dist-info}/WHEEL +0 -0
  22. {aiagents4pharma-1.15.2.dist-info → aiagents4pharma-1.16.0.dist-info}/top_level.txt +0 -0
@@ -6,6 +6,6 @@ from . import (
6
6
  configs,
7
7
  talk2biomodels,
8
8
  talk2cells,
9
- talk2competitors,
9
+ talk2scholars,
10
10
  talk2knowledgegraphs,
11
11
  )
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env python3
2
2
 
3
3
  """
4
- Main agent for the talk2competitors app.
4
+ Main agent for the talk2scholars app.
5
5
  """
6
6
 
7
7
  import logging
@@ -15,7 +15,7 @@ from langgraph.graph import END, START, StateGraph
15
15
  from langgraph.types import Command
16
16
  from ..agents import s2_agent
17
17
  from ..config.config import config
18
- from ..state.state_talk2competitors import Talk2Competitors
18
+ from ..state.state_talk2scholars import Talk2Scholars
19
19
 
20
20
  logging.basicConfig(level=logging.INFO)
21
21
  logger = logging.getLogger(__name__)
@@ -34,12 +34,12 @@ def make_supervisor_node(llm: BaseChatModel) -> str:
34
34
  """
35
35
  # options = ["FINISH", "s2_agent"]
36
36
 
37
- def supervisor_node(state: Talk2Competitors) -> Command[Literal["s2_agent", "__end__"]]:
37
+ def supervisor_node(state: Talk2Scholars) -> Command[Literal["s2_agent", "__end__"]]:
38
38
  """
39
39
  Supervisor node that routes to appropriate sub-agents.
40
40
 
41
41
  Args:
42
- state (Talk2Competitors): The current state of the conversation.
42
+ state (Talk2Scholars): The current state of the conversation.
43
43
 
44
44
  Returns:
45
45
  Command[Literal["s2_agent", "__end__"]]: The command to execute next.
@@ -91,12 +91,12 @@ def get_app(thread_id: str, llm_model ='gpt-4o-mini') -> StateGraph:
91
91
  Returns:
92
92
  The compiled langraph app.
93
93
  """
94
- def call_s2_agent(state: Talk2Competitors) -> Command[Literal["__end__"]]:
94
+ def call_s2_agent(state: Talk2Scholars) -> Command[Literal["__end__"]]:
95
95
  """
96
96
  Node for calling the S2 agent.
97
97
 
98
98
  Args:
99
- state (Talk2Competitors): The current state of the conversation.
99
+ state (Talk2Scholars): The current state of the conversation.
100
100
 
101
101
  Returns:
102
102
  Command[Literal["__end__"]]: The command to execute next.
@@ -115,7 +115,7 @@ def get_app(thread_id: str, llm_model ='gpt-4o-mini') -> StateGraph:
115
115
  },
116
116
  )
117
117
  llm = ChatOpenAI(model=llm_model, temperature=0)
118
- workflow = StateGraph(Talk2Competitors)
118
+ workflow = StateGraph(Talk2Scholars)
119
119
 
120
120
  supervisor = make_supervisor_node(llm)
121
121
  workflow.add_node("supervisor", supervisor)
@@ -11,7 +11,7 @@ from langgraph.graph import START, StateGraph
11
11
  from langgraph.prebuilt import create_react_agent
12
12
  from langgraph.checkpoint.memory import MemorySaver
13
13
  from ..config.config import config
14
- from ..state.state_talk2competitors import Talk2Competitors
14
+ from ..state.state_talk2scholars import Talk2Scholars
15
15
  # from ..tools.s2 import s2_tools
16
16
  from ..tools.s2.search import search_tool
17
17
  from ..tools.s2.display_results import display_results
@@ -28,7 +28,7 @@ def get_app(uniq_id, llm_model='gpt-4o-mini'):
28
28
  '''
29
29
  This function returns the langraph app.
30
30
  '''
31
- def agent_s2_node(state: Talk2Competitors):
31
+ def agent_s2_node(state: Talk2Scholars):
32
32
  '''
33
33
  This function calls the model.
34
34
  '''
@@ -47,13 +47,13 @@ def get_app(uniq_id, llm_model='gpt-4o-mini'):
47
47
  model = create_react_agent(
48
48
  llm,
49
49
  tools=tools,
50
- state_schema=Talk2Competitors,
50
+ state_schema=Talk2Scholars,
51
51
  state_modifier=config.S2_AGENT_PROMPT,
52
52
  checkpointer=MemorySaver()
53
53
  )
54
54
 
55
55
  # Define a new graph
56
- workflow = StateGraph(Talk2Competitors)
56
+ workflow = StateGraph(Talk2Scholars)
57
57
 
58
58
  # Define the two nodes we will cycle between
59
59
  workflow.add_node("agent_s2", agent_s2_node)
@@ -2,4 +2,4 @@
2
2
  This file is used to import all the modules in the package.
3
3
  '''
4
4
 
5
- from . import state_talk2competitors
5
+ from . import state_talk2scholars
@@ -1,5 +1,5 @@
1
1
  """
2
- This is the state file for the talk2comp agent.
2
+ This is the state file for the talk2scholars agent.
3
3
  """
4
4
 
5
5
  import logging
@@ -19,9 +19,9 @@ def replace_dict(existing: Dict[str, Any], new: Dict[str, Any]) -> Dict[str, Any
19
19
  return new
20
20
 
21
21
 
22
- class Talk2Competitors(AgentState):
22
+ class Talk2Scholars(AgentState):
23
23
  """
24
- The state for the talk2comp agent, inheriting from AgentState.
24
+ The state for the talk2scholars agent, inheriting from AgentState.
25
25
  """
26
26
 
27
27
  papers: Annotated[Dict[str, Any], replace_dict] # Changed from List to Dict
@@ -1,5 +1,5 @@
1
1
  """
2
- Unit and integration tests for Talk2Competitors system.
2
+ Unit and integration tests for Talk2Scholars system.
3
3
  Each test focuses on a single, specific functionality.
4
4
  Tests are deterministic and independent of each other.
5
5
  """
@@ -10,7 +10,7 @@ import pytest
10
10
  from langchain_core.messages import AIMessage, HumanMessage
11
11
 
12
12
  from ..agents.main_agent import get_app, make_supervisor_node
13
- from ..state.state_talk2competitors import replace_dict
13
+ from ..state.state_talk2scholars import replace_dict
14
14
  from ..tools.s2.display_results import display_results
15
15
  from ..tools.s2.multi_paper_rec import get_multi_paper_recommendations
16
16
  from ..tools.s2.search import search_tool
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: aiagents4pharma
3
- Version: 1.15.2
3
+ Version: 1.16.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
@@ -50,11 +50,10 @@ Requires-Dist: streamlit-feedback
50
50
  [![Talk2BioModels](https://github.com/VirtualPatientEngine/AIAgents4Pharma/actions/workflows/tests_talk2biomodels.yml/badge.svg)](https://github.com/VirtualPatientEngine/AIAgents4Pharma/actions/workflows/tests_talk2biomodels.yml)
51
51
  [![Talk2Cells](https://github.com/VirtualPatientEngine/AIAgents4Pharma/actions/workflows/tests_talk2cells.yml/badge.svg)](https://github.com/VirtualPatientEngine/AIAgents4Pharma/actions/workflows/tests_talk2cells.yml)
52
52
  [![Talk2KnowledgeGraphs](https://github.com/VirtualPatientEngine/AIAgents4Pharma/actions/workflows/tests_talk2knowledgegraphs.yml/badge.svg)](https://github.com/VirtualPatientEngine/AIAgents4Pharma/actions/workflows/tests_talk2knowledgegraphs.yml)
53
- [![Talk2Competitors](https://github.com/VirtualPatientEngine/AIAgents4Pharma/actions/workflows/tests_talk2competitors.yml/badge.svg)](https://github.com/VirtualPatientEngine/AIAgents4Pharma/actions/workflows/tests_talk2competitors.yml)
53
+ [![Talk2Scholars](https://github.com/VirtualPatientEngine/AIAgents4Pharma/actions/workflows/tests_talk2scholars.yml/badge.svg)](https://github.com/VirtualPatientEngine/AIAgents4Pharma/actions/workflows/tests_talk2scholars.yml)
54
54
  ![GitHub Release](https://img.shields.io/github/v/release/VirtualPatientEngine/AIAgents4Pharma)
55
55
  ![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)
56
56
 
57
-
58
57
  <h1 align="center" style="border-bottom: none;">🤖 AIAgents4Pharma</h1>
59
58
 
60
59
  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.
@@ -64,7 +63,7 @@ Our toolkit currently consists of three intelligent agents, each designed to sim
64
63
  - **Talk2BioModels**: Engage directly with mathematical models in systems biology.
65
64
  - **Talk2Cells** _(Work in progress)_: Query and analyze sequencing data with ease.
66
65
  - **Talk2KnowledgeGraphs** _(Work in progress)_: Access and explore complex biological knowledge graphs for insightful data connections.
67
- - **Talk2Competitors** _(Coming soon)_: Get recommendations for articles related to your choice. Download, query, and write/retrieve them to your reference manager (currently supporting Zotero).
66
+ - **Talk2Scholars** _(Coming soon)_: Get recommendations for articles related to your choice. Download, query, and write/retrieve them to your reference manager (currently supporting Zotero).
68
67
 
69
68
  ---
70
69
 
@@ -87,7 +86,9 @@ Our toolkit currently consists of three intelligent agents, each designed to sim
87
86
 
88
87
  **Talk2KnowledgeGraphs** is an agent designed to enable interaction with biological knowledge graphs (KGs). KGs integrate vast amounts of structured biological data into a format that highlights relationships between entities, such as proteins, genes, and diseases.
89
88
 
90
- ### 4. Talk2Competitors _(Coming soon)_
89
+ ### 4. Talk2Scholars _(Work in Progress)_
90
+
91
+ Talk2Scholars is an AI-powered hierarchical agent system designed to revolutionize academic paper search and analysis. Through intelligent conversation, users can discover, analyze, and receive recommendations for academic papers using state-of-the-art natural language processing.
91
92
 
92
93
  ## Getting Started
93
94
 
@@ -198,7 +199,7 @@ Check out our [CONTRIBUTING.md](CONTRIBUTING.md) for more information.
198
199
  - **User Interface**: Interactive web UI for all agents.
199
200
  - **Talk2Cells**: Integration of sequencing data analysis tools.
200
201
  - **Talk2KnowledgeGraphs**: Interface for biological knowledge graph interaction.
201
- - **Talk2Competitors**: Interface for exploring articles
202
+ - **Talk2Scholars**: Interface for exploring articles
202
203
 
203
204
  We’re excited to bring AIAgents4Pharma to the bioinformatics and pharmaceutical research community. Together, let’s make data-driven biological research more accessible and insightful.
204
205
 
@@ -1,4 +1,4 @@
1
- aiagents4pharma/__init__.py,sha256=5muWWIg89VHPybfxonO_5xOMJPasKNsGdQRhozDaEmk,177
1
+ aiagents4pharma/__init__.py,sha256=nFCe1As_SuRkmhcdZVsU0aYjYccHxk1DbduLpy8XulY,174
2
2
  aiagents4pharma/configs/__init__.py,sha256=hNkSrXw1Ix1HhkGn_aaidr2coBYySfM0Hm_pMeRcX7k,76
3
3
  aiagents4pharma/configs/config.yaml,sha256=e0w2GOBVWcoPDtX-z4S6yKbv2rja5PfGRBhmTPVIXNU,161
4
4
  aiagents4pharma/configs/talk2biomodels/__init__.py,sha256=safyFKhkd5Wlirl9dMZIHWDLTpY2oLw9wjIM7ZtLIHk,88
@@ -57,22 +57,6 @@ aiagents4pharma/talk2cells/tools/__init__.py,sha256=38nK2a_lEFRjO3qD6Fo9a3983ZCY
57
57
  aiagents4pharma/talk2cells/tools/scp_agent/__init__.py,sha256=s7g0lyH1lMD9pcWHLPtwRJRvzmTh2II7DrxyLulpjmQ,163
58
58
  aiagents4pharma/talk2cells/tools/scp_agent/display_studies.py,sha256=6q59gh_NQaiOU2rn55A3sIIFKlXi4SK3iKgySvUDrtQ,600
59
59
  aiagents4pharma/talk2cells/tools/scp_agent/search_studies.py,sha256=MLe-twtFnOu-P8P9diYq7jvHBHbWFRRCZLcfpUzqPMg,2806
60
- aiagents4pharma/talk2competitors/__init__.py,sha256=haaikzND3c0Euqq86ndA4fl9q42aOop5rYG_8Zh1D-o,119
61
- aiagents4pharma/talk2competitors/agents/__init__.py,sha256=ykszlVGxz3egLHZAttlNoTPxIrnQJZYva_ssR8fwIFk,117
62
- aiagents4pharma/talk2competitors/agents/main_agent.py,sha256=UoHCpZd-HoeG0B6_gAF1cEP2OqMvrTuGe7MZDwL_u1U,3878
63
- aiagents4pharma/talk2competitors/agents/s2_agent.py,sha256=eTrhc4ZPvWOUWMHNYxK0WltsZedZUnAWNu-TeUa-ruk,2501
64
- aiagents4pharma/talk2competitors/config/__init__.py,sha256=HyM6paOpKZ5_tZnyVheSAFmxjT6Mb3PxvWKfP0rz-dE,113
65
- aiagents4pharma/talk2competitors/config/config.py,sha256=jd4ltMBJyTztm9wT7j3ujOyYxL2SXRgxQJ4OZUBmCG4,5387
66
- aiagents4pharma/talk2competitors/state/__init__.py,sha256=DzFjV3hZNes_pL4bDW2_8RsyK9BJcj6ejfBzU0KWn1k,106
67
- aiagents4pharma/talk2competitors/state/state_talk2competitors.py,sha256=GUl1ZfM77XsjIEu-3xy4dtvaiMTA1pXf6i1ozVcX5Gg,993
68
- aiagents4pharma/talk2competitors/tests/__init__.py,sha256=U3PsTiUZaUBD1IZanFGkDIOdFieDVJtGKQ5-woYUo8c,45
69
- aiagents4pharma/talk2competitors/tests/test_langgraph.py,sha256=sEROK1aU3wFqJhZohONVI6Pr7t1d3PSqs-4erVIyiJw,9283
70
- aiagents4pharma/talk2competitors/tools/__init__.py,sha256=YudBDRwaEzDnAcpxGZvEOfyh5-6xd51CTvTKTkywgXw,68
71
- aiagents4pharma/talk2competitors/tools/s2/__init__.py,sha256=9RQH3efTj6qkXk0ICKSc7Mzpkitt4gRGsQ1pGPrrREU,181
72
- aiagents4pharma/talk2competitors/tools/s2/display_results.py,sha256=B8JJGohi1Eyx8C3MhO_SiyQP3R6hPyUKJOAzcHmq3FU,584
73
- aiagents4pharma/talk2competitors/tools/s2/multi_paper_rec.py,sha256=FYLt47DAk6WOKfEk1Gj9zVvJGNyxA283PCp8IKW9U5M,4262
74
- aiagents4pharma/talk2competitors/tools/s2/search.py,sha256=pppjrQv5-8ep4fnqgTSBNgnbSnQsVIcNrRrH0p2TP1o,4025
75
- aiagents4pharma/talk2competitors/tools/s2/single_paper_rec.py,sha256=dAfUQxI7T5eu0eDxK8VAl7-JH0Wnw24CVkOQqwj-hXc,4810
76
60
  aiagents4pharma/talk2knowledgegraphs/__init__.py,sha256=4smVQoSMM6rflVnNkABqlDAAlSn4bYsq7rMVWjRGvis,103
77
61
  aiagents4pharma/talk2knowledgegraphs/datasets/__init__.py,sha256=L3gPuHskSegmtXskVrLIYr7FXe_ibKgJ2GGr1_Wok6k,173
78
62
  aiagents4pharma/talk2knowledgegraphs/datasets/biobridge_primekg.py,sha256=QlzDXmXREoa9MA6-GwzqRjdzndQeGBAF11Td6NFk_9Y,23426
@@ -98,8 +82,24 @@ aiagents4pharma/talk2knowledgegraphs/utils/embeddings/sentence_transformer.py,sh
98
82
  aiagents4pharma/talk2knowledgegraphs/utils/enrichments/__init__.py,sha256=tW426knki2DBIHcWyF_K04iMMdbpIn_e_TpPmTgz2dI,113
99
83
  aiagents4pharma/talk2knowledgegraphs/utils/enrichments/enrichments.py,sha256=Bx8x6zzk5614ApWB90N_iv4_Y_Uq0-KwUeBwYSdQMU4,924
100
84
  aiagents4pharma/talk2knowledgegraphs/utils/enrichments/ollama.py,sha256=8eoxR-VHo0G7ReQIwje7xEhE-SJlHdef7_wJRpnvFIc,4116
101
- aiagents4pharma-1.15.2.dist-info/LICENSE,sha256=IcIbyB1Hyk5ZDah03VNQvJkbNk2hkBCDqQ8qtnCvB4Q,1077
102
- aiagents4pharma-1.15.2.dist-info/METADATA,sha256=k63iE9sbSZrZoraXM4ILVXy_bnrMR6iBENIBCEpE3nQ,8637
103
- aiagents4pharma-1.15.2.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
104
- aiagents4pharma-1.15.2.dist-info/top_level.txt,sha256=-AH8rMmrSnJtq7HaAObS78UU-cTCwvX660dSxeM7a0A,16
105
- aiagents4pharma-1.15.2.dist-info/RECORD,,
85
+ aiagents4pharma/talk2scholars/__init__.py,sha256=haaikzND3c0Euqq86ndA4fl9q42aOop5rYG_8Zh1D-o,119
86
+ aiagents4pharma/talk2scholars/agents/__init__.py,sha256=ykszlVGxz3egLHZAttlNoTPxIrnQJZYva_ssR8fwIFk,117
87
+ aiagents4pharma/talk2scholars/agents/main_agent.py,sha256=HN3MkfHSDDlfzCKP79yAkpf3uyz3ZOCDGNRQ4gRL5RI,3854
88
+ aiagents4pharma/talk2scholars/agents/s2_agent.py,sha256=HI037q-bq-bGf5DqtraSCWO493fAzUZ81lOEOCbMAaM,2486
89
+ aiagents4pharma/talk2scholars/config/__init__.py,sha256=HyM6paOpKZ5_tZnyVheSAFmxjT6Mb3PxvWKfP0rz-dE,113
90
+ aiagents4pharma/talk2scholars/config/config.py,sha256=jd4ltMBJyTztm9wT7j3ujOyYxL2SXRgxQJ4OZUBmCG4,5387
91
+ aiagents4pharma/talk2scholars/state/__init__.py,sha256=S6SxlszIMZSIMJehjevPF9sKyR-PAwWb5TEdo6xWXE8,103
92
+ aiagents4pharma/talk2scholars/state/state_talk2scholars.py,sha256=nwNRKdhoTXAtBGMMp6coMyUCaQVOnoGNqyjpKKw_FVM,998
93
+ aiagents4pharma/talk2scholars/tests/__init__.py,sha256=U3PsTiUZaUBD1IZanFGkDIOdFieDVJtGKQ5-woYUo8c,45
94
+ aiagents4pharma/talk2scholars/tests/test_langgraph.py,sha256=HcnahbazwaLaZg71OyCho2FLZ0ePedmv3XGvARFNe0g,9277
95
+ aiagents4pharma/talk2scholars/tools/__init__.py,sha256=YudBDRwaEzDnAcpxGZvEOfyh5-6xd51CTvTKTkywgXw,68
96
+ aiagents4pharma/talk2scholars/tools/s2/__init__.py,sha256=9RQH3efTj6qkXk0ICKSc7Mzpkitt4gRGsQ1pGPrrREU,181
97
+ aiagents4pharma/talk2scholars/tools/s2/display_results.py,sha256=B8JJGohi1Eyx8C3MhO_SiyQP3R6hPyUKJOAzcHmq3FU,584
98
+ aiagents4pharma/talk2scholars/tools/s2/multi_paper_rec.py,sha256=FYLt47DAk6WOKfEk1Gj9zVvJGNyxA283PCp8IKW9U5M,4262
99
+ aiagents4pharma/talk2scholars/tools/s2/search.py,sha256=pppjrQv5-8ep4fnqgTSBNgnbSnQsVIcNrRrH0p2TP1o,4025
100
+ aiagents4pharma/talk2scholars/tools/s2/single_paper_rec.py,sha256=dAfUQxI7T5eu0eDxK8VAl7-JH0Wnw24CVkOQqwj-hXc,4810
101
+ aiagents4pharma-1.16.0.dist-info/LICENSE,sha256=IcIbyB1Hyk5ZDah03VNQvJkbNk2hkBCDqQ8qtnCvB4Q,1077
102
+ aiagents4pharma-1.16.0.dist-info/METADATA,sha256=XH5jLQYNhAKOc4ixt5KovsExcjX14eEBrzTp40YluKY,8906
103
+ aiagents4pharma-1.16.0.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
104
+ aiagents4pharma-1.16.0.dist-info/top_level.txt,sha256=-AH8rMmrSnJtq7HaAObS78UU-cTCwvX660dSxeM7a0A,16
105
+ aiagents4pharma-1.16.0.dist-info/RECORD,,