aiagents4pharma 0.0.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 (336) hide show
  1. aiagents4pharma/__init__.py +11 -0
  2. aiagents4pharma/talk2aiagents4pharma/.dockerignore +13 -0
  3. aiagents4pharma/talk2aiagents4pharma/Dockerfile +133 -0
  4. aiagents4pharma/talk2aiagents4pharma/README.md +1 -0
  5. aiagents4pharma/talk2aiagents4pharma/__init__.py +5 -0
  6. aiagents4pharma/talk2aiagents4pharma/agents/__init__.py +6 -0
  7. aiagents4pharma/talk2aiagents4pharma/agents/main_agent.py +70 -0
  8. aiagents4pharma/talk2aiagents4pharma/configs/__init__.py +5 -0
  9. aiagents4pharma/talk2aiagents4pharma/configs/agents/__init__.py +5 -0
  10. aiagents4pharma/talk2aiagents4pharma/configs/agents/main_agent/default.yaml +29 -0
  11. aiagents4pharma/talk2aiagents4pharma/configs/app/__init__.py +0 -0
  12. aiagents4pharma/talk2aiagents4pharma/configs/app/frontend/__init__.py +0 -0
  13. aiagents4pharma/talk2aiagents4pharma/configs/app/frontend/default.yaml +102 -0
  14. aiagents4pharma/talk2aiagents4pharma/configs/config.yaml +4 -0
  15. aiagents4pharma/talk2aiagents4pharma/docker-compose/cpu/.env.example +23 -0
  16. aiagents4pharma/talk2aiagents4pharma/docker-compose/cpu/docker-compose.yml +93 -0
  17. aiagents4pharma/talk2aiagents4pharma/docker-compose/gpu/.env.example +23 -0
  18. aiagents4pharma/talk2aiagents4pharma/docker-compose/gpu/docker-compose.yml +108 -0
  19. aiagents4pharma/talk2aiagents4pharma/install.md +154 -0
  20. aiagents4pharma/talk2aiagents4pharma/states/__init__.py +5 -0
  21. aiagents4pharma/talk2aiagents4pharma/states/state_talk2aiagents4pharma.py +18 -0
  22. aiagents4pharma/talk2aiagents4pharma/tests/__init__.py +3 -0
  23. aiagents4pharma/talk2aiagents4pharma/tests/test_main_agent.py +312 -0
  24. aiagents4pharma/talk2biomodels/.dockerignore +13 -0
  25. aiagents4pharma/talk2biomodels/Dockerfile +104 -0
  26. aiagents4pharma/talk2biomodels/README.md +1 -0
  27. aiagents4pharma/talk2biomodels/__init__.py +5 -0
  28. aiagents4pharma/talk2biomodels/agents/__init__.py +6 -0
  29. aiagents4pharma/talk2biomodels/agents/t2b_agent.py +104 -0
  30. aiagents4pharma/talk2biomodels/api/__init__.py +5 -0
  31. aiagents4pharma/talk2biomodels/api/ols.py +75 -0
  32. aiagents4pharma/talk2biomodels/api/uniprot.py +36 -0
  33. aiagents4pharma/talk2biomodels/configs/__init__.py +5 -0
  34. aiagents4pharma/talk2biomodels/configs/agents/__init__.py +5 -0
  35. aiagents4pharma/talk2biomodels/configs/agents/t2b_agent/__init__.py +3 -0
  36. aiagents4pharma/talk2biomodels/configs/agents/t2b_agent/default.yaml +14 -0
  37. aiagents4pharma/talk2biomodels/configs/app/__init__.py +0 -0
  38. aiagents4pharma/talk2biomodels/configs/app/frontend/__init__.py +0 -0
  39. aiagents4pharma/talk2biomodels/configs/app/frontend/default.yaml +72 -0
  40. aiagents4pharma/talk2biomodels/configs/config.yaml +7 -0
  41. aiagents4pharma/talk2biomodels/configs/tools/__init__.py +5 -0
  42. aiagents4pharma/talk2biomodels/configs/tools/ask_question/__init__.py +3 -0
  43. aiagents4pharma/talk2biomodels/configs/tools/ask_question/default.yaml +30 -0
  44. aiagents4pharma/talk2biomodels/configs/tools/custom_plotter/__init__.py +3 -0
  45. aiagents4pharma/talk2biomodels/configs/tools/custom_plotter/default.yaml +8 -0
  46. aiagents4pharma/talk2biomodels/configs/tools/get_annotation/__init__.py +3 -0
  47. aiagents4pharma/talk2biomodels/configs/tools/get_annotation/default.yaml +8 -0
  48. aiagents4pharma/talk2biomodels/install.md +63 -0
  49. aiagents4pharma/talk2biomodels/models/__init__.py +5 -0
  50. aiagents4pharma/talk2biomodels/models/basico_model.py +125 -0
  51. aiagents4pharma/talk2biomodels/models/sys_bio_model.py +60 -0
  52. aiagents4pharma/talk2biomodels/states/__init__.py +6 -0
  53. aiagents4pharma/talk2biomodels/states/state_talk2biomodels.py +49 -0
  54. aiagents4pharma/talk2biomodels/tests/BIOMD0000000449_url.xml +1585 -0
  55. aiagents4pharma/talk2biomodels/tests/__init__.py +3 -0
  56. aiagents4pharma/talk2biomodels/tests/article_on_model_537.pdf +0 -0
  57. aiagents4pharma/talk2biomodels/tests/test_api.py +31 -0
  58. aiagents4pharma/talk2biomodels/tests/test_ask_question.py +42 -0
  59. aiagents4pharma/talk2biomodels/tests/test_basico_model.py +67 -0
  60. aiagents4pharma/talk2biomodels/tests/test_get_annotation.py +190 -0
  61. aiagents4pharma/talk2biomodels/tests/test_getmodelinfo.py +92 -0
  62. aiagents4pharma/talk2biomodels/tests/test_integration.py +116 -0
  63. aiagents4pharma/talk2biomodels/tests/test_load_biomodel.py +35 -0
  64. aiagents4pharma/talk2biomodels/tests/test_param_scan.py +71 -0
  65. aiagents4pharma/talk2biomodels/tests/test_query_article.py +184 -0
  66. aiagents4pharma/talk2biomodels/tests/test_save_model.py +47 -0
  67. aiagents4pharma/talk2biomodels/tests/test_search_models.py +35 -0
  68. aiagents4pharma/talk2biomodels/tests/test_simulate_model.py +44 -0
  69. aiagents4pharma/talk2biomodels/tests/test_steady_state.py +86 -0
  70. aiagents4pharma/talk2biomodels/tests/test_sys_bio_model.py +67 -0
  71. aiagents4pharma/talk2biomodels/tools/__init__.py +17 -0
  72. aiagents4pharma/talk2biomodels/tools/ask_question.py +125 -0
  73. aiagents4pharma/talk2biomodels/tools/custom_plotter.py +165 -0
  74. aiagents4pharma/talk2biomodels/tools/get_annotation.py +342 -0
  75. aiagents4pharma/talk2biomodels/tools/get_modelinfo.py +159 -0
  76. aiagents4pharma/talk2biomodels/tools/load_arguments.py +134 -0
  77. aiagents4pharma/talk2biomodels/tools/load_biomodel.py +44 -0
  78. aiagents4pharma/talk2biomodels/tools/parameter_scan.py +310 -0
  79. aiagents4pharma/talk2biomodels/tools/query_article.py +64 -0
  80. aiagents4pharma/talk2biomodels/tools/save_model.py +98 -0
  81. aiagents4pharma/talk2biomodels/tools/search_models.py +96 -0
  82. aiagents4pharma/talk2biomodels/tools/simulate_model.py +137 -0
  83. aiagents4pharma/talk2biomodels/tools/steady_state.py +187 -0
  84. aiagents4pharma/talk2biomodels/tools/utils.py +23 -0
  85. aiagents4pharma/talk2cells/README.md +1 -0
  86. aiagents4pharma/talk2cells/__init__.py +5 -0
  87. aiagents4pharma/talk2cells/agents/__init__.py +6 -0
  88. aiagents4pharma/talk2cells/agents/scp_agent.py +87 -0
  89. aiagents4pharma/talk2cells/states/__init__.py +6 -0
  90. aiagents4pharma/talk2cells/states/state_talk2cells.py +15 -0
  91. aiagents4pharma/talk2cells/tests/scp_agent/test_scp_agent.py +22 -0
  92. aiagents4pharma/talk2cells/tools/__init__.py +6 -0
  93. aiagents4pharma/talk2cells/tools/scp_agent/__init__.py +6 -0
  94. aiagents4pharma/talk2cells/tools/scp_agent/display_studies.py +27 -0
  95. aiagents4pharma/talk2cells/tools/scp_agent/search_studies.py +78 -0
  96. aiagents4pharma/talk2knowledgegraphs/.dockerignore +13 -0
  97. aiagents4pharma/talk2knowledgegraphs/Dockerfile +131 -0
  98. aiagents4pharma/talk2knowledgegraphs/README.md +1 -0
  99. aiagents4pharma/talk2knowledgegraphs/__init__.py +5 -0
  100. aiagents4pharma/talk2knowledgegraphs/agents/__init__.py +5 -0
  101. aiagents4pharma/talk2knowledgegraphs/agents/t2kg_agent.py +99 -0
  102. aiagents4pharma/talk2knowledgegraphs/configs/__init__.py +5 -0
  103. aiagents4pharma/talk2knowledgegraphs/configs/agents/t2kg_agent/__init__.py +3 -0
  104. aiagents4pharma/talk2knowledgegraphs/configs/agents/t2kg_agent/default.yaml +62 -0
  105. aiagents4pharma/talk2knowledgegraphs/configs/app/__init__.py +5 -0
  106. aiagents4pharma/talk2knowledgegraphs/configs/app/frontend/__init__.py +3 -0
  107. aiagents4pharma/talk2knowledgegraphs/configs/app/frontend/default.yaml +79 -0
  108. aiagents4pharma/talk2knowledgegraphs/configs/config.yaml +13 -0
  109. aiagents4pharma/talk2knowledgegraphs/configs/tools/__init__.py +5 -0
  110. aiagents4pharma/talk2knowledgegraphs/configs/tools/graphrag_reasoning/__init__.py +3 -0
  111. aiagents4pharma/talk2knowledgegraphs/configs/tools/graphrag_reasoning/default.yaml +24 -0
  112. aiagents4pharma/talk2knowledgegraphs/configs/tools/multimodal_subgraph_extraction/__init__.py +0 -0
  113. aiagents4pharma/talk2knowledgegraphs/configs/tools/multimodal_subgraph_extraction/default.yaml +33 -0
  114. aiagents4pharma/talk2knowledgegraphs/configs/tools/subgraph_extraction/__init__.py +3 -0
  115. aiagents4pharma/talk2knowledgegraphs/configs/tools/subgraph_extraction/default.yaml +43 -0
  116. aiagents4pharma/talk2knowledgegraphs/configs/tools/subgraph_summarization/__init__.py +3 -0
  117. aiagents4pharma/talk2knowledgegraphs/configs/tools/subgraph_summarization/default.yaml +9 -0
  118. aiagents4pharma/talk2knowledgegraphs/configs/utils/database/milvus/__init__.py +3 -0
  119. aiagents4pharma/talk2knowledgegraphs/configs/utils/database/milvus/default.yaml +61 -0
  120. aiagents4pharma/talk2knowledgegraphs/configs/utils/enrichments/ols_terms/default.yaml +3 -0
  121. aiagents4pharma/talk2knowledgegraphs/configs/utils/enrichments/reactome_pathways/default.yaml +3 -0
  122. aiagents4pharma/talk2knowledgegraphs/configs/utils/enrichments/uniprot_proteins/default.yaml +6 -0
  123. aiagents4pharma/talk2knowledgegraphs/configs/utils/pubchem_utils/default.yaml +5 -0
  124. aiagents4pharma/talk2knowledgegraphs/datasets/__init__.py +5 -0
  125. aiagents4pharma/talk2knowledgegraphs/datasets/biobridge_primekg.py +607 -0
  126. aiagents4pharma/talk2knowledgegraphs/datasets/dataset.py +25 -0
  127. aiagents4pharma/talk2knowledgegraphs/datasets/primekg.py +212 -0
  128. aiagents4pharma/talk2knowledgegraphs/datasets/starkqa_primekg.py +210 -0
  129. aiagents4pharma/talk2knowledgegraphs/docker-compose/cpu/.env.example +23 -0
  130. aiagents4pharma/talk2knowledgegraphs/docker-compose/cpu/docker-compose.yml +93 -0
  131. aiagents4pharma/talk2knowledgegraphs/docker-compose/gpu/.env.example +23 -0
  132. aiagents4pharma/talk2knowledgegraphs/docker-compose/gpu/docker-compose.yml +108 -0
  133. aiagents4pharma/talk2knowledgegraphs/entrypoint.sh +180 -0
  134. aiagents4pharma/talk2knowledgegraphs/install.md +165 -0
  135. aiagents4pharma/talk2knowledgegraphs/milvus_data_dump.py +886 -0
  136. aiagents4pharma/talk2knowledgegraphs/states/__init__.py +5 -0
  137. aiagents4pharma/talk2knowledgegraphs/states/state_talk2knowledgegraphs.py +40 -0
  138. aiagents4pharma/talk2knowledgegraphs/tests/__init__.py +0 -0
  139. aiagents4pharma/talk2knowledgegraphs/tests/test_agents_t2kg_agent.py +318 -0
  140. aiagents4pharma/talk2knowledgegraphs/tests/test_datasets_biobridge_primekg.py +248 -0
  141. aiagents4pharma/talk2knowledgegraphs/tests/test_datasets_dataset.py +33 -0
  142. aiagents4pharma/talk2knowledgegraphs/tests/test_datasets_primekg.py +86 -0
  143. aiagents4pharma/talk2knowledgegraphs/tests/test_datasets_starkqa_primekg.py +125 -0
  144. aiagents4pharma/talk2knowledgegraphs/tests/test_tools_graphrag_reasoning.py +257 -0
  145. aiagents4pharma/talk2knowledgegraphs/tests/test_tools_milvus_multimodal_subgraph_extraction.py +1444 -0
  146. aiagents4pharma/talk2knowledgegraphs/tests/test_tools_multimodal_subgraph_extraction.py +159 -0
  147. aiagents4pharma/talk2knowledgegraphs/tests/test_tools_subgraph_extraction.py +152 -0
  148. aiagents4pharma/talk2knowledgegraphs/tests/test_tools_subgraph_summarization.py +201 -0
  149. aiagents4pharma/talk2knowledgegraphs/tests/test_utils_database_milvus_connection_manager.py +812 -0
  150. aiagents4pharma/talk2knowledgegraphs/tests/test_utils_embeddings_embeddings.py +51 -0
  151. aiagents4pharma/talk2knowledgegraphs/tests/test_utils_embeddings_huggingface.py +49 -0
  152. aiagents4pharma/talk2knowledgegraphs/tests/test_utils_embeddings_nim_molmim.py +59 -0
  153. aiagents4pharma/talk2knowledgegraphs/tests/test_utils_embeddings_ollama.py +63 -0
  154. aiagents4pharma/talk2knowledgegraphs/tests/test_utils_embeddings_sentencetransformer.py +47 -0
  155. aiagents4pharma/talk2knowledgegraphs/tests/test_utils_enrichments_enrichments.py +40 -0
  156. aiagents4pharma/talk2knowledgegraphs/tests/test_utils_enrichments_ollama.py +94 -0
  157. aiagents4pharma/talk2knowledgegraphs/tests/test_utils_enrichments_ols.py +70 -0
  158. aiagents4pharma/talk2knowledgegraphs/tests/test_utils_enrichments_pubchem.py +45 -0
  159. aiagents4pharma/talk2knowledgegraphs/tests/test_utils_enrichments_reactome.py +44 -0
  160. aiagents4pharma/talk2knowledgegraphs/tests/test_utils_enrichments_uniprot.py +48 -0
  161. aiagents4pharma/talk2knowledgegraphs/tests/test_utils_extractions_milvus_multimodal_pcst.py +759 -0
  162. aiagents4pharma/talk2knowledgegraphs/tests/test_utils_kg_utils.py +78 -0
  163. aiagents4pharma/talk2knowledgegraphs/tests/test_utils_pubchem_utils.py +123 -0
  164. aiagents4pharma/talk2knowledgegraphs/tools/__init__.py +11 -0
  165. aiagents4pharma/talk2knowledgegraphs/tools/graphrag_reasoning.py +138 -0
  166. aiagents4pharma/talk2knowledgegraphs/tools/load_arguments.py +22 -0
  167. aiagents4pharma/talk2knowledgegraphs/tools/milvus_multimodal_subgraph_extraction.py +965 -0
  168. aiagents4pharma/talk2knowledgegraphs/tools/multimodal_subgraph_extraction.py +374 -0
  169. aiagents4pharma/talk2knowledgegraphs/tools/subgraph_extraction.py +291 -0
  170. aiagents4pharma/talk2knowledgegraphs/tools/subgraph_summarization.py +123 -0
  171. aiagents4pharma/talk2knowledgegraphs/utils/__init__.py +5 -0
  172. aiagents4pharma/talk2knowledgegraphs/utils/database/__init__.py +5 -0
  173. aiagents4pharma/talk2knowledgegraphs/utils/database/milvus_connection_manager.py +586 -0
  174. aiagents4pharma/talk2knowledgegraphs/utils/embeddings/__init__.py +5 -0
  175. aiagents4pharma/talk2knowledgegraphs/utils/embeddings/embeddings.py +81 -0
  176. aiagents4pharma/talk2knowledgegraphs/utils/embeddings/huggingface.py +111 -0
  177. aiagents4pharma/talk2knowledgegraphs/utils/embeddings/nim_molmim.py +54 -0
  178. aiagents4pharma/talk2knowledgegraphs/utils/embeddings/ollama.py +87 -0
  179. aiagents4pharma/talk2knowledgegraphs/utils/embeddings/sentence_transformer.py +73 -0
  180. aiagents4pharma/talk2knowledgegraphs/utils/enrichments/__init__.py +12 -0
  181. aiagents4pharma/talk2knowledgegraphs/utils/enrichments/enrichments.py +37 -0
  182. aiagents4pharma/talk2knowledgegraphs/utils/enrichments/ollama.py +129 -0
  183. aiagents4pharma/talk2knowledgegraphs/utils/enrichments/ols_terms.py +89 -0
  184. aiagents4pharma/talk2knowledgegraphs/utils/enrichments/pubchem_strings.py +78 -0
  185. aiagents4pharma/talk2knowledgegraphs/utils/enrichments/reactome_pathways.py +71 -0
  186. aiagents4pharma/talk2knowledgegraphs/utils/enrichments/uniprot_proteins.py +98 -0
  187. aiagents4pharma/talk2knowledgegraphs/utils/extractions/__init__.py +5 -0
  188. aiagents4pharma/talk2knowledgegraphs/utils/extractions/milvus_multimodal_pcst.py +762 -0
  189. aiagents4pharma/talk2knowledgegraphs/utils/extractions/multimodal_pcst.py +298 -0
  190. aiagents4pharma/talk2knowledgegraphs/utils/extractions/pcst.py +229 -0
  191. aiagents4pharma/talk2knowledgegraphs/utils/kg_utils.py +67 -0
  192. aiagents4pharma/talk2knowledgegraphs/utils/pubchem_utils.py +104 -0
  193. aiagents4pharma/talk2scholars/.dockerignore +13 -0
  194. aiagents4pharma/talk2scholars/Dockerfile +104 -0
  195. aiagents4pharma/talk2scholars/README.md +1 -0
  196. aiagents4pharma/talk2scholars/__init__.py +7 -0
  197. aiagents4pharma/talk2scholars/agents/__init__.py +13 -0
  198. aiagents4pharma/talk2scholars/agents/main_agent.py +89 -0
  199. aiagents4pharma/talk2scholars/agents/paper_download_agent.py +96 -0
  200. aiagents4pharma/talk2scholars/agents/pdf_agent.py +101 -0
  201. aiagents4pharma/talk2scholars/agents/s2_agent.py +135 -0
  202. aiagents4pharma/talk2scholars/agents/zotero_agent.py +127 -0
  203. aiagents4pharma/talk2scholars/configs/__init__.py +7 -0
  204. aiagents4pharma/talk2scholars/configs/agents/__init__.py +7 -0
  205. aiagents4pharma/talk2scholars/configs/agents/talk2scholars/__init__.py +7 -0
  206. aiagents4pharma/talk2scholars/configs/agents/talk2scholars/main_agent/__init__.py +3 -0
  207. aiagents4pharma/talk2scholars/configs/agents/talk2scholars/main_agent/default.yaml +52 -0
  208. aiagents4pharma/talk2scholars/configs/agents/talk2scholars/paper_download_agent/__init__.py +3 -0
  209. aiagents4pharma/talk2scholars/configs/agents/talk2scholars/paper_download_agent/default.yaml +19 -0
  210. aiagents4pharma/talk2scholars/configs/agents/talk2scholars/pdf_agent/__init__.py +3 -0
  211. aiagents4pharma/talk2scholars/configs/agents/talk2scholars/pdf_agent/default.yaml +19 -0
  212. aiagents4pharma/talk2scholars/configs/agents/talk2scholars/s2_agent/__init__.py +3 -0
  213. aiagents4pharma/talk2scholars/configs/agents/talk2scholars/s2_agent/default.yaml +44 -0
  214. aiagents4pharma/talk2scholars/configs/agents/talk2scholars/zotero_agent/__init__.py +3 -0
  215. aiagents4pharma/talk2scholars/configs/agents/talk2scholars/zotero_agent/default.yaml +19 -0
  216. aiagents4pharma/talk2scholars/configs/app/__init__.py +7 -0
  217. aiagents4pharma/talk2scholars/configs/app/frontend/__init__.py +3 -0
  218. aiagents4pharma/talk2scholars/configs/app/frontend/default.yaml +72 -0
  219. aiagents4pharma/talk2scholars/configs/config.yaml +16 -0
  220. aiagents4pharma/talk2scholars/configs/tools/__init__.py +21 -0
  221. aiagents4pharma/talk2scholars/configs/tools/multi_paper_recommendation/__init__.py +3 -0
  222. aiagents4pharma/talk2scholars/configs/tools/multi_paper_recommendation/default.yaml +26 -0
  223. aiagents4pharma/talk2scholars/configs/tools/paper_download/__init__.py +3 -0
  224. aiagents4pharma/talk2scholars/configs/tools/paper_download/default.yaml +124 -0
  225. aiagents4pharma/talk2scholars/configs/tools/question_and_answer/__init__.py +3 -0
  226. aiagents4pharma/talk2scholars/configs/tools/question_and_answer/default.yaml +62 -0
  227. aiagents4pharma/talk2scholars/configs/tools/retrieve_semantic_scholar_paper_id/__init__.py +3 -0
  228. aiagents4pharma/talk2scholars/configs/tools/retrieve_semantic_scholar_paper_id/default.yaml +12 -0
  229. aiagents4pharma/talk2scholars/configs/tools/search/__init__.py +3 -0
  230. aiagents4pharma/talk2scholars/configs/tools/search/default.yaml +26 -0
  231. aiagents4pharma/talk2scholars/configs/tools/single_paper_recommendation/__init__.py +3 -0
  232. aiagents4pharma/talk2scholars/configs/tools/single_paper_recommendation/default.yaml +26 -0
  233. aiagents4pharma/talk2scholars/configs/tools/zotero_read/__init__.py +3 -0
  234. aiagents4pharma/talk2scholars/configs/tools/zotero_read/default.yaml +57 -0
  235. aiagents4pharma/talk2scholars/configs/tools/zotero_write/__inti__.py +3 -0
  236. aiagents4pharma/talk2scholars/configs/tools/zotero_write/default.yaml +55 -0
  237. aiagents4pharma/talk2scholars/docker-compose/cpu/.env.example +21 -0
  238. aiagents4pharma/talk2scholars/docker-compose/cpu/docker-compose.yml +90 -0
  239. aiagents4pharma/talk2scholars/docker-compose/gpu/.env.example +21 -0
  240. aiagents4pharma/talk2scholars/docker-compose/gpu/docker-compose.yml +105 -0
  241. aiagents4pharma/talk2scholars/install.md +122 -0
  242. aiagents4pharma/talk2scholars/state/__init__.py +7 -0
  243. aiagents4pharma/talk2scholars/state/state_talk2scholars.py +98 -0
  244. aiagents4pharma/talk2scholars/tests/__init__.py +3 -0
  245. aiagents4pharma/talk2scholars/tests/test_agents_main_agent.py +256 -0
  246. aiagents4pharma/talk2scholars/tests/test_agents_paper_agents_download_agent.py +139 -0
  247. aiagents4pharma/talk2scholars/tests/test_agents_pdf_agent.py +114 -0
  248. aiagents4pharma/talk2scholars/tests/test_agents_s2_agent.py +198 -0
  249. aiagents4pharma/talk2scholars/tests/test_agents_zotero_agent.py +160 -0
  250. aiagents4pharma/talk2scholars/tests/test_s2_tools_display_dataframe.py +91 -0
  251. aiagents4pharma/talk2scholars/tests/test_s2_tools_query_dataframe.py +191 -0
  252. aiagents4pharma/talk2scholars/tests/test_states_state.py +38 -0
  253. aiagents4pharma/talk2scholars/tests/test_tools_paper_downloader.py +507 -0
  254. aiagents4pharma/talk2scholars/tests/test_tools_question_and_answer_tool.py +105 -0
  255. aiagents4pharma/talk2scholars/tests/test_tools_s2_multi.py +307 -0
  256. aiagents4pharma/talk2scholars/tests/test_tools_s2_retrieve.py +67 -0
  257. aiagents4pharma/talk2scholars/tests/test_tools_s2_search.py +286 -0
  258. aiagents4pharma/talk2scholars/tests/test_tools_s2_single.py +298 -0
  259. aiagents4pharma/talk2scholars/tests/test_utils_arxiv_downloader.py +469 -0
  260. aiagents4pharma/talk2scholars/tests/test_utils_base_paper_downloader.py +598 -0
  261. aiagents4pharma/talk2scholars/tests/test_utils_biorxiv_downloader.py +669 -0
  262. aiagents4pharma/talk2scholars/tests/test_utils_medrxiv_downloader.py +500 -0
  263. aiagents4pharma/talk2scholars/tests/test_utils_nvidia_nim_reranker.py +117 -0
  264. aiagents4pharma/talk2scholars/tests/test_utils_pdf_answer_formatter.py +67 -0
  265. aiagents4pharma/talk2scholars/tests/test_utils_pdf_batch_processor.py +92 -0
  266. aiagents4pharma/talk2scholars/tests/test_utils_pdf_collection_manager.py +173 -0
  267. aiagents4pharma/talk2scholars/tests/test_utils_pdf_document_processor.py +68 -0
  268. aiagents4pharma/talk2scholars/tests/test_utils_pdf_generate_answer.py +72 -0
  269. aiagents4pharma/talk2scholars/tests/test_utils_pdf_gpu_detection.py +129 -0
  270. aiagents4pharma/talk2scholars/tests/test_utils_pdf_paper_loader.py +116 -0
  271. aiagents4pharma/talk2scholars/tests/test_utils_pdf_rag_pipeline.py +88 -0
  272. aiagents4pharma/talk2scholars/tests/test_utils_pdf_retrieve_chunks.py +190 -0
  273. aiagents4pharma/talk2scholars/tests/test_utils_pdf_singleton_manager.py +159 -0
  274. aiagents4pharma/talk2scholars/tests/test_utils_pdf_vector_normalization.py +121 -0
  275. aiagents4pharma/talk2scholars/tests/test_utils_pdf_vector_store.py +406 -0
  276. aiagents4pharma/talk2scholars/tests/test_utils_pubmed_downloader.py +1007 -0
  277. aiagents4pharma/talk2scholars/tests/test_utils_read_helper_utils.py +106 -0
  278. aiagents4pharma/talk2scholars/tests/test_utils_s2_utils_ext_ids.py +403 -0
  279. aiagents4pharma/talk2scholars/tests/test_utils_tool_helper_utils.py +85 -0
  280. aiagents4pharma/talk2scholars/tests/test_utils_zotero_human_in_the_loop.py +266 -0
  281. aiagents4pharma/talk2scholars/tests/test_utils_zotero_path.py +496 -0
  282. aiagents4pharma/talk2scholars/tests/test_utils_zotero_pdf_downloader_utils.py +46 -0
  283. aiagents4pharma/talk2scholars/tests/test_utils_zotero_read.py +743 -0
  284. aiagents4pharma/talk2scholars/tests/test_utils_zotero_write.py +151 -0
  285. aiagents4pharma/talk2scholars/tools/__init__.py +9 -0
  286. aiagents4pharma/talk2scholars/tools/paper_download/__init__.py +12 -0
  287. aiagents4pharma/talk2scholars/tools/paper_download/paper_downloader.py +442 -0
  288. aiagents4pharma/talk2scholars/tools/paper_download/utils/__init__.py +22 -0
  289. aiagents4pharma/talk2scholars/tools/paper_download/utils/arxiv_downloader.py +207 -0
  290. aiagents4pharma/talk2scholars/tools/paper_download/utils/base_paper_downloader.py +336 -0
  291. aiagents4pharma/talk2scholars/tools/paper_download/utils/biorxiv_downloader.py +313 -0
  292. aiagents4pharma/talk2scholars/tools/paper_download/utils/medrxiv_downloader.py +196 -0
  293. aiagents4pharma/talk2scholars/tools/paper_download/utils/pubmed_downloader.py +323 -0
  294. aiagents4pharma/talk2scholars/tools/pdf/__init__.py +7 -0
  295. aiagents4pharma/talk2scholars/tools/pdf/question_and_answer.py +170 -0
  296. aiagents4pharma/talk2scholars/tools/pdf/utils/__init__.py +37 -0
  297. aiagents4pharma/talk2scholars/tools/pdf/utils/answer_formatter.py +62 -0
  298. aiagents4pharma/talk2scholars/tools/pdf/utils/batch_processor.py +198 -0
  299. aiagents4pharma/talk2scholars/tools/pdf/utils/collection_manager.py +172 -0
  300. aiagents4pharma/talk2scholars/tools/pdf/utils/document_processor.py +76 -0
  301. aiagents4pharma/talk2scholars/tools/pdf/utils/generate_answer.py +97 -0
  302. aiagents4pharma/talk2scholars/tools/pdf/utils/get_vectorstore.py +59 -0
  303. aiagents4pharma/talk2scholars/tools/pdf/utils/gpu_detection.py +150 -0
  304. aiagents4pharma/talk2scholars/tools/pdf/utils/nvidia_nim_reranker.py +97 -0
  305. aiagents4pharma/talk2scholars/tools/pdf/utils/paper_loader.py +123 -0
  306. aiagents4pharma/talk2scholars/tools/pdf/utils/rag_pipeline.py +113 -0
  307. aiagents4pharma/talk2scholars/tools/pdf/utils/retrieve_chunks.py +197 -0
  308. aiagents4pharma/talk2scholars/tools/pdf/utils/singleton_manager.py +140 -0
  309. aiagents4pharma/talk2scholars/tools/pdf/utils/tool_helper.py +86 -0
  310. aiagents4pharma/talk2scholars/tools/pdf/utils/vector_normalization.py +150 -0
  311. aiagents4pharma/talk2scholars/tools/pdf/utils/vector_store.py +327 -0
  312. aiagents4pharma/talk2scholars/tools/s2/__init__.py +21 -0
  313. aiagents4pharma/talk2scholars/tools/s2/display_dataframe.py +110 -0
  314. aiagents4pharma/talk2scholars/tools/s2/multi_paper_rec.py +111 -0
  315. aiagents4pharma/talk2scholars/tools/s2/query_dataframe.py +233 -0
  316. aiagents4pharma/talk2scholars/tools/s2/retrieve_semantic_scholar_paper_id.py +128 -0
  317. aiagents4pharma/talk2scholars/tools/s2/search.py +101 -0
  318. aiagents4pharma/talk2scholars/tools/s2/single_paper_rec.py +102 -0
  319. aiagents4pharma/talk2scholars/tools/s2/utils/__init__.py +5 -0
  320. aiagents4pharma/talk2scholars/tools/s2/utils/multi_helper.py +223 -0
  321. aiagents4pharma/talk2scholars/tools/s2/utils/search_helper.py +205 -0
  322. aiagents4pharma/talk2scholars/tools/s2/utils/single_helper.py +216 -0
  323. aiagents4pharma/talk2scholars/tools/zotero/__init__.py +7 -0
  324. aiagents4pharma/talk2scholars/tools/zotero/utils/__init__.py +7 -0
  325. aiagents4pharma/talk2scholars/tools/zotero/utils/read_helper.py +270 -0
  326. aiagents4pharma/talk2scholars/tools/zotero/utils/review_helper.py +74 -0
  327. aiagents4pharma/talk2scholars/tools/zotero/utils/write_helper.py +194 -0
  328. aiagents4pharma/talk2scholars/tools/zotero/utils/zotero_path.py +180 -0
  329. aiagents4pharma/talk2scholars/tools/zotero/utils/zotero_pdf_downloader.py +133 -0
  330. aiagents4pharma/talk2scholars/tools/zotero/zotero_read.py +105 -0
  331. aiagents4pharma/talk2scholars/tools/zotero/zotero_review.py +162 -0
  332. aiagents4pharma/talk2scholars/tools/zotero/zotero_write.py +91 -0
  333. aiagents4pharma-0.0.0.dist-info/METADATA +335 -0
  334. aiagents4pharma-0.0.0.dist-info/RECORD +336 -0
  335. aiagents4pharma-0.0.0.dist-info/WHEEL +4 -0
  336. aiagents4pharma-0.0.0.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,62 @@
1
+ # Configuration for the PDF question_and_answer Tool - Traditional RAG Pipeline with GPU Support
2
+
3
+ # Milvus vector database settings
4
+ milvus:
5
+ # Connection settings
6
+ host: ${oc.env:MILVUS_HOST,localhost} # Changed default from 127.0.0.1 to localhost
7
+ port: ${oc.env:MILVUS_PORT,19530}
8
+
9
+ # Database and collection settings
10
+ db_name: ${oc.env:MILVUS_DB_NAME,pdf_rag_db}
11
+ collection_name: ${oc.env:MILVUS_COLLECTION_NAME,pdf_rag_documents}
12
+
13
+ # Ensure collection persists across restarts
14
+ consistency_level: "Strong"
15
+ embedding_dim: 768
16
+
17
+ # Document processing settings
18
+ chunk_size: 1200 # Number of characters per text chunk
19
+ chunk_overlap: 200 # Overlap between adjacent chunks
20
+
21
+ # Parallel processing settings
22
+ embedding_batch_size: 1500 # Number of chunks to embed in a single API call
23
+ max_parallel_pdfs: 10 # Maximum number of PDFs to process in parallel
24
+
25
+ # Traditional RAG Pipeline Settings
26
+ # Step 1: Initial retrieval (cast wide net)
27
+ initial_retrieval_k: 100 # Number of chunks to retrieve before reranking
28
+ mmr_diversity: 0.8 # MMR diversity parameter (0=max diversity, 1=max relevance)
29
+
30
+ # Step 2: Reranking settings
31
+ top_k_chunks: 25 # Final number of chunks after reranking
32
+ reranker:
33
+ model: "nvidia/nv-rerankqa-mistral-4b-v3"
34
+ api_key: ${oc.env:NVIDIA_API_KEY}
35
+
36
+ # Answer generation settings
37
+ prompt_template: |
38
+ You are a scientific research assistant specialized in reading and extracting information from research papers.
39
+ Your role is to answer questions by retrieving relevant information from the provided context.
40
+
41
+ - Provide detailed, structured, and well-argued explanations—not just brief summaries.
42
+ - Cite specific sources using only the title of the paper.
43
+ - If the context is insufficient, clearly state that more information is needed.
44
+
45
+ Context:
46
+ {context}
47
+
48
+ Question: {question}
49
+
50
+ Your answer should be comprehensive, accurate, and clearly structured for a scientific audience.
51
+
52
+ # GPU Detection and Performance Settings
53
+ gpu_detection:
54
+ # Timeout for GPU detection command (seconds)
55
+ detection_timeout: 10
56
+
57
+ # Log GPU detection results
58
+ log_detection: true
59
+
60
+ # Force CPU mode even if GPU is detected (for testing CPU Milvus)
61
+ # Uncomment the line below to force CPU mode:
62
+ # force_cpu_mode: true
@@ -0,0 +1,3 @@
1
+ """
2
+ Import all the modules in the package
3
+ """
@@ -0,0 +1,12 @@
1
+ api_endpoint: "https://api.semanticscholar.org/graph/v1/paper/search"
2
+ request_timeout: 10
3
+ api_fields:
4
+ - "paperId"
5
+ - "title"
6
+ - "abstract"
7
+ - "year"
8
+ - "authors"
9
+ - "citationCount"
10
+ - "url"
11
+ # Commented fields that could be added later if needed
12
+ # - "externalIds"
@@ -0,0 +1,3 @@
1
+ """
2
+ Import all the modules in the package
3
+ """
@@ -0,0 +1,26 @@
1
+ api_endpoint: "https://api.semanticscholar.org/graph/v1/paper/search"
2
+ default_limit: 2
3
+ request_timeout: 10
4
+ api_fields:
5
+ - "paperId"
6
+ - "title"
7
+ - "abstract"
8
+ - "year"
9
+ - "authors.name"
10
+ - "authors.authorId"
11
+ - "citationCount"
12
+ - "url"
13
+ - "externalIds"
14
+ - "venue"
15
+ - "publicationVenue" # Full object, instead of specific subfields
16
+ - "journal" # Full object, instead of specific subfields
17
+ - "publicationDate"
18
+
19
+ # Commented fields that could be added later if needed
20
+ # - "publicationTypes"
21
+ # - "openAccessPdf"
22
+
23
+ # Default search parameters
24
+ search_params:
25
+ limit: ${.default_limit} # Reference to the default_limit above
26
+ fields: ${.api_fields} # Reference to the api_fields above
@@ -0,0 +1,3 @@
1
+ """
2
+ Import all the modules in the package
3
+ """
@@ -0,0 +1,26 @@
1
+ api_endpoint: "https://api.semanticscholar.org/recommendations/v1/papers/forpaper"
2
+ default_limit: 2
3
+ request_timeout: 10
4
+ api_fields:
5
+ - "paperId"
6
+ - "title"
7
+ - "abstract"
8
+ - "year"
9
+ - "authors.name"
10
+ - "authors.authorId"
11
+ - "citationCount"
12
+ - "url"
13
+ - "externalIds"
14
+ - "venue"
15
+ - "publicationVenue" # Full object, instead of specific subfields
16
+ - "journal" # Full object, instead of specific subfields
17
+ - "publicationDate"
18
+ # Commented fields that could be added later if needed
19
+ # - "publicationTypes"
20
+ # - "openAccessPdf"
21
+
22
+ # Default recommendation parameters
23
+ recommendation_params:
24
+ limit: ${.default_limit} # Reference to the default_limit above
25
+ fields: ${.api_fields} # Reference to the api_fields above
26
+ from_pool: "all-cs" # Using all-cs pool as specified in docs
@@ -0,0 +1,3 @@
1
+ """
2
+ Import all the modules in the package
3
+ """
@@ -0,0 +1,57 @@
1
+ # Default configuration for Zotero search tool
2
+ library_type: "user" # Type of library ('user' or 'group')
3
+ default_limit: 2
4
+ request_timeout: 10
5
+ chunk_size: 16384 # Size (in bytes) for streaming PDF download chunks
6
+ user_id: ${oc.env:ZOTERO_USER_ID} # Load from environment variable
7
+ api_key: ${oc.env:ZOTERO_API_KEY} # Load from environment variable
8
+
9
+ # Default search parameters
10
+ search_params:
11
+ limit: ${.default_limit}
12
+
13
+ # Item Types and Limit
14
+ zotero:
15
+ max_limit: 100
16
+ filter_item_types:
17
+ [
18
+ "Artwork",
19
+ "Audio Recording",
20
+ "Bill",
21
+ "Blog Post",
22
+ "Book",
23
+ "Book Section",
24
+ "Case",
25
+ "Conference Paper",
26
+ "Dataset",
27
+ "Dictionary Entry",
28
+ "Document",
29
+ "E-mail",
30
+ "Encyclopedia Article",
31
+ "Film",
32
+ "Forum Post",
33
+ "Hearing",
34
+ "Instant Message",
35
+ "Interview",
36
+ "Journal Article",
37
+ "Letter",
38
+ "Magazine Article",
39
+ "Manuscript",
40
+ "Map",
41
+ "Newspaper Article",
42
+ "Patent",
43
+ "Podcast",
44
+ "Preprint",
45
+ "Presentation",
46
+ "Radio Broadcast",
47
+ "Report",
48
+ "Software",
49
+ "Standard",
50
+ "Statute",
51
+ "Thesis",
52
+ "TV Broadcast",
53
+ "Video Recording",
54
+ "Web Page",
55
+ ]
56
+
57
+ # filter_excluded_types: ["attachment", "note", "annotation"]
@@ -0,0 +1,3 @@
1
+ """
2
+ Import all the modules in the package
3
+ """
@@ -0,0 +1,55 @@
1
+ # Default configuration for Zotero search tool
2
+ library_type: "user" # Type of library ('user' or 'group')
3
+ default_limit: 2
4
+ request_timeout: 10
5
+ user_id: ${oc.env:ZOTERO_USER_ID} # Load from environment variable
6
+ api_key: ${oc.env:ZOTERO_API_KEY} # Load from environment variable
7
+
8
+ # Default search parameters
9
+ search_params:
10
+ limit: ${.default_limit}
11
+
12
+ # Item Types and Limit
13
+ zotero:
14
+ max_limit: 100
15
+ filter_item_types:
16
+ [
17
+ "Artwork",
18
+ "Audio Recording",
19
+ "Bill",
20
+ "Blog Post",
21
+ "Book",
22
+ "Book Section",
23
+ "Case",
24
+ "Conference Paper",
25
+ "Dataset",
26
+ "Dictionary Entry",
27
+ "Document",
28
+ "E-mail",
29
+ "Encyclopedia Article",
30
+ "Film",
31
+ "Forum Post",
32
+ "Hearing",
33
+ "Instant Message",
34
+ "Interview",
35
+ "Journal Article",
36
+ "Letter",
37
+ "Magazine Article",
38
+ "Manuscript",
39
+ "Map",
40
+ "Newspaper Article",
41
+ "Patent",
42
+ "Podcast",
43
+ "Preprint",
44
+ "Presentation",
45
+ "Radio Broadcast",
46
+ "Report",
47
+ "Software",
48
+ "Standard",
49
+ "Statute",
50
+ "Thesis",
51
+ "TV Broadcast",
52
+ "Video Recording",
53
+ "Web Page",
54
+ ]
55
+ # filter_excluded_types: ["attachment", "note", "annotation"]
@@ -0,0 +1,21 @@
1
+ # .env.example (DO NOT put actual API keys here, read the README.md)
2
+
3
+ # OPENAI API KEY
4
+ OPENAI_API_KEY=your_openai_api_key_here
5
+
6
+ # LangSmith API KEY
7
+ LANGCHAIN_TRACING_V2=true
8
+ LANGCHAIN_API_KEY=your_langchain_api_key_heres
9
+
10
+ # NVIDIA API KEY
11
+ NVIDIA_API_KEY=your_nvidia_api_key_here
12
+
13
+ # ZOTERO API KEY
14
+ ZOTERO_API_KEY=your_zotero_api_key_here
15
+ ZOTERO_USER_ID=your_zotero_user_id_here
16
+
17
+ # Set environment variables for data loader
18
+ MILVUS_HOST=milvus-standalone
19
+ MILVUS_PORT=19530
20
+ MILVUS_DB_NAME=pdf_rag_db
21
+ MILVUS_COLLECTION_NAME=pdf_rag_documents
@@ -0,0 +1,90 @@
1
+ version: "1.0.0"
2
+
3
+ services:
4
+ # talk2scholars
5
+ talk2scholars:
6
+ container_name: talk2scholars
7
+ image: vpatientengine/talk2scholars:latest
8
+ platform: linux/amd64
9
+ ports:
10
+ - "8501:8501"
11
+ environment:
12
+ - MILVUS_HOST=milvus-standalone
13
+ - MILVUS_PORT=19530
14
+ env_file:
15
+ - .env
16
+ healthcheck:
17
+ test: ["CMD", "curl", "-f", "http://localhost:8501/health"]
18
+ interval: 30s
19
+ timeout: 10s
20
+ retries: 3
21
+ start_period: 30s
22
+ depends_on:
23
+ milvus-standalone:
24
+ condition: service_healthy
25
+
26
+ # Milvus Dependencies
27
+ etcd:
28
+ container_name: milvus-etcd
29
+ image: quay.io/coreos/etcd:v3.5.18
30
+ environment:
31
+ - ETCD_AUTO_COMPACTION_MODE=revision
32
+ - ETCD_AUTO_COMPACTION_RETENTION=1000
33
+ - ETCD_QUOTA_BACKEND_BYTES=4294967296
34
+ - ETCD_SNAPSHOT_COUNT=50000
35
+ volumes:
36
+ - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/etcd:/etcd
37
+ command: etcd -advertise-client-urls=http://etcd:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd
38
+ healthcheck:
39
+ test: ["CMD", "etcdctl", "endpoint", "health"]
40
+ interval: 30s
41
+ timeout: 20s
42
+ retries: 3
43
+
44
+ minio:
45
+ container_name: milvus-minio
46
+ image: minio/minio:RELEASE.2024-05-28T17-19-04Z
47
+ environment:
48
+ MINIO_ACCESS_KEY: minioadmin
49
+ MINIO_SECRET_KEY: minioadmin
50
+ ports:
51
+ - "9001:9001"
52
+ - "9000:9000"
53
+ volumes:
54
+ - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/minio:/minio_data
55
+ command: minio server /minio_data --console-address ":9001"
56
+ healthcheck:
57
+ test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
58
+ interval: 30s
59
+ timeout: 20s
60
+ retries: 3
61
+
62
+ # Milvus Vector Database (CPU-only)
63
+ milvus-standalone:
64
+ container_name: milvus-standalone
65
+ image: milvusdb/milvus:v2.5.14
66
+ command: ["milvus", "run", "standalone"]
67
+ security_opt:
68
+ - seccomp:unconfined
69
+ environment:
70
+ MINIO_REGION: us-east-1
71
+ ETCD_ENDPOINTS: etcd:2379
72
+ MINIO_ADDRESS: minio:9000
73
+ volumes:
74
+ - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/milvus:/var/lib/milvus
75
+ ports:
76
+ - "19530:19530"
77
+ - "9091:9091"
78
+ healthcheck:
79
+ test: ["CMD", "curl", "-f", "http://localhost:9091/healthz"]
80
+ interval: 30s
81
+ start_period: 90s
82
+ timeout: 20s
83
+ retries: 3
84
+ depends_on:
85
+ - "etcd"
86
+ - "minio"
87
+
88
+ networks:
89
+ milvus:
90
+ name: milvus
@@ -0,0 +1,21 @@
1
+ # .env.example (DO NOT put actual API keys here, read the README.md)
2
+
3
+ # OPENAI API KEY
4
+ OPENAI_API_KEY=your_openai_api_key_here
5
+
6
+ # LangSmith API KEY
7
+ LANGCHAIN_TRACING_V2=true
8
+ LANGCHAIN_API_KEY=your_langchain_api_key_heres
9
+
10
+ # NVIDIA API KEY
11
+ NVIDIA_API_KEY=your_nvidia_api_key_here
12
+
13
+ # ZOTERO API KEY
14
+ ZOTERO_API_KEY=your_zotero_api_key_here
15
+ ZOTERO_USER_ID=your_zotero_user_id_here
16
+
17
+ # Set environment variables for data loader
18
+ MILVUS_HOST=milvus-standalone
19
+ MILVUS_PORT=19530
20
+ MILVUS_DB_NAME=pdf_rag_db
21
+ MILVUS_COLLECTION_NAME=pdf_rag_documents
@@ -0,0 +1,105 @@
1
+ version: "1.0.0"
2
+
3
+ services:
4
+ # talk2scholars
5
+ talk2scholars:
6
+ container_name: talk2scholars
7
+ image: vpatientengine/talk2scholars:latest
8
+ platform: linux/amd64
9
+ ports:
10
+ - "8501:8501"
11
+ deploy:
12
+ resources:
13
+ reservations:
14
+ devices:
15
+ - driver: nvidia
16
+ capabilities: ["gpu"]
17
+ device_ids: ["0"]
18
+ environment:
19
+ - MILVUS_HOST=milvus-standalone
20
+ - MILVUS_PORT=19530
21
+ env_file:
22
+ - .env
23
+ healthcheck:
24
+ test: ["CMD", "curl", "-f", "http://localhost:8501/health"]
25
+ interval: 30s
26
+ timeout: 10s
27
+ retries: 3
28
+ start_period: 30s
29
+ depends_on:
30
+ milvus-standalone:
31
+ condition: service_healthy
32
+
33
+ # Milvus Dependencies
34
+ etcd:
35
+ container_name: milvus-etcd
36
+ image: quay.io/coreos/etcd:v3.5.18
37
+ environment:
38
+ - ETCD_AUTO_COMPACTION_MODE=revision
39
+ - ETCD_AUTO_COMPACTION_RETENTION=1000
40
+ - ETCD_QUOTA_BACKEND_BYTES=4294967296
41
+ - ETCD_SNAPSHOT_COUNT=50000
42
+ volumes:
43
+ - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/etcd:/etcd
44
+ command: etcd -advertise-client-urls=http://etcd:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd
45
+ healthcheck:
46
+ test: ["CMD", "etcdctl", "endpoint", "health"]
47
+ interval: 30s
48
+ timeout: 20s
49
+ retries: 3
50
+
51
+ minio:
52
+ container_name: milvus-minio
53
+ image: minio/minio:RELEASE.2023-03-20T20-16-18Z
54
+ environment:
55
+ MINIO_ACCESS_KEY: minioadmin
56
+ MINIO_SECRET_KEY: minioadmin
57
+ ports:
58
+ - "9001:9001"
59
+ - "9000:9000"
60
+ volumes:
61
+ - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/minio:/minio_data
62
+ command: minio server /minio_data --console-address ":9001"
63
+ healthcheck:
64
+ test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
65
+ interval: 30s
66
+ timeout: 20s
67
+ retries: 3
68
+
69
+ # Milvus Vector Database (GPU-enabled)
70
+ milvus-standalone:
71
+ container_name: milvus-standalone
72
+ image: milvusdb/milvus:v2.6.0-rc1-gpu
73
+ command: ["milvus", "run", "standalone"]
74
+ security_opt:
75
+ - seccomp:unconfined
76
+ environment:
77
+ MINIO_REGION: us-east-1
78
+ ETCD_ENDPOINTS: etcd:2379
79
+ MINIO_ADDRESS: minio:9000
80
+ MQ_TYPE: woodpecker
81
+ volumes:
82
+ - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/milvus:/var/lib/milvus
83
+ ports:
84
+ - "19530:19530"
85
+ - "9091:9091"
86
+ deploy:
87
+ resources:
88
+ reservations:
89
+ devices:
90
+ - driver: nvidia
91
+ capabilities: ["gpu"]
92
+ device_ids: ["0"]
93
+ healthcheck:
94
+ test: ["CMD", "curl", "-f", "http://localhost:9091/healthz"]
95
+ interval: 30s
96
+ start_period: 90s
97
+ timeout: 20s
98
+ retries: 3
99
+ depends_on:
100
+ - "etcd"
101
+ - "minio"
102
+
103
+ networks:
104
+ milvus:
105
+ name: milvus
@@ -0,0 +1,122 @@
1
+ # Talk2Scholars
2
+
3
+ ## Installation
4
+
5
+ - [nvidia-cuda-toolkit](https://developer.nvidia.com/cuda-toolkit)
6
+ - [nvidia-container-toolkit](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/1.17.8/install-guide.html) (required for GPU support with Docker; enables containers to access NVIDIA GPUs for accelerated computing). After installing `nvidia-container-toolkit`, please restart Docker to ensure GPU support is enabled.
7
+
8
+ ### Docker (stable-release)
9
+
10
+ **Prerequisites**
11
+
12
+ - [Milvus](https://milvus.io) (for a vector database)
13
+
14
+ ---
15
+
16
+ #### 1. Download files
17
+
18
+ Choose the appropriate version of the `docker-compose.yml` file based on your system:
19
+
20
+ **For GPU:**
21
+
22
+ ```sh
23
+ wget https://raw.githubusercontent.com/VirtualPatientEngine/AIAgents4Pharma/main/aiagents4pharma/talk2scholars/docker-compose/gpu/docker-compose.yml \
24
+ https://raw.githubusercontent.com/VirtualPatientEngine/AIAgents4Pharma/main/aiagents4pharma/talk2scholars/docker-compose/gpu/.env.example
25
+ ```
26
+
27
+ **For CPU:**
28
+
29
+ ```sh
30
+ wget https://raw.githubusercontent.com/VirtualPatientEngine/AIAgents4Pharma/main/aiagents4pharma/talk2scholars/docker-compose/cpu/docker-compose.yml \
31
+ https://raw.githubusercontent.com/VirtualPatientEngine/AIAgents4Pharma/main/aiagents4pharma/talk2scholars/docker-compose/cpu/.env.example
32
+ ```
33
+
34
+ #### 2. Setup environment variables
35
+
36
+ ```sh
37
+ cp .env.example .env
38
+ ```
39
+
40
+ Edit `.env` with your API keys:
41
+
42
+ ```env
43
+ # .env.example (DO NOT put actual API keys here, read the README.md)
44
+
45
+ # OPENAI API KEY
46
+ OPENAI_API_KEY=your_openai_api_key_here
47
+
48
+ # LangSmith API KEY
49
+ LANGCHAIN_TRACING_V2=true
50
+ LANGCHAIN_API_KEY=your_langchain_api_key_heres
51
+
52
+ # NVIDIA API KEY
53
+ NVIDIA_API_KEY=your_nvidia_api_key_here
54
+
55
+ # ZOTERO API KEY
56
+ ZOTERO_API_KEY=your_zotero_api_key_here
57
+ ZOTERO_USER_ID=your_zotero_user_id_here
58
+
59
+ # Set environment variables for data loader
60
+ MILVUS_HOST=milvus-standalone
61
+ MILVUS_PORT=19530
62
+ MILVUS_DB_NAME=pdf_rag_db
63
+ MILVUS_COLLECTION_NAME=pdf_rag_documents
64
+ ```
65
+
66
+ ---
67
+
68
+ #### 3. Start the agent
69
+
70
+ ```sh
71
+ docker compose up -d
72
+ ```
73
+
74
+ ---
75
+
76
+ ### Access the Web UI
77
+
78
+ Once started, open:
79
+
80
+ ```
81
+ http://localhost:8501
82
+ ```
83
+
84
+ > In the background, the BioBridge multimodal embeddings will be inserted into the Milvus database, and the `talk2scholars` service will start. Once the data is fully inserted, the application will be in a healthy state and accessible at the above address.
85
+ >
86
+ > You can monitor the process using:
87
+ >
88
+ > ```sh
89
+ > docker logs -f talk2scholars
90
+ > ```
91
+
92
+ ---
93
+
94
+ ## Get Key
95
+
96
+ - `NVIDIA_API_KEY` – required (obtain a free key at [https://build.nvidia.com/explore/discover](https://build.nvidia.com/explore/discover))
97
+ - `ZOTERO_API_KEY` – required (generate at [https://www.zotero.org/user/login#applications](https://www.zotero.org/user/login#applications))
98
+
99
+ **LangSmith** support is optional. To enable it, create an API key [here](https://docs.smith.langchain.com/administration/how_to_guides/organization_management/create_account_api_key).
100
+
101
+ _Please note that this will create a new tracing project in your Langsmith
102
+ account with the name `T2X-xxxx`, where `X` can be `KG` (KnowledgeGraphs).
103
+ If you skip the previous step, it will default to the name `default`.
104
+ `xxxx` will be the 4-digit ID created for the session._
105
+
106
+ ---
107
+
108
+ ## Notes for Windows Users
109
+
110
+ If you are using Windows, it is recommended to install [**Git Bash**](https://git-scm.com/downloads) for a smoother experience when running the bash commands in this guide.
111
+
112
+ - For applications that use **Docker Compose**, Git Bash is **required**.
113
+ - For applications that use **docker run** manually, Git Bash is **optional**, but recommended for consistency.
114
+
115
+ You can download Git Bash here: [Git for Windows](https://git-scm.com/downloads).
116
+
117
+ When using Docker on Windows, make sure you **run Docker with administrative privileges** if you face permission issues.
118
+
119
+ To resolve permission issues, you can:
120
+
121
+ - Review the official Docker documentation on [Windows permission requirements](https://docs.docker.com/desktop/setup/install/windows-permission-requirements/).
122
+ - Alternatively, follow the community discussion and solutions on [Docker Community Forums](https://forums.docker.com/t/error-when-trying-to-run-windows-containers-docker-client-must-be-run-with-elevated-privileges/136619).
@@ -0,0 +1,7 @@
1
+ """
2
+ This file is used to import all the modules in the package.
3
+ """
4
+
5
+ from . import state_talk2scholars
6
+
7
+ __all__ = ["state_talk2scholars"]