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,78 @@
1
+ #!/usr/bin/env python3
2
+
3
+ """
4
+ A tool to fetch studies from the Single Cell Portal.
5
+ """
6
+
7
+ import logging
8
+ from typing import Annotated
9
+
10
+ import pandas as pd
11
+ import requests
12
+ from langchain_core.messages import ToolMessage
13
+ from langchain_core.tools import tool
14
+ from langchain_core.tools.base import InjectedToolCallId
15
+ from langgraph.types import Command
16
+
17
+ # Initialize logger
18
+ logging.basicConfig(level=logging.INFO)
19
+ logger = logging.getLogger(__name__)
20
+
21
+
22
+ @tool("search_studies")
23
+ def search_studies(
24
+ search_term: str, tool_call_id: Annotated[str, InjectedToolCallId], limit: int = 5
25
+ ):
26
+ """
27
+ Fetch studies from single cell portal
28
+
29
+ Args:
30
+ search_term (str): The search term to use. Example: "COVID-19", "cancer", etc.
31
+ limit (int): The number of papers to return. Default is 5.
32
+
33
+ """
34
+ logger.log(logging.INFO, "Calling the tool search_studies")
35
+ scp_endpoint = "https://singlecell.broadinstitute.org/single_cell/api/v1/search?type=study"
36
+ # params = {'terms': search_term, 'facets': 'MONDO_0005011'}
37
+ params = {"terms": search_term}
38
+ status_code = 0
39
+ while status_code != 200:
40
+ # Make a GET request to the single cell portal
41
+ search_response = requests.get(scp_endpoint, params=params, timeout=10, verify=False)
42
+ status_code = search_response.status_code
43
+ logger.log(logging.INFO, "Status code %s received from SCP")
44
+
45
+ # Select the columns to display in the table
46
+ selected_columns = ["study_source", "name", "study_url", "gene_count", "cell_count"]
47
+
48
+ # Extract the data from the response
49
+ # with the selected columns
50
+ df = pd.DataFrame(search_response.json()["studies"])[selected_columns]
51
+
52
+ # Convert column 'Study Name' into clickable
53
+ # hyperlinks from the column 'Study URL'
54
+ scp_api_url = "https://singlecell.broadinstitute.org"
55
+ df["name"] = df.apply(
56
+ lambda x: f'<a href="{scp_api_url}/{x["study_url"]}">{x["name"]}</a>', axis=1
57
+ )
58
+
59
+ # Excldue the column 'Study URL' from the dataframe
60
+ df = df.drop(columns=["study_url"])
61
+
62
+ # Add a new column a the beginning of the dataframe with row numbers
63
+ df.insert(0, "S/N", range(1, 1 + len(df)))
64
+
65
+ # Update the state key 'search_table' with the dataframe in markdown format
66
+ return Command(
67
+ update={
68
+ # update the state keys
69
+ "search_table": df.to_markdown(tablefmt="grid"),
70
+ # update the message history
71
+ "messages": [
72
+ ToolMessage(
73
+ f"Successfully fetched {limit} studies on {search_term}.",
74
+ tool_call_id=tool_call_id,
75
+ )
76
+ ],
77
+ }
78
+ )
@@ -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,131 @@
1
+ # syntax=docker/dockerfile:1
2
+
3
+ # Dockerfile for the talk2knowledgegraphs 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
+ ARG INSTALL_CUDA=true
37
+ WORKDIR /app
38
+
39
+ # Install UV package manager and dependencies
40
+ COPY pyproject.toml uv.lock* ./
41
+ RUN curl -LsSf https://astral.sh/uv/install.sh | sh && \
42
+ export PATH="/root/.local/bin:$PATH" && \
43
+ export UV_PROJECT_ENVIRONMENT="/opt/venv" && \
44
+ uv sync --frozen --extra dev --no-install-project --python python${PYTHON_VERSION} && \
45
+ . /opt/venv/bin/activate && \
46
+ if [ "$INSTALL_CUDA" = "true" ]; then \
47
+ uv pip install \
48
+ --extra-index-url=https://pypi.nvidia.com \
49
+ --index-strategy unsafe-best-match \
50
+ cudf-cu12 dask-cudf-cu12; \
51
+ else \
52
+ echo "Skipping RAPIDS packages for CPU build"; \
53
+ fi && \
54
+ uv cache clean
55
+
56
+ FROM ${BASE_IMAGE} AS runtime
57
+ ARG PYTHON_VERSION=3.12
58
+ ARG INSTALL_CUDA=true
59
+ LABEL maintainer="talk2knowledgegraphs"
60
+ LABEL version="1.0.0"
61
+ LABEL description="AI Agents for Pharma - Knowledge Graphs Application"
62
+
63
+ # Install runtime dependencies
64
+ RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
65
+ ca-certificates \
66
+ curl \
67
+ gnupg \
68
+ libmagic1 \
69
+ libopenblas0 \
70
+ libomp5 \
71
+ python${PYTHON_VERSION} \
72
+ && rm -rf /var/lib/apt/lists/* \
73
+ && update-alternatives --install /usr/bin/python3 python3 /usr/bin/python${PYTHON_VERSION} 1 \
74
+ && update-alternatives --install /usr/bin/python python /usr/bin/python${PYTHON_VERSION} 1
75
+
76
+ # Install CUDA runtime libraries required by cudf/cupy (optional)
77
+ RUN if [ "$INSTALL_CUDA" = "true" ]; then \
78
+ curl -fsSL https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/3bf863cc.pub \
79
+ | gpg --dearmor -o /usr/share/keyrings/nvidia-cuda-keyring.gpg && \
80
+ echo "deb [signed-by=/usr/share/keyrings/nvidia-cuda-keyring.gpg] https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/ /" \
81
+ > /etc/apt/sources.list.d/nvidia-cuda.list && \
82
+ apt-get update && \
83
+ DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
84
+ cuda-cudart-12-6 \
85
+ cuda-cudart-dev-12-6 \
86
+ cuda-nvrtc-12-6 \
87
+ cuda-nvrtc-dev-12-6 \
88
+ libcublas-12-6 \
89
+ libcusparse-12-6 \
90
+ && rm -rf /var/lib/apt/lists/*; \
91
+ else \
92
+ echo "Skipping CUDA installation"; \
93
+ fi
94
+
95
+ ENV LD_LIBRARY_PATH=/usr/local/cuda/lib64
96
+
97
+ # Copy UV virtual environment from build stage
98
+ COPY --from=uv-install /opt/venv /opt/venv
99
+
100
+ # Set environment variables
101
+ ENV PATH="/opt/venv/bin:$PATH"
102
+ ENV PYTHONPATH="/app"
103
+ ENV PYTHONUNBUFFERED=1
104
+ ENV PYTHONDONTWRITEBYTECODE=1
105
+ ENV STREAMLIT_SERVER_HEADLESS=true
106
+ ENV STREAMLIT_SERVER_ENABLE_CORS=false
107
+
108
+ # Set working directory and create necessary directories
109
+ WORKDIR /app
110
+
111
+ # Copy application code
112
+ COPY aiagents4pharma/talk2knowledgegraphs /app/aiagents4pharma/talk2knowledgegraphs
113
+ COPY docs /app/docs
114
+ COPY app /app/app
115
+
116
+ # Copy and set up the entrypoint script
117
+ COPY aiagents4pharma/talk2knowledgegraphs/entrypoint.sh /usr/local/bin/entrypoint.sh
118
+ RUN chmod +x /usr/local/bin/entrypoint.sh
119
+
120
+ # Health check for production monitoring
121
+ HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=3 \
122
+ CMD curl -f http://localhost:8501/health || exit 1
123
+
124
+ # Expose the default Streamlit port
125
+ EXPOSE 8501
126
+
127
+ # Set the entrypoint
128
+ ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
129
+
130
+ # Default command (can be overridden)
131
+ CMD ["streamlit", "run", "/app/app/frontend/streamlit_app_talk2knowledgegraphs.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.
@@ -0,0 +1,5 @@
1
+ """
2
+ This file is used to import the datasets and utils.
3
+ """
4
+
5
+ from . import agents, datasets, states, tools, utils
@@ -0,0 +1,5 @@
1
+ """
2
+ This file is used to import all the models in the package.
3
+ """
4
+
5
+ from . import t2kg_agent
@@ -0,0 +1,99 @@
1
+ """
2
+ This is the agent file for the Talk2KnowledgeGraphs agent.
3
+ """
4
+
5
+ import logging
6
+ from typing import Annotated
7
+
8
+ import hydra
9
+ from langchain_core.language_models.chat_models import BaseChatModel
10
+ from langgraph.checkpoint.memory import MemorySaver
11
+ from langgraph.graph import START, StateGraph
12
+ from langgraph.prebuilt import InjectedState, ToolNode, create_react_agent
13
+
14
+ from ..states.state_talk2knowledgegraphs import Talk2KnowledgeGraphs
15
+ from ..tools.graphrag_reasoning import GraphRAGReasoningTool
16
+
17
+ # from ..tools.multimodal_subgraph_extraction import MultimodalSubgraphExtractionTool
18
+ from ..tools.milvus_multimodal_subgraph_extraction import (
19
+ MultimodalSubgraphExtractionTool,
20
+ )
21
+
22
+ # from ..tools.cu2_multimodal_subgraph_extraction import MultimodalSubgraphExtractionTool
23
+ # from ..tools.gsfs_multimodal_subgraph_extraction import MultimodalSubgraphExtractionTool
24
+ from ..tools.subgraph_summarization import SubgraphSummarizationTool
25
+
26
+ # Initialize logger
27
+ logging.basicConfig(level=logging.INFO)
28
+ logger = logging.getLogger(__name__)
29
+
30
+
31
+ def get_app(uniq_id, llm_model: BaseChatModel):
32
+ """
33
+ This function returns the langraph app.
34
+ """
35
+
36
+ def agent_t2kg_node(state: Annotated[dict, InjectedState]):
37
+ """
38
+ This function calls the model.
39
+ """
40
+ logger.log(logging.INFO, "Calling t2kg_agent node with thread_id %s", uniq_id)
41
+ response = model.invoke(state, {"configurable": {"thread_id": uniq_id}})
42
+
43
+ return response
44
+
45
+ # Load hydra configuration
46
+ logger.log(logging.INFO, "Load Hydra configuration for Talk2KnowledgeGraphs agent.")
47
+ with hydra.initialize(version_base=None, config_path="../configs"):
48
+ cfg = hydra.compose(config_name="config", overrides=["agents/t2kg_agent=default"])
49
+ cfg = cfg.agents.t2kg_agent
50
+
51
+ # Define the tools
52
+ subgraph_extraction = MultimodalSubgraphExtractionTool()
53
+ subgraph_summarization = SubgraphSummarizationTool()
54
+ graphrag_reasoning = GraphRAGReasoningTool()
55
+ tools = ToolNode(
56
+ [
57
+ subgraph_extraction,
58
+ subgraph_summarization,
59
+ graphrag_reasoning,
60
+ ]
61
+ )
62
+
63
+ # Create the agent
64
+ model = create_react_agent(
65
+ llm_model,
66
+ tools=tools,
67
+ state_schema=Talk2KnowledgeGraphs,
68
+ prompt=cfg.state_modifier,
69
+ version="v2",
70
+ checkpointer=MemorySaver(),
71
+ )
72
+
73
+ # Define a new graph
74
+ workflow = StateGraph(Talk2KnowledgeGraphs)
75
+
76
+ # Define the two nodes we will cycle between
77
+ workflow.add_node("agent_t2kg", agent_t2kg_node)
78
+
79
+ # Set the entrypoint as the first node
80
+ # This means that this node is the first one called
81
+ workflow.add_edge(START, "agent_t2kg")
82
+
83
+ # Initialize memory to persist state between graph runs
84
+ checkpointer = MemorySaver()
85
+
86
+ # Finally, we compile it!
87
+ # This compiles it into a LangChain Runnable,
88
+ # meaning you can use it as you would any other runnable.
89
+ # Note that we're (optionally) passing the memory
90
+ # when compiling the graph
91
+ app = workflow.compile(checkpointer=checkpointer, name="T2KG_Agent")
92
+ logger.log(
93
+ logging.INFO,
94
+ "Compiled the graph with thread_id %s and llm_model %s",
95
+ uniq_id,
96
+ llm_model,
97
+ )
98
+
99
+ return app
@@ -0,0 +1,5 @@
1
+ """
2
+ Import all the modules in the package
3
+ """
4
+
5
+ from . import agents, app, tools, utils
@@ -0,0 +1,3 @@
1
+ """
2
+ Import all the modules in the package
3
+ """
@@ -0,0 +1,62 @@
1
+ _target_: agents.t2kg_agent.get_app
2
+ state_modifier: >
3
+ You are talk2knowledgegraphs agent, a helpful assistant for reasoning over knowledge graphs.
4
+ User can ask questions related to the knowledge graphs, and you will provide the answers using
5
+ the provided tools as follows (if necessary):
6
+ [`subgraph_extraction`, `subgraph_summarization`, `graphrag_reasoning`].
7
+
8
+ **Tools Descriptions**:
9
+ - `subgraph_extraction`: Extract a subgraph from the knowledge graph that contains the relevant
10
+ information to answer the user's query. This tool can be used to provide a subgraph context
11
+ as a part of the reasoning process. The extracted subgraph should contain the most relevant
12
+ nodes and edges to the user's query in the form of a textualized subgraph.
13
+ - `subgraph_summarization`: Summarize the extracted textualized subgraph obtained from the
14
+ `subgraph_extraction` tool. This tool can be used to provide a concise and informative summary
15
+ of the subgraph to be used for reasoning as subgraph context. This tool highlights the most
16
+ important nodes and edges in the subgraph to respond to the user's request.
17
+ - `graphrag_reasoning`: Reason over the extracted textualized subgraph to answer the user's
18
+ prompt by also considering the context from the extracted subgraph and the retrieved
19
+ documents. User may also have a set of uploaded files that can be used to provide additional
20
+ information for reasoning. The history of previous conversations should be considered as well,
21
+ and you as an agent should provide which conversations can be included as chat history.
22
+
23
+ As an agent, you should approach each request by first understanding the user's query and then
24
+ following the appropriate steps to provide the best answer possible.
25
+
26
+ **Execution Steps**:
27
+ - Understand thoroughly the user's query and think over the best approach to answer it.
28
+ - You may not need to call any tool for each user's query. Use the related tool(s) as needed.
29
+ Think deeply whether it is necessary to call any tool to respond to the user's request.
30
+ - Call `subgraph_extraction` if there is any indication that the user needs to get the
31
+ information from the knowledge graph, which is not directly available as context in the prompt or
32
+ in the previous extracted subgraph.
33
+ If the user asks for subgraph extraction, suggest a value for the `extraction_name` argument.
34
+ You should always follow it with `subgraph_summarization` as the next tool to be invoked.
35
+ - Call `subgraph_summarization` tool to summarize the extracted subgraph and provide
36
+ a useful insights over the subgraph. This tool also has the ability to filter endotypes
37
+ in the forms of differentially expressed genes that are relevant to the input query. Make sure
38
+ to include the most relevant genes if the user provides endotype-related documents.
39
+ The summary of the subgraph will be stored as `graph_summary` in the state in which you can use
40
+ it for reasoning over the subgraph in the `graphrag_reasoning` tool afterwards.
41
+ - If the user asks follow-up questions related to the extracted subgraph, you should
42
+ call `subgraph_summarization` followed by `graphrag_reasoning` tools if you think
43
+ the answer can be retrieved from the previously extracted subgraph.
44
+ - Call `graphrag_reasoning` tool to reason over the extracted subgraph and documents.
45
+ Always perform reasoning over the extracted subgraph and documents to provide
46
+ the best possible answer to the user's query. Before calling this tool,
47
+ make sure you have access to the summarized subgraph obtained from `subgraph_summarization` tool.
48
+ - By default, if the user asks for a specific question about the extracted graph, you should
49
+ call `subgraph_summarization` followed by `graphrag_reasoning` if the most recent subgraphs
50
+ contain the relevant information to answer the user's question.
51
+ Use the summarized subgraph as the subgraph context in the `graphrag_reasoning` tool.
52
+ - It is strongly recommended to avoid calling the same tool multiple times unless
53
+ it is necessary to get the correct and thorough answer to the user's request.
54
+
55
+ **Tool Calling Workflow Examples**:
56
+ - `subgraph_extraction` -> `subgraph_summarization` -> `graphrag_reasoning` when the user asks
57
+ for specific instructions to extract the subgraph and reason over it. Follow this order to
58
+ provide the most accurate and relevant information if you think the currently available context
59
+ is not enough to answer the user's question.
60
+ - `subgraph_summarization` -> `graphrag_reasoning` when the user asks for the previously extracted
61
+ subgraph. Use the summarized subgraph as the subgraph context in the `graphrag_reasoning` tool.
62
+ - Do not call `graphrag_reasoning` tool without calling `subgraph_summarization` tool first.
@@ -0,0 +1,5 @@
1
+ """
2
+ Import all the modules in the package
3
+ """
4
+
5
+ from . import frontend
@@ -0,0 +1,3 @@
1
+ """
2
+ Import all the modules in the package
3
+ """
@@ -0,0 +1,79 @@
1
+ _target_: app.frontend.streamlit_app_talk2knowledgegraphs
2
+ default_user: "talk2kg_user"
3
+ data_package_allowed_file_types:
4
+ - "pdf"
5
+ multimodal_allowed_file_types:
6
+ - "xls"
7
+ - "xlsx"
8
+ upload_data_dir: "../files"
9
+ kg_name: "BioBridge-PrimeKG"
10
+ kg_node_types:
11
+ - "gene/protein"
12
+ - "molecular_function"
13
+ - "cellular_component"
14
+ - "biological_process"
15
+ - "drug"
16
+ - "disease"
17
+ # kg_nodes_path: "aiagents4pharma/talk2knowledgegraphs/tests/files/biobridge_nodes.parquet.gzip"
18
+ # kg_edges_path: "aiagents4pharma/talk2knowledgegraphs/tests/files/biobridge_edges.parquet.gzip"
19
+ kg_pyg_path: "aiagents4pharma/talk2knowledgegraphs/tests/files/biobridge_multimodal_pyg_graph.pkl"
20
+ kg_text_path: "aiagents4pharma/talk2knowledgegraphs/tests/files/biobridge_multimodal_text_graph.pkl"
21
+ openai_api_key: ${oc.env:OPENAI_API_KEY}
22
+ # OpenAI configuration - can use custom base_url for enterprise/Azure deployments
23
+ openai_base_url: ${oc.env:OPENAI_BASE_URL,null} # Optional: custom OpenAI endpoint
24
+ openai_llms:
25
+ - "OpenAI/gpt-4o-mini"
26
+ openai_embeddings:
27
+ - "text-embedding-ada-002"
28
+ - "text-embedding-3-small"
29
+ # Rate limiting and retry configuration
30
+ llm_max_retries: 5 # Number of retries on rate limit or transient errors
31
+ llm_timeout: 60 # Timeout in seconds for LLM requests
32
+ embedding_max_retries: 3 # Number of retries for embedding requests
33
+ embedding_timeout: 30 # Timeout in seconds for embedding requests
34
+ # Azure OpenAI configuration
35
+ azure_openai_endpoint: ${oc.env:AZURE_OPENAI_ENDPOINT,null} # Azure OpenAI endpoint
36
+ azure_openai_deployment: ${oc.env:AZURE_OPENAI_DEPLOYMENT,null} # Azure deployment name
37
+ azure_openai_api_version: ${oc.env:AZURE_OPENAI_API_VERSION,"2024-02-01"} # Azure API version
38
+ azure_openai_model_name: ${oc.env:AZURE_OPENAI_MODEL_NAME,null} # Model name for analytics
39
+ azure_openai_model_version: ${oc.env:AZURE_OPENAI_MODEL_VERSION,null} # Model version
40
+ # Azure AD authentication (uses AZURE_CLIENT_ID, AZURE_TENANT_ID, AZURE_CLIENT_SECRET)
41
+ azure_client_id: ${oc.env:AZURE_CLIENT_ID,null}
42
+ azure_tenant_id: ${oc.env:AZURE_TENANT_ID,null}
43
+ azure_client_secret: ${oc.env:AZURE_CLIENT_SECRET,null}
44
+ # NVIDIA configuration
45
+ nvidia_api_key: ${oc.env:NVIDIA_API_KEY}
46
+ nvidia_llms:
47
+ - "NVIDIA/llama-3.3-70b-instruct"
48
+ - "NVIDIA/llama-3.1-405b-instruct"
49
+ - "NVIDIA/llama-3.1-70b-instruct"
50
+ nvidia_embeddings:
51
+ - "NVIDIA/llama-3.2-nv-embedqa-1b-v2"
52
+
53
+ azure_openai_llms:
54
+ - "Azure/gpt-4o-mini" # Will map to Azure deployment
55
+ azure_openai_embeddings:
56
+ - "Azure/text-embedding-ada-002"
57
+
58
+ # Ollama configuration (for local deployment)
59
+ ollama_llms:
60
+ - "Ollama/llama3.1:8b"
61
+ ollama_embeddings:
62
+ - "nomic-embed-text"
63
+ default_embedding_model: "openai"
64
+ temperature: 0.1
65
+ streaming: False
66
+ reasoning_subgraph_topk_nodes: 15
67
+ reasoning_subgraph_topk_nodes_min: 1
68
+ reasoning_subgraph_topk_nodes_max: 50
69
+ reasoning_subgraph_topk_edges: 15
70
+ reasoning_subgraph_topk_edges_min: 1
71
+ reasoning_subgraph_topk_edges_max: 50
72
+ # Logo configuration
73
+ logo_paths:
74
+ container: "/app/docs/assets/VPE.png"
75
+ local: "docs/assets/VPE.png"
76
+ relative: "../../docs/assets/VPE.png"
77
+ logo_link: "https://github.com/VirtualPatientEngine"
78
+ # Database configuration moved to configs/utils/database/milvus/default.yaml
79
+ # This frontend config now only contains frontend-specific settings
@@ -0,0 +1,13 @@
1
+ defaults:
2
+ - _self_
3
+ - utils/database/milvus: default
4
+ - agents/t2kg_agent: default
5
+ - tools/subgraph_extraction: default
6
+ - tools/multimodal_subgraph_extraction: default
7
+ - tools/subgraph_summarization: default
8
+ - tools/graphrag_reasoning: default
9
+ - utils/pubchem_utils: default
10
+ - utils/enrichments/uniprot_proteins: default
11
+ - utils/enrichments/ols_terms: default
12
+ - utils/enrichments/reactome_pathways: default
13
+ - app/frontend: default
@@ -0,0 +1,5 @@
1
+ """
2
+ Import all the modules in the package
3
+ """
4
+
5
+ from . import graphrag_reasoning, subgraph_extraction, subgraph_summarization
@@ -0,0 +1,3 @@
1
+ """
2
+ Import all the modules in the package
3
+ """
@@ -0,0 +1,24 @@
1
+ _target_: talk2knowledgegraphs.tools.graphrag_reasoning
2
+ splitter_chunk_size: 1024
3
+ splitter_chunk_overlap: 256
4
+ retriever_search_type: "mmr"
5
+ retriever_k: 3
6
+ retriever_fetch_k: 10
7
+ retriever_lambda_mult: 0.3
8
+ prompt_graphrag_w_docs_context: >
9
+ Given a chat history and the latest user question, which might reference context
10
+ in the chat history, formulate a standalone question that can be understood
11
+ without the chat history. Do NOT answer the question, just reformulate it if needed
12
+ and otherwise return it as is.
13
+
14
+ Question: {input}
15
+ prompt_graphrag_w_docs: >
16
+ You are talk2knowledgegraphs, a helpful assistant performing retrievel-augmented generation (RAG)
17
+ over knowledge graphs.
18
+ One of your tasks is to answer react-based questions by using the following pieces of
19
+ retrieved context to answer the question. You can leverage a summarization of the subgraph
20
+ and the retrieved documents to provide the best possible answer to the user's query.
21
+
22
+ Subgraph Summary: {subgraph_summary}
23
+ Context: {context}
24
+ Question: {input}
@@ -0,0 +1,33 @@
1
+ _target_: talk2knowledgegraphs.tools.multimodal_subgraph_extraction
2
+ ollama_embeddings:
3
+ - "nomic-embed-text"
4
+ temperature: 0.1
5
+ streaming: False
6
+
7
+ # PCST Algorithm Parameters
8
+ topk: 15
9
+ topk_e: 15
10
+ cost_e: 0.5
11
+ c_const: 0.01
12
+ root: -1
13
+ num_clusters: 1
14
+ pruning: "gw"
15
+ verbosity_level: 0
16
+
17
+ # Hardware-Specific Vector Processing
18
+ vector_processing:
19
+ # Enable dynamic metric type selection based on hardware
20
+ dynamic_metrics: true
21
+
22
+ # Tool-specific configuration only
23
+ # Database configuration moved to configs/utils/database/milvus/default.yaml
24
+
25
+ ## Important - node_colors_dict is added in order to pass the test for the
26
+ ## old multimodal_subgraph_extraction tool, later this tool along with the ollama configs will be removed
27
+ node_colors_dict:
28
+ "gene/protein": "#6a79f7"
29
+ "molecular_function": "#82cafc"
30
+ "cellular_component": "#3f9b0b"
31
+ "biological_process": "#c5c9c7"
32
+ "drug": "#c4a661"
33
+ "disease": "#80013f"
@@ -0,0 +1,3 @@
1
+ """
2
+ Import all the modules in the package
3
+ """
@@ -0,0 +1,43 @@
1
+ _target_: talk2knowledgegraphs.tools.subgraph_extraction
2
+ ollama_embeddings:
3
+ - "nomic-embed-text"
4
+ temperature: 0.1
5
+ streaming: False
6
+ topk: 5
7
+ topk_e: 5
8
+ cost_e: 0.5
9
+ c_const: 0.01
10
+ root: -1
11
+ num_clusters: 1
12
+ pruning: "gw"
13
+ verbosity_level: 0
14
+ node_id_column: "node_id"
15
+ node_attr_column: "node_attr"
16
+ edge_src_column: "edge_src"
17
+ edge_attr_column: "edge_attr"
18
+ edge_dst_column: "edge_dst"
19
+ prompt_endotype_filtering: >
20
+ You are talk2knowledgegraphs agent, a helpful assistant in filtering the most relevant endotype
21
+ for the subgraph extraction process.
22
+ Given the retrieved endotype documents, you need to filter the most relevant
23
+ endotype that will be used for the following reasoning process.
24
+ Only included a list of genes that exist in the provided documents
25
+ that are relevant to the input query.
26
+ For this task, you may modify your prompt to optimize the filtering process
27
+ based on factual informationbetween each gene in the documents and the input query.
28
+ Discover as many genes as possible that are relevant for enriching the subgraph extraction process.
29
+
30
+ You do not need to include any other information in the output.
31
+ Use the following output format:
32
+ [gene_1, gene_2, ..., gene_n]
33
+
34
+ {context}
35
+ Input: {input}
36
+ prompt_endotype_addition: >
37
+ Include the following endotype for the subgraph extraction process:
38
+ splitter_chunk_size: 64
39
+ splitter_chunk_overlap: 16
40
+ retriever_search_type: "mmr"
41
+ retriever_k: 3
42
+ retriever_fetch_k: 10
43
+ retriever_lambda_mult: 0.3
@@ -0,0 +1,3 @@
1
+ """
2
+ Import all the modules in the package
3
+ """
@@ -0,0 +1,9 @@
1
+ _target_: talk2knowledgegraphs.tools.subgraph_summarization
2
+ prompt_subgraph_summarization: >
3
+ You are talk2knowledgegraphs agent, a helpful assistant in reasoning over biomedical knowledge graph.
4
+ Your task is to summarize the extracted textualized subgraph to provide a concise and informative
5
+ summary of the subgraph to be used for reasoning as subgraph context. You are responsible for
6
+ highlighting the most important nodes and edges in the subgraph to respond to the user's question.
7
+
8
+ Textualized Subgraph: {textualized_subgraph}
9
+ Question: {input}
@@ -0,0 +1,3 @@
1
+ """
2
+ Import all the modules in the package
3
+ """