aiagents4pharma 1.44.0__py3-none-any.whl → 1.45.1__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 (289) hide show
  1. aiagents4pharma/__init__.py +2 -2
  2. aiagents4pharma/talk2aiagents4pharma/.dockerignore +13 -0
  3. aiagents4pharma/talk2aiagents4pharma/Dockerfile +105 -0
  4. aiagents4pharma/talk2aiagents4pharma/README.md +1 -0
  5. aiagents4pharma/talk2aiagents4pharma/__init__.py +4 -5
  6. aiagents4pharma/talk2aiagents4pharma/agents/__init__.py +3 -2
  7. aiagents4pharma/talk2aiagents4pharma/agents/main_agent.py +24 -23
  8. aiagents4pharma/talk2aiagents4pharma/configs/__init__.py +2 -2
  9. aiagents4pharma/talk2aiagents4pharma/configs/agents/__init__.py +2 -2
  10. aiagents4pharma/talk2aiagents4pharma/configs/agents/main_agent/default.yaml +2 -2
  11. aiagents4pharma/talk2aiagents4pharma/configs/config.yaml +1 -1
  12. aiagents4pharma/talk2aiagents4pharma/docker-compose/cpu/.env.example +23 -0
  13. aiagents4pharma/talk2aiagents4pharma/docker-compose/cpu/docker-compose.yml +93 -0
  14. aiagents4pharma/talk2aiagents4pharma/docker-compose/gpu/.env.example +23 -0
  15. aiagents4pharma/talk2aiagents4pharma/docker-compose/gpu/docker-compose.yml +108 -0
  16. aiagents4pharma/talk2aiagents4pharma/install.md +127 -0
  17. aiagents4pharma/talk2aiagents4pharma/states/__init__.py +3 -2
  18. aiagents4pharma/talk2aiagents4pharma/states/state_talk2aiagents4pharma.py +5 -3
  19. aiagents4pharma/talk2aiagents4pharma/tests/__init__.py +2 -2
  20. aiagents4pharma/talk2aiagents4pharma/tests/test_main_agent.py +72 -50
  21. aiagents4pharma/talk2biomodels/.dockerignore +13 -0
  22. aiagents4pharma/talk2biomodels/Dockerfile +104 -0
  23. aiagents4pharma/talk2biomodels/README.md +1 -0
  24. aiagents4pharma/talk2biomodels/__init__.py +4 -8
  25. aiagents4pharma/talk2biomodels/agents/__init__.py +3 -2
  26. aiagents4pharma/talk2biomodels/agents/t2b_agent.py +47 -42
  27. aiagents4pharma/talk2biomodels/api/__init__.py +4 -5
  28. aiagents4pharma/talk2biomodels/api/kegg.py +14 -10
  29. aiagents4pharma/talk2biomodels/api/ols.py +13 -10
  30. aiagents4pharma/talk2biomodels/api/uniprot.py +7 -6
  31. aiagents4pharma/talk2biomodels/configs/__init__.py +3 -4
  32. aiagents4pharma/talk2biomodels/configs/agents/__init__.py +2 -2
  33. aiagents4pharma/talk2biomodels/configs/agents/t2b_agent/__init__.py +2 -2
  34. aiagents4pharma/talk2biomodels/configs/agents/t2b_agent/default.yaml +1 -1
  35. aiagents4pharma/talk2biomodels/configs/config.yaml +1 -1
  36. aiagents4pharma/talk2biomodels/configs/tools/__init__.py +4 -5
  37. aiagents4pharma/talk2biomodels/configs/tools/ask_question/__init__.py +2 -2
  38. aiagents4pharma/talk2biomodels/configs/tools/ask_question/default.yaml +1 -2
  39. aiagents4pharma/talk2biomodels/configs/tools/custom_plotter/__init__.py +2 -2
  40. aiagents4pharma/talk2biomodels/configs/tools/custom_plotter/default.yaml +1 -1
  41. aiagents4pharma/talk2biomodels/configs/tools/get_annotation/__init__.py +2 -2
  42. aiagents4pharma/talk2biomodels/configs/tools/get_annotation/default.yaml +1 -1
  43. aiagents4pharma/talk2biomodels/install.md +63 -0
  44. aiagents4pharma/talk2biomodels/models/__init__.py +4 -4
  45. aiagents4pharma/talk2biomodels/models/basico_model.py +36 -28
  46. aiagents4pharma/talk2biomodels/models/sys_bio_model.py +13 -10
  47. aiagents4pharma/talk2biomodels/states/__init__.py +3 -2
  48. aiagents4pharma/talk2biomodels/states/state_talk2biomodels.py +12 -8
  49. aiagents4pharma/talk2biomodels/tests/BIOMD0000000449_url.xml +1585 -0
  50. aiagents4pharma/talk2biomodels/tests/__init__.py +2 -2
  51. aiagents4pharma/talk2biomodels/tests/article_on_model_537.pdf +0 -0
  52. aiagents4pharma/talk2biomodels/tests/test_api.py +18 -14
  53. aiagents4pharma/talk2biomodels/tests/test_ask_question.py +8 -9
  54. aiagents4pharma/talk2biomodels/tests/test_basico_model.py +15 -9
  55. aiagents4pharma/talk2biomodels/tests/test_get_annotation.py +54 -55
  56. aiagents4pharma/talk2biomodels/tests/test_getmodelinfo.py +28 -27
  57. aiagents4pharma/talk2biomodels/tests/test_integration.py +21 -33
  58. aiagents4pharma/talk2biomodels/tests/test_load_biomodel.py +14 -11
  59. aiagents4pharma/talk2biomodels/tests/test_param_scan.py +21 -20
  60. aiagents4pharma/talk2biomodels/tests/test_query_article.py +129 -29
  61. aiagents4pharma/talk2biomodels/tests/test_search_models.py +9 -13
  62. aiagents4pharma/talk2biomodels/tests/test_simulate_model.py +16 -15
  63. aiagents4pharma/talk2biomodels/tests/test_steady_state.py +12 -22
  64. aiagents4pharma/talk2biomodels/tests/test_sys_bio_model.py +33 -29
  65. aiagents4pharma/talk2biomodels/tools/__init__.py +15 -12
  66. aiagents4pharma/talk2biomodels/tools/ask_question.py +42 -32
  67. aiagents4pharma/talk2biomodels/tools/custom_plotter.py +51 -43
  68. aiagents4pharma/talk2biomodels/tools/get_annotation.py +99 -75
  69. aiagents4pharma/talk2biomodels/tools/get_modelinfo.py +57 -51
  70. aiagents4pharma/talk2biomodels/tools/load_arguments.py +52 -32
  71. aiagents4pharma/talk2biomodels/tools/load_biomodel.py +8 -2
  72. aiagents4pharma/talk2biomodels/tools/parameter_scan.py +107 -90
  73. aiagents4pharma/talk2biomodels/tools/query_article.py +14 -13
  74. aiagents4pharma/talk2biomodels/tools/search_models.py +37 -26
  75. aiagents4pharma/talk2biomodels/tools/simulate_model.py +47 -37
  76. aiagents4pharma/talk2biomodels/tools/steady_state.py +76 -58
  77. aiagents4pharma/talk2biomodels/tools/utils.py +4 -3
  78. aiagents4pharma/talk2cells/README.md +1 -0
  79. aiagents4pharma/talk2cells/__init__.py +4 -5
  80. aiagents4pharma/talk2cells/agents/__init__.py +3 -2
  81. aiagents4pharma/talk2cells/agents/scp_agent.py +21 -19
  82. aiagents4pharma/talk2cells/states/__init__.py +3 -2
  83. aiagents4pharma/talk2cells/states/state_talk2cells.py +4 -2
  84. aiagents4pharma/talk2cells/tests/scp_agent/test_scp_agent.py +8 -9
  85. aiagents4pharma/talk2cells/tools/__init__.py +3 -2
  86. aiagents4pharma/talk2cells/tools/scp_agent/__init__.py +4 -4
  87. aiagents4pharma/talk2cells/tools/scp_agent/display_studies.py +5 -3
  88. aiagents4pharma/talk2cells/tools/scp_agent/search_studies.py +21 -22
  89. aiagents4pharma/talk2knowledgegraphs/.dockerignore +13 -0
  90. aiagents4pharma/talk2knowledgegraphs/Dockerfile +103 -0
  91. aiagents4pharma/talk2knowledgegraphs/README.md +1 -0
  92. aiagents4pharma/talk2knowledgegraphs/__init__.py +4 -7
  93. aiagents4pharma/talk2knowledgegraphs/agents/__init__.py +3 -2
  94. aiagents4pharma/talk2knowledgegraphs/agents/t2kg_agent.py +40 -30
  95. aiagents4pharma/talk2knowledgegraphs/configs/__init__.py +3 -6
  96. aiagents4pharma/talk2knowledgegraphs/configs/agents/t2kg_agent/__init__.py +2 -2
  97. aiagents4pharma/talk2knowledgegraphs/configs/agents/t2kg_agent/default.yaml +8 -8
  98. aiagents4pharma/talk2knowledgegraphs/configs/app/__init__.py +3 -2
  99. aiagents4pharma/talk2knowledgegraphs/configs/app/frontend/__init__.py +2 -2
  100. aiagents4pharma/talk2knowledgegraphs/configs/app/frontend/default.yaml +1 -1
  101. aiagents4pharma/talk2knowledgegraphs/configs/config.yaml +1 -1
  102. aiagents4pharma/talk2knowledgegraphs/configs/tools/__init__.py +4 -5
  103. aiagents4pharma/talk2knowledgegraphs/configs/tools/graphrag_reasoning/__init__.py +2 -2
  104. aiagents4pharma/talk2knowledgegraphs/configs/tools/graphrag_reasoning/default.yaml +1 -1
  105. aiagents4pharma/talk2knowledgegraphs/configs/tools/subgraph_extraction/__init__.py +2 -2
  106. aiagents4pharma/talk2knowledgegraphs/configs/tools/subgraph_extraction/default.yaml +1 -1
  107. aiagents4pharma/talk2knowledgegraphs/configs/tools/subgraph_summarization/__init__.py +2 -2
  108. aiagents4pharma/talk2knowledgegraphs/configs/tools/subgraph_summarization/default.yaml +1 -1
  109. aiagents4pharma/talk2knowledgegraphs/configs/utils/enrichments/ols_terms/default.yaml +1 -1
  110. aiagents4pharma/talk2knowledgegraphs/configs/utils/enrichments/reactome_pathways/default.yaml +1 -1
  111. aiagents4pharma/talk2knowledgegraphs/configs/utils/enrichments/uniprot_proteins/default.yaml +1 -1
  112. aiagents4pharma/talk2knowledgegraphs/configs/utils/pubchem_utils/default.yaml +1 -1
  113. aiagents4pharma/talk2knowledgegraphs/datasets/__init__.py +4 -6
  114. aiagents4pharma/talk2knowledgegraphs/datasets/biobridge_primekg.py +115 -67
  115. aiagents4pharma/talk2knowledgegraphs/datasets/dataset.py +2 -0
  116. aiagents4pharma/talk2knowledgegraphs/datasets/primekg.py +35 -24
  117. aiagents4pharma/talk2knowledgegraphs/datasets/starkqa_primekg.py +29 -21
  118. aiagents4pharma/talk2knowledgegraphs/docker-compose/cpu/.env.example +23 -0
  119. aiagents4pharma/talk2knowledgegraphs/docker-compose/cpu/docker-compose.yml +93 -0
  120. aiagents4pharma/talk2knowledgegraphs/docker-compose/gpu/.env.example +23 -0
  121. aiagents4pharma/talk2knowledgegraphs/docker-compose/gpu/docker-compose.yml +108 -0
  122. aiagents4pharma/talk2knowledgegraphs/entrypoint.sh +190 -0
  123. aiagents4pharma/talk2knowledgegraphs/install.md +140 -0
  124. aiagents4pharma/talk2knowledgegraphs/milvus_data_dump.py +31 -65
  125. aiagents4pharma/talk2knowledgegraphs/states/__init__.py +3 -2
  126. aiagents4pharma/talk2knowledgegraphs/states/state_talk2knowledgegraphs.py +1 -0
  127. aiagents4pharma/talk2knowledgegraphs/tests/test_agents_t2kg_agent.py +65 -40
  128. aiagents4pharma/talk2knowledgegraphs/tests/test_datasets_biobridge_primekg.py +54 -48
  129. aiagents4pharma/talk2knowledgegraphs/tests/test_datasets_dataset.py +4 -0
  130. aiagents4pharma/talk2knowledgegraphs/tests/test_datasets_primekg.py +17 -4
  131. aiagents4pharma/talk2knowledgegraphs/tests/test_datasets_starkqa_primekg.py +33 -24
  132. aiagents4pharma/talk2knowledgegraphs/tests/test_tools_graphrag_reasoning.py +116 -69
  133. aiagents4pharma/talk2knowledgegraphs/tests/test_tools_milvus_multimodal_subgraph_extraction.py +334 -216
  134. aiagents4pharma/talk2knowledgegraphs/tests/test_tools_multimodal_subgraph_extraction.py +22 -15
  135. aiagents4pharma/talk2knowledgegraphs/tests/test_tools_subgraph_extraction.py +19 -12
  136. aiagents4pharma/talk2knowledgegraphs/tests/test_tools_subgraph_summarization.py +95 -48
  137. aiagents4pharma/talk2knowledgegraphs/tests/test_utils_embeddings_embeddings.py +4 -0
  138. aiagents4pharma/talk2knowledgegraphs/tests/test_utils_embeddings_huggingface.py +5 -0
  139. aiagents4pharma/talk2knowledgegraphs/tests/test_utils_embeddings_nim_molmim.py +13 -18
  140. aiagents4pharma/talk2knowledgegraphs/tests/test_utils_embeddings_ollama.py +10 -3
  141. aiagents4pharma/talk2knowledgegraphs/tests/test_utils_enrichments_enrichments.py +4 -3
  142. aiagents4pharma/talk2knowledgegraphs/tests/test_utils_enrichments_ollama.py +3 -2
  143. aiagents4pharma/talk2knowledgegraphs/tests/test_utils_enrichments_ols.py +1 -0
  144. aiagents4pharma/talk2knowledgegraphs/tests/test_utils_enrichments_pubchem.py +9 -4
  145. aiagents4pharma/talk2knowledgegraphs/tests/test_utils_enrichments_reactome.py +6 -6
  146. aiagents4pharma/talk2knowledgegraphs/tests/test_utils_enrichments_uniprot.py +4 -0
  147. aiagents4pharma/talk2knowledgegraphs/tests/test_utils_extractions_milvus_multimodal_pcst.py +160 -97
  148. aiagents4pharma/talk2knowledgegraphs/tests/test_utils_kg_utils.py +3 -4
  149. aiagents4pharma/talk2knowledgegraphs/tests/test_utils_pubchem_utils.py +87 -13
  150. aiagents4pharma/talk2knowledgegraphs/tools/__init__.py +10 -7
  151. aiagents4pharma/talk2knowledgegraphs/tools/graphrag_reasoning.py +15 -20
  152. aiagents4pharma/talk2knowledgegraphs/tools/milvus_multimodal_subgraph_extraction.py +145 -142
  153. aiagents4pharma/talk2knowledgegraphs/tools/multimodal_subgraph_extraction.py +92 -90
  154. aiagents4pharma/talk2knowledgegraphs/tools/subgraph_extraction.py +25 -37
  155. aiagents4pharma/talk2knowledgegraphs/tools/subgraph_summarization.py +10 -13
  156. aiagents4pharma/talk2knowledgegraphs/utils/__init__.py +4 -7
  157. aiagents4pharma/talk2knowledgegraphs/utils/embeddings/__init__.py +4 -7
  158. aiagents4pharma/talk2knowledgegraphs/utils/embeddings/embeddings.py +4 -0
  159. aiagents4pharma/talk2knowledgegraphs/utils/embeddings/huggingface.py +11 -14
  160. aiagents4pharma/talk2knowledgegraphs/utils/embeddings/nim_molmim.py +7 -7
  161. aiagents4pharma/talk2knowledgegraphs/utils/embeddings/ollama.py +12 -6
  162. aiagents4pharma/talk2knowledgegraphs/utils/embeddings/sentence_transformer.py +8 -6
  163. aiagents4pharma/talk2knowledgegraphs/utils/enrichments/__init__.py +9 -6
  164. aiagents4pharma/talk2knowledgegraphs/utils/enrichments/enrichments.py +1 -0
  165. aiagents4pharma/talk2knowledgegraphs/utils/enrichments/ollama.py +15 -9
  166. aiagents4pharma/talk2knowledgegraphs/utils/enrichments/ols_terms.py +23 -20
  167. aiagents4pharma/talk2knowledgegraphs/utils/enrichments/pubchem_strings.py +12 -10
  168. aiagents4pharma/talk2knowledgegraphs/utils/enrichments/reactome_pathways.py +16 -10
  169. aiagents4pharma/talk2knowledgegraphs/utils/enrichments/uniprot_proteins.py +26 -18
  170. aiagents4pharma/talk2knowledgegraphs/utils/extractions/__init__.py +4 -5
  171. aiagents4pharma/talk2knowledgegraphs/utils/extractions/milvus_multimodal_pcst.py +14 -34
  172. aiagents4pharma/talk2knowledgegraphs/utils/extractions/multimodal_pcst.py +53 -47
  173. aiagents4pharma/talk2knowledgegraphs/utils/extractions/pcst.py +18 -14
  174. aiagents4pharma/talk2knowledgegraphs/utils/kg_utils.py +22 -23
  175. aiagents4pharma/talk2knowledgegraphs/utils/pubchem_utils.py +11 -10
  176. aiagents4pharma/talk2scholars/.dockerignore +13 -0
  177. aiagents4pharma/talk2scholars/Dockerfile +104 -0
  178. aiagents4pharma/talk2scholars/README.md +1 -0
  179. aiagents4pharma/talk2scholars/agents/__init__.py +1 -5
  180. aiagents4pharma/talk2scholars/agents/main_agent.py +6 -4
  181. aiagents4pharma/talk2scholars/agents/paper_download_agent.py +5 -4
  182. aiagents4pharma/talk2scholars/agents/pdf_agent.py +4 -2
  183. aiagents4pharma/talk2scholars/agents/s2_agent.py +2 -2
  184. aiagents4pharma/talk2scholars/agents/zotero_agent.py +10 -11
  185. aiagents4pharma/talk2scholars/configs/__init__.py +1 -3
  186. aiagents4pharma/talk2scholars/configs/agents/talk2scholars/__init__.py +1 -4
  187. aiagents4pharma/talk2scholars/configs/agents/talk2scholars/main_agent/default.yaml +1 -1
  188. aiagents4pharma/talk2scholars/configs/agents/talk2scholars/pdf_agent/default.yaml +1 -1
  189. aiagents4pharma/talk2scholars/configs/agents/talk2scholars/s2_agent/default.yaml +8 -8
  190. aiagents4pharma/talk2scholars/configs/agents/talk2scholars/zotero_agent/default.yaml +7 -7
  191. aiagents4pharma/talk2scholars/configs/tools/__init__.py +8 -6
  192. aiagents4pharma/talk2scholars/docker-compose/cpu/.env.example +21 -0
  193. aiagents4pharma/talk2scholars/docker-compose/cpu/docker-compose.yml +90 -0
  194. aiagents4pharma/talk2scholars/docker-compose/gpu/.env.example +21 -0
  195. aiagents4pharma/talk2scholars/docker-compose/gpu/docker-compose.yml +105 -0
  196. aiagents4pharma/talk2scholars/install.md +122 -0
  197. aiagents4pharma/talk2scholars/state/state_talk2scholars.py +8 -8
  198. aiagents4pharma/talk2scholars/tests/{test_main_agent.py → test_agents_main_agent.py} +41 -23
  199. aiagents4pharma/talk2scholars/tests/{test_paper_download_agent.py → test_agents_paper_agents_download_agent.py} +10 -16
  200. aiagents4pharma/talk2scholars/tests/{test_pdf_agent.py → test_agents_pdf_agent.py} +6 -10
  201. aiagents4pharma/talk2scholars/tests/{test_s2_agent.py → test_agents_s2_agent.py} +8 -16
  202. aiagents4pharma/talk2scholars/tests/{test_zotero_agent.py → test_agents_zotero_agent.py} +5 -7
  203. aiagents4pharma/talk2scholars/tests/{test_s2_display_dataframe.py → test_s2_tools_display_dataframe.py} +6 -7
  204. aiagents4pharma/talk2scholars/tests/{test_s2_query_dataframe.py → test_s2_tools_query_dataframe.py} +5 -15
  205. aiagents4pharma/talk2scholars/tests/{test_paper_downloader.py → test_tools_paper_downloader.py} +25 -63
  206. aiagents4pharma/talk2scholars/tests/{test_question_and_answer_tool.py → test_tools_question_and_answer_tool.py} +2 -6
  207. aiagents4pharma/talk2scholars/tests/{test_s2_multi.py → test_tools_s2_multi.py} +5 -5
  208. aiagents4pharma/talk2scholars/tests/{test_s2_retrieve.py → test_tools_s2_retrieve.py} +2 -1
  209. aiagents4pharma/talk2scholars/tests/{test_s2_search.py → test_tools_s2_search.py} +5 -5
  210. aiagents4pharma/talk2scholars/tests/{test_s2_single.py → test_tools_s2_single.py} +5 -5
  211. aiagents4pharma/talk2scholars/tests/{test_arxiv_downloader.py → test_utils_arxiv_downloader.py} +16 -25
  212. aiagents4pharma/talk2scholars/tests/{test_base_paper_downloader.py → test_utils_base_paper_downloader.py} +25 -47
  213. aiagents4pharma/talk2scholars/tests/{test_biorxiv_downloader.py → test_utils_biorxiv_downloader.py} +14 -42
  214. aiagents4pharma/talk2scholars/tests/{test_medrxiv_downloader.py → test_utils_medrxiv_downloader.py} +15 -49
  215. aiagents4pharma/talk2scholars/tests/{test_nvidia_nim_reranker.py → test_utils_nvidia_nim_reranker.py} +6 -16
  216. aiagents4pharma/talk2scholars/tests/{test_pdf_answer_formatter.py → test_utils_pdf_answer_formatter.py} +1 -0
  217. aiagents4pharma/talk2scholars/tests/{test_pdf_batch_processor.py → test_utils_pdf_batch_processor.py} +6 -15
  218. aiagents4pharma/talk2scholars/tests/{test_pdf_collection_manager.py → test_utils_pdf_collection_manager.py} +34 -11
  219. aiagents4pharma/talk2scholars/tests/{test_pdf_document_processor.py → test_utils_pdf_document_processor.py} +2 -3
  220. aiagents4pharma/talk2scholars/tests/{test_pdf_generate_answer.py → test_utils_pdf_generate_answer.py} +3 -6
  221. aiagents4pharma/talk2scholars/tests/{test_pdf_gpu_detection.py → test_utils_pdf_gpu_detection.py} +5 -16
  222. aiagents4pharma/talk2scholars/tests/{test_pdf_rag_pipeline.py → test_utils_pdf_rag_pipeline.py} +7 -17
  223. aiagents4pharma/talk2scholars/tests/{test_pdf_retrieve_chunks.py → test_utils_pdf_retrieve_chunks.py} +4 -11
  224. aiagents4pharma/talk2scholars/tests/{test_pdf_singleton_manager.py → test_utils_pdf_singleton_manager.py} +26 -23
  225. aiagents4pharma/talk2scholars/tests/{test_pdf_vector_normalization.py → test_utils_pdf_vector_normalization.py} +1 -1
  226. aiagents4pharma/talk2scholars/tests/{test_pdf_vector_store.py → test_utils_pdf_vector_store.py} +27 -55
  227. aiagents4pharma/talk2scholars/tests/{test_pubmed_downloader.py → test_utils_pubmed_downloader.py} +31 -91
  228. aiagents4pharma/talk2scholars/tests/{test_read_helper_utils.py → test_utils_read_helper_utils.py} +2 -6
  229. aiagents4pharma/talk2scholars/tests/{test_s2_utils_ext_ids.py → test_utils_s2_utils_ext_ids.py} +5 -15
  230. aiagents4pharma/talk2scholars/tests/{test_zotero_human_in_the_loop.py → test_utils_zotero_human_in_the_loop.py} +6 -13
  231. aiagents4pharma/talk2scholars/tests/{test_zotero_path.py → test_utils_zotero_path.py} +53 -45
  232. aiagents4pharma/talk2scholars/tests/{test_zotero_read.py → test_utils_zotero_read.py} +30 -91
  233. aiagents4pharma/talk2scholars/tests/{test_zotero_write.py → test_utils_zotero_write.py} +6 -16
  234. aiagents4pharma/talk2scholars/tools/__init__.py +1 -4
  235. aiagents4pharma/talk2scholars/tools/paper_download/paper_downloader.py +20 -35
  236. aiagents4pharma/talk2scholars/tools/paper_download/utils/__init__.py +7 -5
  237. aiagents4pharma/talk2scholars/tools/paper_download/utils/arxiv_downloader.py +9 -11
  238. aiagents4pharma/talk2scholars/tools/paper_download/utils/base_paper_downloader.py +14 -21
  239. aiagents4pharma/talk2scholars/tools/paper_download/utils/biorxiv_downloader.py +14 -22
  240. aiagents4pharma/talk2scholars/tools/paper_download/utils/medrxiv_downloader.py +11 -13
  241. aiagents4pharma/talk2scholars/tools/paper_download/utils/pubmed_downloader.py +14 -28
  242. aiagents4pharma/talk2scholars/tools/pdf/question_and_answer.py +4 -8
  243. aiagents4pharma/talk2scholars/tools/pdf/utils/__init__.py +16 -14
  244. aiagents4pharma/talk2scholars/tools/pdf/utils/answer_formatter.py +4 -4
  245. aiagents4pharma/talk2scholars/tools/pdf/utils/batch_processor.py +15 -17
  246. aiagents4pharma/talk2scholars/tools/pdf/utils/collection_manager.py +2 -2
  247. aiagents4pharma/talk2scholars/tools/pdf/utils/document_processor.py +5 -5
  248. aiagents4pharma/talk2scholars/tools/pdf/utils/generate_answer.py +4 -4
  249. aiagents4pharma/talk2scholars/tools/pdf/utils/get_vectorstore.py +2 -6
  250. aiagents4pharma/talk2scholars/tools/pdf/utils/gpu_detection.py +5 -9
  251. aiagents4pharma/talk2scholars/tools/pdf/utils/nvidia_nim_reranker.py +4 -4
  252. aiagents4pharma/talk2scholars/tools/pdf/utils/paper_loader.py +2 -2
  253. aiagents4pharma/talk2scholars/tools/pdf/utils/rag_pipeline.py +6 -15
  254. aiagents4pharma/talk2scholars/tools/pdf/utils/retrieve_chunks.py +7 -15
  255. aiagents4pharma/talk2scholars/tools/pdf/utils/singleton_manager.py +2 -2
  256. aiagents4pharma/talk2scholars/tools/pdf/utils/tool_helper.py +3 -4
  257. aiagents4pharma/talk2scholars/tools/pdf/utils/vector_normalization.py +8 -17
  258. aiagents4pharma/talk2scholars/tools/pdf/utils/vector_store.py +17 -33
  259. aiagents4pharma/talk2scholars/tools/s2/__init__.py +8 -6
  260. aiagents4pharma/talk2scholars/tools/s2/display_dataframe.py +3 -7
  261. aiagents4pharma/talk2scholars/tools/s2/multi_paper_rec.py +7 -6
  262. aiagents4pharma/talk2scholars/tools/s2/query_dataframe.py +5 -12
  263. aiagents4pharma/talk2scholars/tools/s2/retrieve_semantic_scholar_paper_id.py +2 -4
  264. aiagents4pharma/talk2scholars/tools/s2/search.py +6 -6
  265. aiagents4pharma/talk2scholars/tools/s2/single_paper_rec.py +5 -3
  266. aiagents4pharma/talk2scholars/tools/s2/utils/__init__.py +1 -3
  267. aiagents4pharma/talk2scholars/tools/s2/utils/multi_helper.py +12 -18
  268. aiagents4pharma/talk2scholars/tools/s2/utils/search_helper.py +11 -18
  269. aiagents4pharma/talk2scholars/tools/s2/utils/single_helper.py +11 -16
  270. aiagents4pharma/talk2scholars/tools/zotero/__init__.py +1 -4
  271. aiagents4pharma/talk2scholars/tools/zotero/utils/__init__.py +1 -4
  272. aiagents4pharma/talk2scholars/tools/zotero/utils/read_helper.py +21 -39
  273. aiagents4pharma/talk2scholars/tools/zotero/utils/review_helper.py +2 -6
  274. aiagents4pharma/talk2scholars/tools/zotero/utils/write_helper.py +8 -11
  275. aiagents4pharma/talk2scholars/tools/zotero/utils/zotero_path.py +4 -12
  276. aiagents4pharma/talk2scholars/tools/zotero/utils/zotero_pdf_downloader.py +13 -27
  277. aiagents4pharma/talk2scholars/tools/zotero/zotero_read.py +4 -7
  278. aiagents4pharma/talk2scholars/tools/zotero/zotero_review.py +8 -10
  279. aiagents4pharma/talk2scholars/tools/zotero/zotero_write.py +3 -2
  280. {aiagents4pharma-1.44.0.dist-info → aiagents4pharma-1.45.1.dist-info}/METADATA +115 -51
  281. aiagents4pharma-1.45.1.dist-info/RECORD +324 -0
  282. {aiagents4pharma-1.44.0.dist-info → aiagents4pharma-1.45.1.dist-info}/WHEEL +1 -2
  283. aiagents4pharma-1.44.0.dist-info/RECORD +0 -293
  284. aiagents4pharma-1.44.0.dist-info/top_level.txt +0 -1
  285. /aiagents4pharma/talk2scholars/tests/{test_state.py → test_states_state.py} +0 -0
  286. /aiagents4pharma/talk2scholars/tests/{test_pdf_paper_loader.py → test_utils_pdf_paper_loader.py} +0 -0
  287. /aiagents4pharma/talk2scholars/tests/{test_tool_helper_utils.py → test_utils_tool_helper_utils.py} +0 -0
  288. /aiagents4pharma/talk2scholars/tests/{test_zotero_pdf_downloader_utils.py → test_utils_zotero_pdf_downloader_utils.py} +0 -0
  289. {aiagents4pharma-1.44.0.dist-info → aiagents4pharma-1.45.1.dist-info}/licenses/LICENSE +0 -0
@@ -3,9 +3,9 @@ This file is used to import aiagents4pharma modules.
3
3
  """
4
4
 
5
5
  from . import (
6
+ talk2aiagents4pharma,
6
7
  talk2biomodels,
7
8
  talk2cells,
8
- talk2scholars,
9
9
  talk2knowledgegraphs,
10
- talk2aiagents4pharma
10
+ talk2scholars,
11
11
  )
@@ -0,0 +1,13 @@
1
+ _pycache_/
2
+ *.pyc
3
+ *.log
4
+ *.csv
5
+ *.pt
6
+ *.pkl
7
+ models/
8
+ data/
9
+ env/
10
+ .venv/
11
+ .git/
12
+ .env
13
+ .cufile.log
@@ -0,0 +1,105 @@
1
+ # syntax=docker/dockerfile:1
2
+
3
+ # Dockerfile for the talk2aiagents4pharma application
4
+ # Multi-stage build for optimized image size with UV package manager
5
+
6
+ ARG BASE_IMAGE=ubuntu:24.04
7
+ ARG PYTHON_VERSION=3.12
8
+
9
+ FROM ${BASE_IMAGE} AS dev-base
10
+ RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
11
+ build-essential \
12
+ ca-certificates \
13
+ cmake \
14
+ curl \
15
+ g++ \
16
+ libopenblas-dev \
17
+ libomp-dev \
18
+ ninja-build \
19
+ wget \
20
+ && rm -rf /var/lib/apt/lists/*
21
+
22
+ FROM dev-base AS python-install
23
+ ARG PYTHON_VERSION=3.12
24
+
25
+ # Install Python (available in Ubuntu 24.04 default repos)
26
+ RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
27
+ python${PYTHON_VERSION} \
28
+ python${PYTHON_VERSION}-dev \
29
+ python${PYTHON_VERSION}-venv \
30
+ python3-pip \
31
+ && rm -rf /var/lib/apt/lists/* \
32
+ && update-alternatives --install /usr/bin/python3 python3 /usr/bin/python${PYTHON_VERSION} 1 \
33
+ && update-alternatives --install /usr/bin/python python /usr/bin/python${PYTHON_VERSION} 1
34
+
35
+ FROM python-install AS uv-install
36
+ WORKDIR /app
37
+
38
+ # Install UV package manager and dependencies
39
+ COPY pyproject.toml uv.lock* ./
40
+ RUN curl -LsSf https://astral.sh/uv/install.sh | sh && \
41
+ export PATH="/root/.local/bin:$PATH" && \
42
+ export UV_PROJECT_ENVIRONMENT="/opt/venv" && \
43
+ uv sync --frozen --extra dev --no-install-project --python python${PYTHON_VERSION} && \
44
+ . /opt/venv/bin/activate && \
45
+ uv pip install \
46
+ --extra-index-url=https://pypi.nvidia.com \
47
+ --index-strategy unsafe-best-match \
48
+ cudf-cu12 dask-cudf-cu12 && \
49
+ uv cache clean
50
+
51
+ FROM ${BASE_IMAGE} AS runtime
52
+ ARG PYTHON_VERSION=3.12
53
+ LABEL maintainer="talk2aiagents4pharma"
54
+ LABEL version="1.0.0"
55
+ LABEL description="AI Agents for Pharma - Streamlit Application"
56
+
57
+ # Install runtime dependencies
58
+ RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
59
+ ca-certificates \
60
+ curl \
61
+ libmagic1 \
62
+ libopenblas0 \
63
+ libomp5 \
64
+ python${PYTHON_VERSION} \
65
+ && rm -rf /var/lib/apt/lists/* \
66
+ && update-alternatives --install /usr/bin/python3 python3 /usr/bin/python${PYTHON_VERSION} 1 \
67
+ && update-alternatives --install /usr/bin/python python /usr/bin/python${PYTHON_VERSION} 1
68
+
69
+ # Copy UV virtual environment from build stage
70
+ COPY --from=uv-install /opt/venv /opt/venv
71
+
72
+ # Set environment variables
73
+ ENV PATH="/opt/venv/bin:$PATH"
74
+ ENV PYTHONPATH="/app"
75
+ ENV PYTHONUNBUFFERED=1
76
+ ENV PYTHONDONTWRITEBYTECODE=1
77
+ ENV STREAMLIT_SERVER_HEADLESS=true
78
+ ENV STREAMLIT_SERVER_ENABLE_CORS=false
79
+
80
+ # Set working directory and create necessary directories
81
+ WORKDIR /app
82
+
83
+ # Copy application code
84
+ COPY aiagents4pharma/talk2aiagents4pharma /app/aiagents4pharma/talk2aiagents4pharma
85
+ COPY aiagents4pharma/talk2biomodels /app/aiagents4pharma/talk2biomodels
86
+ COPY aiagents4pharma/talk2knowledgegraphs /app/aiagents4pharma/talk2knowledgegraphs
87
+ COPY docs /app/docs
88
+ COPY app /app/app
89
+
90
+ # Copy and set up the entrypoint script
91
+ COPY aiagents4pharma/talk2knowledgegraphs/entrypoint.sh /usr/local/bin/entrypoint.sh
92
+ RUN chmod +x /usr/local/bin/entrypoint.sh
93
+
94
+ # Health check for production monitoring
95
+ HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=3 \
96
+ CMD curl -f http://localhost:8501/health || exit 1
97
+
98
+ # Expose the default Streamlit port
99
+ EXPOSE 8501
100
+
101
+ # Set the entrypoint
102
+ ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
103
+
104
+ # Default command (can be overridden)
105
+ CMD ["streamlit", "run", "/app/app/frontend/streamlit_app_talk2aiagents4pharma.py", "--server.port=8501", "--server.address=0.0.0.0"]
@@ -0,0 +1 @@
1
+ Please check out the README file in the root folder for more information.
@@ -1,6 +1,5 @@
1
- '''
1
+ """
2
2
  This file is used to import the models and tools.
3
- '''
4
- from . import agents
5
- from . import states
6
- from . import configs
3
+ """
4
+
5
+ from . import agents, configs, states
@@ -1,5 +1,6 @@
1
- '''
1
+ """
2
2
  This file is used to import all the modules in the package.
3
- '''
3
+ """
4
+
4
5
  # import everything from the module
5
6
  from . import main_agent
@@ -1,15 +1,17 @@
1
- #/usr/bin/env python3
1
+ # /usr/bin/env python3
2
2
 
3
- '''
3
+ """
4
4
  This is the main agent file for the AIAgents4Pharma.
5
- '''
5
+ """
6
6
 
7
7
  import logging
8
+
8
9
  import hydra
9
- from langgraph_supervisor import create_supervisor
10
- from langchain_openai import ChatOpenAI
11
10
  from langchain_core.language_models.chat_models import BaseChatModel
11
+ from langchain_openai import ChatOpenAI
12
12
  from langgraph.checkpoint.memory import MemorySaver
13
+ from langgraph_supervisor import create_supervisor
14
+
13
15
  from ...talk2biomodels.agents.t2b_agent import get_app as get_app_t2b
14
16
  from ...talk2knowledgegraphs.agents.t2kg_agent import get_app as get_app_t2kg
15
17
  from ..states.state_talk2aiagents4pharma import Talk2AIAgents4Pharma
@@ -18,29 +20,29 @@ from ..states.state_talk2aiagents4pharma import Talk2AIAgents4Pharma
18
20
  logging.basicConfig(level=logging.INFO)
19
21
  logger = logging.getLogger(__name__)
20
22
 
23
+
21
24
  def get_app(uniq_id, llm_model: BaseChatModel):
22
- '''
25
+ """
23
26
  This function returns the langraph app.
24
- '''
25
- if hasattr(llm_model, 'model_name'):
26
- if llm_model.model_name == 'gpt-4o-mini':
27
- llm_model = ChatOpenAI(model='gpt-4o-mini',
28
- temperature=0,
29
- model_kwargs={"parallel_tool_calls": False})
27
+ """
28
+ if hasattr(llm_model, "model_name"):
29
+ if llm_model.model_name == "gpt-4o-mini":
30
+ llm_model = ChatOpenAI(
31
+ model="gpt-4o-mini",
32
+ temperature=0,
33
+ model_kwargs={"parallel_tool_calls": False},
34
+ )
30
35
  # Load hydra configuration
31
36
  logger.log(logging.INFO, "Launching AIAgents4Pharma_Agent with thread_id %s", uniq_id)
32
37
  with hydra.initialize(version_base=None, config_path="../configs"):
33
- cfg = hydra.compose(config_name='config',
34
- overrides=['agents/main_agent=default'])
38
+ cfg = hydra.compose(config_name="config", overrides=["agents/main_agent=default"])
35
39
  cfg = cfg.agents.main_agent
36
40
  logger.log(logging.INFO, "System_prompt of T2AA4P: %s", cfg.system_prompt)
37
41
  with hydra.initialize(version_base=None, config_path="../../talk2biomodels/configs"):
38
- cfg_t2b = hydra.compose(config_name='config',
39
- overrides=['agents/t2b_agent=default'])
42
+ cfg_t2b = hydra.compose(config_name="config", overrides=["agents/t2b_agent=default"])
40
43
  cfg_t2b = cfg_t2b.agents.t2b_agent
41
44
  with hydra.initialize(version_base=None, config_path="../../talk2knowledgegraphs/configs"):
42
- cfg_t2kg = hydra.compose(config_name='config',
43
- overrides=['agents/t2kg_agent=default'])
45
+ cfg_t2kg = hydra.compose(config_name="config", overrides=["agents/t2kg_agent=default"])
44
46
  cfg_t2kg = cfg_t2kg.agents.t2kg_agent
45
47
  system_prompt = cfg.system_prompt
46
48
  system_prompt += "\n\nHere is the system prompt of T2B agent\n"
@@ -50,8 +52,8 @@ def get_app(uniq_id, llm_model: BaseChatModel):
50
52
  # Create supervisor workflow
51
53
  workflow = create_supervisor(
52
54
  [
53
- get_app_t2b(uniq_id, llm_model), # Talk2BioModels
54
- get_app_t2kg(uniq_id, llm_model) # Talk2KnowledgeGraphs
55
+ get_app_t2b(uniq_id, llm_model), # Talk2BioModels
56
+ get_app_t2kg(uniq_id, llm_model), # Talk2KnowledgeGraphs
55
57
  ],
56
58
  model=llm_model,
57
59
  state_schema=Talk2AIAgents4Pharma,
@@ -59,11 +61,10 @@ def get_app(uniq_id, llm_model: BaseChatModel):
59
61
  # the tool artifacts
60
62
  output_mode="full_history",
61
63
  add_handoff_back_messages=True,
62
- prompt=system_prompt
64
+ prompt=system_prompt,
63
65
  )
64
66
 
65
67
  # Compile and run
66
- app = workflow.compile(checkpointer=MemorySaver(),
67
- name="AIAgents4Pharma_Agent")
68
+ app = workflow.compile(checkpointer=MemorySaver(), name="AIAgents4Pharma_Agent")
68
69
 
69
70
  return app
@@ -1,5 +1,5 @@
1
- '''
1
+ """
2
2
  Import all the modules in the package
3
- '''
3
+ """
4
4
 
5
5
  from . import agents
@@ -1,5 +1,5 @@
1
- '''
1
+ """
2
2
  Import all the modules in the package
3
- '''
3
+ """
4
4
 
5
5
  from . import main_agent
@@ -1,13 +1,13 @@
1
1
  _target_: agents.main_agent.get_app
2
2
  system_prompt: >
3
- You are the Talk2AIAgents4Pharma main agent.
3
+ You are the Talk2AIAgents4Pharma main agent.
4
4
  Your primary responsibility is to analyze the user's query and intelligently route it to the most appropriate specialized agent based on the user's intent.
5
5
 
6
6
  You manage the following two expert agents:
7
7
 
8
8
  1. Talk2Biomodels (T2B) Agent:
9
9
  - This agent specializes in working with **mathematical models of biological systems**.
10
- - It can perform tasks such as querying and simulating models, conducting parameter scans, analyzing time series,
10
+ - It can perform tasks such as querying and simulating models, conducting parameter scans, analyzing time series,
11
11
  and accessing annotated model components like species and reactions.
12
12
  - It is also capable of processing and answering questions based on **uploaded documents, PDFs, or articles**.
13
13
  - You should route queries to T2B if they contain or imply topics such as:
@@ -1,3 +1,3 @@
1
1
  defaults:
2
2
  - _self_
3
- - agents/main_agent: default
3
+ - agents/main_agent: default
@@ -0,0 +1,23 @@
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_here
9
+
10
+ # NVIDIA API KEY
11
+ NVIDIA_API_KEY=your_nvidia_api_key_here
12
+
13
+ # Set environment variables for data loader
14
+ MILVUS_HOST=localhost
15
+ MILVUS_PORT=19530
16
+ MILVUS_USER=root
17
+ MILVUS_PASSWORD=Milvus
18
+ MILVUS_DATABASE=your_database_name_here
19
+
20
+ # Specify the data directory for multimodal data to your own data directory
21
+ # DATA_DIR=/your_absolute_path_to_your_data_dir/
22
+
23
+ BATCH_SIZE=500
@@ -0,0 +1,93 @@
1
+ version: "1.0.0"
2
+
3
+ services:
4
+ # talk2aiagents4pharma with automatic data loading via entrypoint
5
+ talk2aiagents4pharma:
6
+ container_name: talk2aiagents4pharma
7
+ image: vpatientengine/talk2aiagents4pharma: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
+ volumes:
17
+ # Mount external data directory if DATA_DIR is specified in .env
18
+ - ${DATA_DIR:-./default_data}:/mnt/external_data:ro
19
+ healthcheck:
20
+ test: ["CMD", "curl", "-f", "http://localhost:8501/health"]
21
+ interval: 30s
22
+ timeout: 10s
23
+ retries: 3
24
+ start_period: 120s # Allow time for data loading
25
+ depends_on:
26
+ milvus-standalone:
27
+ condition: service_healthy
28
+
29
+ # Milvus Dependencies
30
+ etcd:
31
+ container_name: milvus-etcd
32
+ image: quay.io/coreos/etcd:v3.5.18
33
+ environment:
34
+ - ETCD_AUTO_COMPACTION_MODE=revision
35
+ - ETCD_AUTO_COMPACTION_RETENTION=1000
36
+ - ETCD_QUOTA_BACKEND_BYTES=4294967296
37
+ - ETCD_SNAPSHOT_COUNT=50000
38
+ volumes:
39
+ - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/etcd:/etcd
40
+ command: etcd -advertise-client-urls=http://etcd:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd
41
+ healthcheck:
42
+ test: ["CMD", "etcdctl", "endpoint", "health"]
43
+ interval: 30s
44
+ timeout: 20s
45
+ retries: 3
46
+
47
+ minio:
48
+ container_name: milvus-minio
49
+ image: minio/minio:RELEASE.2024-05-28T17-19-04Z
50
+ environment:
51
+ MINIO_ACCESS_KEY: minioadmin
52
+ MINIO_SECRET_KEY: minioadmin
53
+ ports:
54
+ - "9001:9001"
55
+ - "9000:9000"
56
+ volumes:
57
+ - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/minio:/minio_data
58
+ command: minio server /minio_data --console-address ":9001"
59
+ healthcheck:
60
+ test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
61
+ interval: 30s
62
+ timeout: 20s
63
+ retries: 3
64
+
65
+ # Milvus Vector Database (CPU-only)
66
+ milvus-standalone:
67
+ container_name: milvus-standalone
68
+ image: milvusdb/milvus:v2.5.14
69
+ command: ["milvus", "run", "standalone"]
70
+ security_opt:
71
+ - seccomp:unconfined
72
+ environment:
73
+ MINIO_REGION: us-east-1
74
+ ETCD_ENDPOINTS: etcd:2379
75
+ MINIO_ADDRESS: minio:9000
76
+ volumes:
77
+ - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/milvus:/var/lib/milvus
78
+ ports:
79
+ - "19530:19530"
80
+ - "9091:9091"
81
+ healthcheck:
82
+ test: ["CMD", "curl", "-f", "http://localhost:9091/healthz"]
83
+ interval: 30s
84
+ start_period: 90s
85
+ timeout: 20s
86
+ retries: 3
87
+ depends_on:
88
+ - "etcd"
89
+ - "minio"
90
+
91
+ networks:
92
+ milvus:
93
+ name: milvus
@@ -0,0 +1,23 @@
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_here
9
+
10
+ # NVIDIA API KEY
11
+ NVIDIA_API_KEY=your_nvidia_api_key_here
12
+
13
+ # Set environment variables for data loader
14
+ MILVUS_HOST=localhost
15
+ MILVUS_PORT=19530
16
+ MILVUS_USER=root
17
+ MILVUS_PASSWORD=Milvus
18
+ MILVUS_DATABASE=your_database_name_here
19
+
20
+ # Specify the data directory for multimodal data to your own data directory
21
+ # DATA_DIR=/your_absolute_path_to_your_data_dir/
22
+
23
+ BATCH_SIZE=500
@@ -0,0 +1,108 @@
1
+ version: "1.0.0"
2
+
3
+ services:
4
+ # talk2aiagents4pharma with automatic data loading via entrypoint
5
+ talk2aiagents4pharma:
6
+ container_name: talk2aiagents4pharma
7
+ image: vpatientengine/talk2aiagents4pharma: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
+ volumes:
24
+ # Mount external data directory if DATA_DIR is specified in .env
25
+ - ${DATA_DIR:-./default_data}:/mnt/external_data:ro
26
+ healthcheck:
27
+ test: ["CMD", "curl", "-f", "http://localhost:8501/health"]
28
+ interval: 30s
29
+ timeout: 10s
30
+ retries: 3
31
+ start_period: 120s # Allow time for data loading
32
+ depends_on:
33
+ milvus-standalone:
34
+ condition: service_healthy
35
+
36
+ # Milvus Dependencies
37
+ etcd:
38
+ container_name: milvus-etcd
39
+ image: quay.io/coreos/etcd:v3.5.18
40
+ environment:
41
+ - ETCD_AUTO_COMPACTION_MODE=revision
42
+ - ETCD_AUTO_COMPACTION_RETENTION=1000
43
+ - ETCD_QUOTA_BACKEND_BYTES=4294967296
44
+ - ETCD_SNAPSHOT_COUNT=50000
45
+ volumes:
46
+ - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/etcd:/etcd
47
+ command: etcd -advertise-client-urls=http://etcd:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd
48
+ healthcheck:
49
+ test: ["CMD", "etcdctl", "endpoint", "health"]
50
+ interval: 30s
51
+ timeout: 20s
52
+ retries: 3
53
+
54
+ minio:
55
+ container_name: milvus-minio
56
+ image: minio/minio:RELEASE.2023-03-20T20-16-18Z
57
+ environment:
58
+ MINIO_ACCESS_KEY: minioadmin
59
+ MINIO_SECRET_KEY: minioadmin
60
+ ports:
61
+ - "9001:9001"
62
+ - "9000:9000"
63
+ volumes:
64
+ - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/minio:/minio_data
65
+ command: minio server /minio_data --console-address ":9001"
66
+ healthcheck:
67
+ test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
68
+ interval: 30s
69
+ timeout: 20s
70
+ retries: 3
71
+
72
+ # Milvus Vector Database (GPU-enabled)
73
+ milvus-standalone:
74
+ container_name: milvus-standalone
75
+ image: milvusdb/milvus:v2.6.0-rc1-gpu
76
+ command: ["milvus", "run", "standalone"]
77
+ security_opt:
78
+ - seccomp:unconfined
79
+ environment:
80
+ MINIO_REGION: us-east-1
81
+ ETCD_ENDPOINTS: etcd:2379
82
+ MINIO_ADDRESS: minio:9000
83
+ MQ_TYPE: woodpecker
84
+ volumes:
85
+ - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/milvus:/var/lib/milvus
86
+ ports:
87
+ - "19530:19530"
88
+ - "9091:9091"
89
+ deploy:
90
+ resources:
91
+ reservations:
92
+ devices:
93
+ - driver: nvidia
94
+ capabilities: ["gpu"]
95
+ device_ids: ["0"]
96
+ healthcheck:
97
+ test: ["CMD", "curl", "-f", "http://localhost:9091/healthz"]
98
+ interval: 30s
99
+ start_period: 90s
100
+ timeout: 20s
101
+ retries: 3
102
+ depends_on:
103
+ - "etcd"
104
+ - "minio"
105
+
106
+ networks:
107
+ milvus:
108
+ name: milvus
@@ -0,0 +1,127 @@
1
+ # Talk2AIAgents4Pharma
2
+
3
+ ## Installation
4
+
5
+ If your machine has NVIDIA GPU(s), please install the following this:
6
+
7
+ - [nvidia-cuda-toolkit](https://developer.nvidia.com/cuda-toolkit)
8
+ - [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.
9
+
10
+ ### Docker (stable-release)
11
+
12
+ _This agent is available on Docker Hub._
13
+
14
+ **Prerequisites**
15
+
16
+ - [Milvus](https://milvus.io) (for a vector database)
17
+
18
+ ---
19
+
20
+ #### 1. Download files
21
+
22
+ Choose the appropriate version of the `docker-compose.yml` file based on your system:
23
+
24
+ **For GPU:**
25
+
26
+ ```sh
27
+ wget https://raw.githubusercontent.com/VirtualPatientEngine/AIAgents4Pharma/main/aiagents4pharma/talk2aiagents4pharma/docker-compose/gpu/docker-compose.yml \
28
+ https://raw.githubusercontent.com/VirtualPatientEngine/AIAgents4Pharma/main/aiagents4pharma/talk2aiagents4pharma/docker-compose/gpu/.env.example
29
+ ```
30
+
31
+ **For CPU:**
32
+
33
+ ```sh
34
+ wget https://raw.githubusercontent.com/VirtualPatientEngine/AIAgents4Pharma/main/aiagents4pharma/talk2aiagents4pharma/docker-compose/cpu/docker-compose.yml \
35
+ https://raw.githubusercontent.com/VirtualPatientEngine/AIAgents4Pharma/main/aiagents4pharma/talk2aiagents4pharma/docker-compose/cpu/.env.example
36
+ ```
37
+
38
+ #### 2. Setup environment variables
39
+
40
+ ```sh
41
+ cp .env.example .env
42
+ ```
43
+
44
+ Edit `.env` with your API keys:
45
+
46
+ ```env
47
+ # .env.example (DO NOT put actual API keys here, read the README.md)
48
+
49
+ # OPENAI API KEY
50
+ OPENAI_API_KEY=your_openai_api_key_here
51
+
52
+ # LangSmith API KEY
53
+ LANGCHAIN_TRACING_V2=true
54
+ LANGCHAIN_API_KEY=your_langchain_api_key_here
55
+
56
+ # NVIDIA API KEY
57
+ NVIDIA_API_KEY=your_nvidia_api_key_here
58
+
59
+ # Set environment variables for data loader
60
+ MILVUS_HOST=localhost
61
+ MILVUS_PORT=19530
62
+ MILVUS_USER=root
63
+ MILVUS_PASSWORD=Milvus
64
+ MILVUS_DATABASE=your_database_name_here
65
+
66
+ # Specify the data directory for multimodal data to your own data directory
67
+ # DATA_DIR=/your_absolute_path_to_your_data_dir/
68
+
69
+ BATCH_SIZE=500
70
+ ```
71
+
72
+ ---
73
+
74
+ #### 3. Start the agent
75
+
76
+ ```sh
77
+ docker compose up -d
78
+ ```
79
+
80
+ ---
81
+
82
+ ### Access the Web UI
83
+
84
+ Once started, open:
85
+
86
+ ```
87
+ http://localhost:8501
88
+ ```
89
+
90
+ > In the background, the BioBridge multimodal embeddings will be inserted into the Milvus database, and the `talk2aiagents4pharma` service will start. Once the data is fully inserted, the application will be in a healthy state and accessible at the above address.
91
+ >
92
+ > You can monitor the process using:
93
+ >
94
+ > ```sh
95
+ > docker logs -f talk2aiagents4pharma
96
+ > ```
97
+
98
+ ---
99
+
100
+ ## Get Key
101
+
102
+ - `NVIDIA_API_KEY` – required (obtain a free key at [https://build.nvidia.com/explore/discover](https://build.nvidia.com/explore/discover))
103
+
104
+ **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).
105
+
106
+ _Please note that this will create a new tracing project in your Langsmith
107
+ account with the name `T2X-xxxx`, where `X` can be `KG` (KnowledgeGraphs).
108
+ If you skip the previous step, it will default to the name `default`.
109
+ `xxxx` will be the 4-digit ID created for the session._
110
+
111
+ ---
112
+
113
+ ## Notes for Windows Users
114
+
115
+ 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.
116
+
117
+ - For applications that use **Docker Compose**, Git Bash is **required**.
118
+ - For applications that use **docker run** manually, Git Bash is **optional**, but recommended for consistency.
119
+
120
+ You can download Git Bash here: [Git for Windows](https://git-scm.com/downloads).
121
+
122
+ When using Docker on Windows, make sure you **run Docker with administrative privileges** if you face permission issues.
123
+
124
+ To resolve permission issues, you can:
125
+
126
+ - Review the official Docker documentation on [Windows permission requirements](https://docs.docker.com/desktop/setup/install/windows-permission-requirements/).
127
+ - 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).
@@ -1,4 +1,5 @@
1
- '''
1
+ """
2
2
  This file is used to import all the models in the package.
3
- '''
3
+ """
4
+
4
5
  from . import state_talk2aiagents4pharma