aiagents4pharma 1.28.0__tar.gz → 1.30.0__tar.gz

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 (235) hide show
  1. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/PKG-INFO +6 -5
  2. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/README.md +5 -4
  3. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2scholars/agents/__init__.py +1 -0
  4. aiagents4pharma-1.30.0/aiagents4pharma/talk2scholars/agents/main_agent.py +78 -0
  5. aiagents4pharma-1.30.0/aiagents4pharma/talk2scholars/agents/paper_download_agent.py +86 -0
  6. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2scholars/agents/s2_agent.py +10 -6
  7. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2scholars/agents/zotero_agent.py +12 -6
  8. aiagents4pharma-1.30.0/aiagents4pharma/talk2scholars/configs/agents/talk2scholars/main_agent/default.yaml +13 -0
  9. aiagents4pharma-1.30.0/aiagents4pharma/talk2scholars/configs/agents/talk2scholars/s2_agent/default.yaml +19 -0
  10. aiagents4pharma-1.30.0/aiagents4pharma/talk2scholars/configs/agents/talk2scholars/zotero_agent/default.yaml +19 -0
  11. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2scholars/configs/config.yaml +3 -0
  12. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2scholars/configs/tools/__init__.py +1 -0
  13. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2scholars/configs/tools/multi_paper_recommendation/default.yaml +1 -1
  14. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2scholars/configs/tools/search/default.yaml +1 -1
  15. aiagents4pharma-1.30.0/aiagents4pharma/talk2scholars/configs/tools/single_paper_recommendation/__init__.py +3 -0
  16. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2scholars/configs/tools/single_paper_recommendation/default.yaml +1 -1
  17. aiagents4pharma-1.30.0/aiagents4pharma/talk2scholars/configs/tools/zotero_read/__init__.py +3 -0
  18. aiagents4pharma-1.30.0/aiagents4pharma/talk2scholars/configs/tools/zotero_read/default.yaml +56 -0
  19. aiagents4pharma-1.30.0/aiagents4pharma/talk2scholars/configs/tools/zotero_write/__inti__.py +3 -0
  20. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2scholars/state/state_talk2scholars.py +1 -0
  21. aiagents4pharma-1.30.0/aiagents4pharma/talk2scholars/tests/test_main_agent.py +196 -0
  22. aiagents4pharma-1.30.0/aiagents4pharma/talk2scholars/tests/test_paper_download_agent.py +142 -0
  23. aiagents4pharma-1.30.0/aiagents4pharma/talk2scholars/tests/test_paper_download_tools.py +154 -0
  24. aiagents4pharma-1.30.0/aiagents4pharma/talk2scholars/tests/test_s2_display.py +74 -0
  25. aiagents4pharma-1.30.0/aiagents4pharma/talk2scholars/tests/test_s2_multi.py +282 -0
  26. aiagents4pharma-1.30.0/aiagents4pharma/talk2scholars/tests/test_s2_query.py +78 -0
  27. aiagents4pharma-1.30.0/aiagents4pharma/talk2scholars/tests/test_s2_retrieve.py +65 -0
  28. aiagents4pharma-1.30.0/aiagents4pharma/talk2scholars/tests/test_s2_search.py +266 -0
  29. aiagents4pharma-1.30.0/aiagents4pharma/talk2scholars/tests/test_s2_single.py +274 -0
  30. aiagents4pharma-1.30.0/aiagents4pharma/talk2scholars/tests/test_zotero_path.py +57 -0
  31. aiagents4pharma-1.30.0/aiagents4pharma/talk2scholars/tests/test_zotero_read.py +412 -0
  32. aiagents4pharma-1.30.0/aiagents4pharma/talk2scholars/tests/test_zotero_write.py +626 -0
  33. aiagents4pharma-1.30.0/aiagents4pharma/talk2scholars/tools/paper_download/__init__.py +17 -0
  34. aiagents4pharma-1.30.0/aiagents4pharma/talk2scholars/tools/paper_download/abstract_downloader.py +43 -0
  35. aiagents4pharma-1.30.0/aiagents4pharma/talk2scholars/tools/paper_download/arxiv_downloader.py +108 -0
  36. aiagents4pharma-1.30.0/aiagents4pharma/talk2scholars/tools/paper_download/download_arxiv_input.py +60 -0
  37. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2scholars/tools/s2/multi_paper_rec.py +50 -34
  38. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2scholars/tools/s2/retrieve_semantic_scholar_paper_id.py +8 -8
  39. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2scholars/tools/s2/search.py +36 -23
  40. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2scholars/tools/s2/single_paper_rec.py +44 -38
  41. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2scholars/tools/zotero/__init__.py +2 -0
  42. aiagents4pharma-1.30.0/aiagents4pharma/talk2scholars/tools/zotero/utils/__init__.py +5 -0
  43. aiagents4pharma-1.30.0/aiagents4pharma/talk2scholars/tools/zotero/utils/zotero_path.py +63 -0
  44. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2scholars/tools/zotero/zotero_read.py +64 -19
  45. aiagents4pharma-1.30.0/aiagents4pharma/talk2scholars/tools/zotero/zotero_write.py +247 -0
  46. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma.egg-info/PKG-INFO +6 -5
  47. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma.egg-info/SOURCES.txt +23 -5
  48. aiagents4pharma-1.30.0/release_version.txt +1 -0
  49. aiagents4pharma-1.28.0/aiagents4pharma/talk2scholars/agents/main_agent.py +0 -252
  50. aiagents4pharma-1.28.0/aiagents4pharma/talk2scholars/configs/agents/talk2scholars/main_agent/default.yaml +0 -59
  51. aiagents4pharma-1.28.0/aiagents4pharma/talk2scholars/configs/agents/talk2scholars/s2_agent/default.yaml +0 -42
  52. aiagents4pharma-1.28.0/aiagents4pharma/talk2scholars/configs/agents/talk2scholars/zotero_agent/default.yaml +0 -35
  53. aiagents4pharma-1.28.0/aiagents4pharma/talk2scholars/configs/tools/zotero_read/default.yaml +0 -15
  54. aiagents4pharma-1.28.0/aiagents4pharma/talk2scholars/tests/test_call_s2.py +0 -100
  55. aiagents4pharma-1.28.0/aiagents4pharma/talk2scholars/tests/test_call_zotero.py +0 -94
  56. aiagents4pharma-1.28.0/aiagents4pharma/talk2scholars/tests/test_main_agent.py +0 -121
  57. aiagents4pharma-1.28.0/aiagents4pharma/talk2scholars/tests/test_s2_tools.py +0 -355
  58. aiagents4pharma-1.28.0/aiagents4pharma/talk2scholars/tests/test_zotero_tool.py +0 -171
  59. aiagents4pharma-1.28.0/release_version.txt +0 -1
  60. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/LICENSE +0 -0
  61. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/__init__.py +0 -0
  62. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2aiagents4pharma/__init__.py +0 -0
  63. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2aiagents4pharma/agents/__init__.py +0 -0
  64. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2aiagents4pharma/agents/main_agent.py +0 -0
  65. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2aiagents4pharma/configs/__init__.py +0 -0
  66. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2aiagents4pharma/configs/agents/__init__.py +0 -0
  67. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2aiagents4pharma/configs/agents/main_agent/default.yaml +0 -0
  68. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2aiagents4pharma/configs/config.yaml +0 -0
  69. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2aiagents4pharma/states/__init__.py +0 -0
  70. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2aiagents4pharma/states/state_talk2aiagents4pharma.py +0 -0
  71. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2aiagents4pharma/tests/__init__.py +0 -0
  72. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2aiagents4pharma/tests/test_main_agent.py +0 -0
  73. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2biomodels/__init__.py +0 -0
  74. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2biomodels/agents/__init__.py +0 -0
  75. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2biomodels/agents/t2b_agent.py +0 -0
  76. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2biomodels/api/__init__.py +0 -0
  77. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2biomodels/api/kegg.py +0 -0
  78. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2biomodels/api/ols.py +0 -0
  79. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2biomodels/api/uniprot.py +0 -0
  80. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2biomodels/configs/__init__.py +0 -0
  81. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2biomodels/configs/agents/__init__.py +0 -0
  82. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2biomodels/configs/agents/t2b_agent/__init__.py +0 -0
  83. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2biomodels/configs/agents/t2b_agent/default.yaml +0 -0
  84. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2biomodels/configs/config.yaml +0 -0
  85. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2biomodels/configs/tools/__init__.py +0 -0
  86. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2biomodels/configs/tools/ask_question/__init__.py +0 -0
  87. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2biomodels/configs/tools/ask_question/default.yaml +0 -0
  88. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2biomodels/configs/tools/custom_plotter/__init__.py +0 -0
  89. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2biomodels/configs/tools/custom_plotter/default.yaml +0 -0
  90. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2biomodels/configs/tools/get_annotation/__init__.py +0 -0
  91. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2biomodels/configs/tools/get_annotation/default.yaml +0 -0
  92. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2biomodels/models/__init__.py +0 -0
  93. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2biomodels/models/basico_model.py +0 -0
  94. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2biomodels/models/sys_bio_model.py +0 -0
  95. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2biomodels/states/__init__.py +0 -0
  96. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2biomodels/states/state_talk2biomodels.py +0 -0
  97. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2biomodels/tests/__init__.py +0 -0
  98. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2biomodels/tests/test_api.py +0 -0
  99. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2biomodels/tests/test_ask_question.py +0 -0
  100. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2biomodels/tests/test_basico_model.py +0 -0
  101. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2biomodels/tests/test_get_annotation.py +0 -0
  102. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2biomodels/tests/test_getmodelinfo.py +0 -0
  103. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2biomodels/tests/test_integration.py +0 -0
  104. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2biomodels/tests/test_load_biomodel.py +0 -0
  105. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2biomodels/tests/test_param_scan.py +0 -0
  106. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2biomodels/tests/test_query_article.py +0 -0
  107. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2biomodels/tests/test_search_models.py +0 -0
  108. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2biomodels/tests/test_simulate_model.py +0 -0
  109. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2biomodels/tests/test_steady_state.py +0 -0
  110. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2biomodels/tests/test_sys_bio_model.py +0 -0
  111. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2biomodels/tools/__init__.py +0 -0
  112. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2biomodels/tools/ask_question.py +0 -0
  113. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2biomodels/tools/custom_plotter.py +0 -0
  114. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2biomodels/tools/get_annotation.py +0 -0
  115. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2biomodels/tools/get_modelinfo.py +0 -0
  116. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2biomodels/tools/load_arguments.py +0 -0
  117. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2biomodels/tools/load_biomodel.py +0 -0
  118. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2biomodels/tools/parameter_scan.py +0 -0
  119. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2biomodels/tools/query_article.py +0 -0
  120. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2biomodels/tools/search_models.py +0 -0
  121. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2biomodels/tools/simulate_model.py +0 -0
  122. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2biomodels/tools/steady_state.py +0 -0
  123. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2biomodels/tools/utils.py +0 -0
  124. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2cells/__init__.py +0 -0
  125. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2cells/agents/__init__.py +0 -0
  126. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2cells/agents/scp_agent.py +0 -0
  127. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2cells/states/__init__.py +0 -0
  128. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2cells/states/state_talk2cells.py +0 -0
  129. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2cells/tests/scp_agent/test_scp_agent.py +0 -0
  130. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2cells/tools/__init__.py +0 -0
  131. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2cells/tools/scp_agent/__init__.py +0 -0
  132. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2cells/tools/scp_agent/display_studies.py +0 -0
  133. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2cells/tools/scp_agent/search_studies.py +0 -0
  134. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2knowledgegraphs/__init__.py +0 -0
  135. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2knowledgegraphs/agents/__init__.py +0 -0
  136. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2knowledgegraphs/agents/t2kg_agent.py +0 -0
  137. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2knowledgegraphs/configs/__init__.py +0 -0
  138. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2knowledgegraphs/configs/agents/t2kg_agent/__init__.py +0 -0
  139. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2knowledgegraphs/configs/agents/t2kg_agent/default.yaml +0 -0
  140. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2knowledgegraphs/configs/app/__init__.py +0 -0
  141. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2knowledgegraphs/configs/app/frontend/__init__.py +0 -0
  142. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2knowledgegraphs/configs/app/frontend/default.yaml +0 -0
  143. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2knowledgegraphs/configs/config.yaml +0 -0
  144. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2knowledgegraphs/configs/tools/__init__.py +0 -0
  145. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2knowledgegraphs/configs/tools/graphrag_reasoning/__init__.py +0 -0
  146. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2knowledgegraphs/configs/tools/graphrag_reasoning/default.yaml +0 -0
  147. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2knowledgegraphs/configs/tools/subgraph_extraction/__init__.py +0 -0
  148. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2knowledgegraphs/configs/tools/subgraph_extraction/default.yaml +0 -0
  149. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2knowledgegraphs/configs/tools/subgraph_summarization/__init__.py +0 -0
  150. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2knowledgegraphs/configs/tools/subgraph_summarization/default.yaml +0 -0
  151. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2knowledgegraphs/datasets/__init__.py +0 -0
  152. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2knowledgegraphs/datasets/biobridge_primekg.py +0 -0
  153. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2knowledgegraphs/datasets/dataset.py +0 -0
  154. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2knowledgegraphs/datasets/primekg.py +0 -0
  155. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2knowledgegraphs/datasets/starkqa_primekg.py +0 -0
  156. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2knowledgegraphs/states/__init__.py +0 -0
  157. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2knowledgegraphs/states/state_talk2knowledgegraphs.py +0 -0
  158. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2knowledgegraphs/tests/__init__.py +0 -0
  159. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2knowledgegraphs/tests/test_agents_t2kg_agent.py +0 -0
  160. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2knowledgegraphs/tests/test_datasets_biobridge_primekg.py +0 -0
  161. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2knowledgegraphs/tests/test_datasets_dataset.py +0 -0
  162. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2knowledgegraphs/tests/test_datasets_primekg.py +0 -0
  163. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2knowledgegraphs/tests/test_datasets_starkqa_primekg.py +0 -0
  164. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2knowledgegraphs/tests/test_tools_graphrag_reasoning.py +0 -0
  165. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2knowledgegraphs/tests/test_tools_subgraph_extraction.py +0 -0
  166. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2knowledgegraphs/tests/test_tools_subgraph_summarization.py +0 -0
  167. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2knowledgegraphs/tests/test_utils_embeddings_embeddings.py +0 -0
  168. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2knowledgegraphs/tests/test_utils_embeddings_huggingface.py +0 -0
  169. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2knowledgegraphs/tests/test_utils_embeddings_nim_molmim.py +0 -0
  170. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2knowledgegraphs/tests/test_utils_embeddings_ollama.py +0 -0
  171. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2knowledgegraphs/tests/test_utils_embeddings_sentencetransformer.py +0 -0
  172. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2knowledgegraphs/tests/test_utils_enrichments_enrichments.py +0 -0
  173. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2knowledgegraphs/tests/test_utils_enrichments_ollama.py +0 -0
  174. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2knowledgegraphs/tests/test_utils_enrichments_pubchem.py +0 -0
  175. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2knowledgegraphs/tests/test_utils_kg_utils.py +0 -0
  176. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2knowledgegraphs/tests/test_utils_pubchem_utils.py +0 -0
  177. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2knowledgegraphs/tools/__init__.py +0 -0
  178. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2knowledgegraphs/tools/graphrag_reasoning.py +0 -0
  179. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2knowledgegraphs/tools/load_arguments.py +0 -0
  180. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2knowledgegraphs/tools/subgraph_extraction.py +0 -0
  181. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2knowledgegraphs/tools/subgraph_summarization.py +0 -0
  182. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2knowledgegraphs/utils/__init__.py +0 -0
  183. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2knowledgegraphs/utils/embeddings/__init__.py +0 -0
  184. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2knowledgegraphs/utils/embeddings/embeddings.py +0 -0
  185. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2knowledgegraphs/utils/embeddings/huggingface.py +0 -0
  186. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2knowledgegraphs/utils/embeddings/nim_molmim.py +0 -0
  187. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2knowledgegraphs/utils/embeddings/ollama.py +0 -0
  188. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2knowledgegraphs/utils/embeddings/sentence_transformer.py +0 -0
  189. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2knowledgegraphs/utils/enrichments/__init__.py +0 -0
  190. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2knowledgegraphs/utils/enrichments/enrichments.py +0 -0
  191. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2knowledgegraphs/utils/enrichments/ollama.py +0 -0
  192. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2knowledgegraphs/utils/enrichments/pubchem_strings.py +0 -0
  193. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2knowledgegraphs/utils/extractions/__init__.py +0 -0
  194. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2knowledgegraphs/utils/extractions/pcst.py +0 -0
  195. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2knowledgegraphs/utils/kg_utils.py +0 -0
  196. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2knowledgegraphs/utils/pubchem_utils.py +0 -0
  197. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2scholars/__init__.py +0 -0
  198. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2scholars/agents/pdf_agent.py +0 -0
  199. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2scholars/configs/__init__.py +0 -0
  200. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2scholars/configs/agents/__init__.py +0 -0
  201. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2scholars/configs/agents/talk2scholars/__init__.py +0 -0
  202. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2scholars/configs/agents/talk2scholars/main_agent/__init__.py +0 -0
  203. {aiagents4pharma-1.28.0/aiagents4pharma/talk2scholars/configs/agents/talk2scholars/pdf_agent → aiagents4pharma-1.30.0/aiagents4pharma/talk2scholars/configs/agents/talk2scholars/paper_download_agent}/__init__.py +0 -0
  204. {aiagents4pharma-1.28.0/aiagents4pharma/talk2scholars/configs/agents/talk2scholars/s2_agent → aiagents4pharma-1.30.0/aiagents4pharma/talk2scholars/configs/agents/talk2scholars/pdf_agent}/__init__.py +0 -0
  205. {aiagents4pharma-1.28.0/aiagents4pharma/talk2scholars/configs/agents/talk2scholars/zotero_agent → aiagents4pharma-1.30.0/aiagents4pharma/talk2scholars/configs/agents/talk2scholars/s2_agent}/__init__.py +0 -0
  206. {aiagents4pharma-1.28.0/aiagents4pharma/talk2scholars/configs/app/frontend → aiagents4pharma-1.30.0/aiagents4pharma/talk2scholars/configs/agents/talk2scholars/zotero_agent}/__init__.py +0 -0
  207. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2scholars/configs/app/__init__.py +0 -0
  208. {aiagents4pharma-1.28.0/aiagents4pharma/talk2scholars/configs/tools/multi_paper_recommendation → aiagents4pharma-1.30.0/aiagents4pharma/talk2scholars/configs/app/frontend}/__init__.py +0 -0
  209. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2scholars/configs/app/frontend/default.yaml +0 -0
  210. {aiagents4pharma-1.28.0/aiagents4pharma/talk2scholars/configs/tools/question_and_answer → aiagents4pharma-1.30.0/aiagents4pharma/talk2scholars/configs/tools/download_arxiv_paper}/__init__.py +0 -0
  211. {aiagents4pharma-1.28.0/aiagents4pharma/talk2scholars/configs/tools/retrieve_semantic_scholar_paper_id → aiagents4pharma-1.30.0/aiagents4pharma/talk2scholars/configs/tools/multi_paper_recommendation}/__init__.py +0 -0
  212. {aiagents4pharma-1.28.0/aiagents4pharma/talk2scholars/configs/tools/search → aiagents4pharma-1.30.0/aiagents4pharma/talk2scholars/configs/tools/question_and_answer}/__init__.py +0 -0
  213. {aiagents4pharma-1.28.0/aiagents4pharma/talk2scholars/configs/tools/single_paper_recommendation → aiagents4pharma-1.30.0/aiagents4pharma/talk2scholars/configs/tools/retrieve_semantic_scholar_paper_id}/__init__.py +0 -0
  214. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2scholars/configs/tools/retrieve_semantic_scholar_paper_id/default.yaml +0 -0
  215. {aiagents4pharma-1.28.0/aiagents4pharma/talk2scholars/configs/tools/zotero_read → aiagents4pharma-1.30.0/aiagents4pharma/talk2scholars/configs/tools/search}/__init__.py +0 -0
  216. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2scholars/state/__init__.py +0 -0
  217. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2scholars/tests/__init__.py +0 -0
  218. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2scholars/tests/test_llm_main_integration.py +0 -0
  219. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2scholars/tests/test_pdf_agent.py +0 -0
  220. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2scholars/tests/test_question_and_answer_tool.py +0 -0
  221. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2scholars/tests/test_routing_logic.py +0 -0
  222. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2scholars/tests/test_s2_agent.py +0 -0
  223. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2scholars/tests/test_state.py +0 -0
  224. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2scholars/tests/test_zotero_agent.py +0 -0
  225. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2scholars/tools/__init__.py +0 -0
  226. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2scholars/tools/pdf/__init__.py +0 -0
  227. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2scholars/tools/pdf/question_and_answer.py +0 -0
  228. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2scholars/tools/s2/__init__.py +0 -0
  229. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2scholars/tools/s2/display_results.py +0 -0
  230. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma/talk2scholars/tools/s2/query_results.py +0 -0
  231. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma.egg-info/dependency_links.txt +0 -0
  232. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma.egg-info/requires.txt +0 -0
  233. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/aiagents4pharma.egg-info/top_level.txt +0 -0
  234. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/pyproject.toml +0 -0
  235. {aiagents4pharma-1.28.0 → aiagents4pharma-1.30.0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: aiagents4pharma
3
- Version: 1.28.0
3
+ Version: 1.30.0
4
4
  Summary: AI Agents for drug discovery, drug development, and other pharmaceutical R&D.
5
5
  Classifier: Programming Language :: Python :: 3
6
6
  Classifier: License :: OSI Approved :: MIT License
@@ -91,6 +91,7 @@ Our toolkit currently consists of the following agents:
91
91
  ![Python Version from PEP 621 TOML](https://img.shields.io/python/required-version-toml?tomlFilePath=https%3A%2F%2Fraw.githubusercontent.com%2FVirtualPatientEngine%2FAIAgents4Pharma%2Frefs%2Fheads%2Fmain%2Fpyproject.toml)
92
92
 
93
93
  ### Installation
94
+
94
95
  _Please use version 1.26.2 or later for better support with NVIDIA NIM models._
95
96
 
96
97
  #### Option 1: PyPI
@@ -135,10 +136,10 @@ cd AIAgents4Pharma/aiagents4pharma/talk2knowledgegraphs
135
136
  LANGCHAIN_TRACING_V2=true
136
137
  LANGCHAIN_API_KEY=your_langchain_api_key_here
137
138
  # Notes:
138
- # - The API endpoint for Ollama is already set in env.example.
139
- # - Both API keys (OPENAI_API_KEY and NVIDIA_API_KEY) are required for Talk2AIAgents4Pharma.
140
- # - If using Talk2KnowledgeGraphs separately, only the OPENAI_API_KEY is needed.
141
- # - Langsmith API for tracing is optional for both, set it in env.example if required.
139
+ # The API endpoint for Ollama is already set in env.example.
140
+ # Both API keys (OPENAI_API_KEY and NVIDIA_API_KEY) are required for Talk2AIAgents4Pharma.
141
+ # If using Talk2KnowledgeGraphs separately, only the OPENAI_API_KEY is needed.
142
+ # Langsmith API for tracing is optional for both, set it in env.example if required.
142
143
  ```
143
144
 
144
145
  4. Save the file.
@@ -26,6 +26,7 @@ Our toolkit currently consists of the following agents:
26
26
  ![Python Version from PEP 621 TOML](https://img.shields.io/python/required-version-toml?tomlFilePath=https%3A%2F%2Fraw.githubusercontent.com%2FVirtualPatientEngine%2FAIAgents4Pharma%2Frefs%2Fheads%2Fmain%2Fpyproject.toml)
27
27
 
28
28
  ### Installation
29
+
29
30
  _Please use version 1.26.2 or later for better support with NVIDIA NIM models._
30
31
 
31
32
  #### Option 1: PyPI
@@ -70,10 +71,10 @@ cd AIAgents4Pharma/aiagents4pharma/talk2knowledgegraphs
70
71
  LANGCHAIN_TRACING_V2=true
71
72
  LANGCHAIN_API_KEY=your_langchain_api_key_here
72
73
  # Notes:
73
- # - The API endpoint for Ollama is already set in env.example.
74
- # - Both API keys (OPENAI_API_KEY and NVIDIA_API_KEY) are required for Talk2AIAgents4Pharma.
75
- # - If using Talk2KnowledgeGraphs separately, only the OPENAI_API_KEY is needed.
76
- # - Langsmith API for tracing is optional for both, set it in env.example if required.
74
+ # The API endpoint for Ollama is already set in env.example.
75
+ # Both API keys (OPENAI_API_KEY and NVIDIA_API_KEY) are required for Talk2AIAgents4Pharma.
76
+ # If using Talk2KnowledgeGraphs separately, only the OPENAI_API_KEY is needed.
77
+ # Langsmith API for tracing is optional for both, set it in env.example if required.
77
78
  ```
78
79
 
79
80
  4. Save the file.
@@ -4,5 +4,6 @@ This file is used to import all the modules in the package.
4
4
 
5
5
  from . import main_agent
6
6
  from . import s2_agent
7
+ from . import paper_download_agent
7
8
  from . import zotero_agent
8
9
  from . import pdf_agent
@@ -0,0 +1,78 @@
1
+ #!/usr/bin/env python3
2
+
3
+ """
4
+ Main agent for the talk2scholars app using ReAct pattern.
5
+
6
+ This module implements a hierarchical agent system where a supervisor agent
7
+ routes queries to specialized sub-agents. It follows the LangGraph patterns
8
+ for multi-agent systems and implements proper state management.
9
+ """
10
+
11
+ import logging
12
+ import hydra
13
+ from langgraph_supervisor import create_supervisor
14
+ from langchain_openai import ChatOpenAI
15
+ from langchain_core.language_models.chat_models import BaseChatModel
16
+ from langgraph.checkpoint.memory import MemorySaver
17
+ from ..agents.s2_agent import get_app as get_app_s2
18
+ from ..agents.zotero_agent import get_app as get_app_zotero
19
+ from ..state.state_talk2scholars import Talk2Scholars
20
+
21
+ # Initialize logger
22
+ logging.basicConfig(level=logging.INFO)
23
+ logger = logging.getLogger(__name__)
24
+
25
+
26
+ def get_app(uniq_id, llm_model: BaseChatModel):
27
+ """
28
+ Initializes and returns the LangGraph-based hierarchical agent system.
29
+
30
+ This function constructs the agent workflow by defining nodes for the supervisor
31
+ and sub-agents. It compiles the graph using `StateGraph` to enable structured
32
+ conversational workflows.
33
+
34
+ Args:
35
+ thread_id (str): A unique session identifier for tracking conversation state.
36
+ llm_model (BaseChatModel, optional): The language model used for query processing.
37
+ Defaults to `ChatOpenAI(model="gpt-4o-mini", temperature=0)`.
38
+
39
+ Returns:
40
+ StateGraph: A compiled LangGraph application that can process user queries.
41
+
42
+ Example:
43
+ >>> app = get_app("thread_123")
44
+ >>> result = app.invoke(initial_state)
45
+ """
46
+ if llm_model.model_name == "gpt-4o-mini":
47
+ llm_model = ChatOpenAI(
48
+ model="gpt-4o-mini",
49
+ temperature=0,
50
+ model_kwargs={"parallel_tool_calls": False},
51
+ )
52
+ # Load hydra configuration
53
+ logger.log(logging.INFO, "Launching Talk2Scholars with thread_id %s", uniq_id)
54
+ with hydra.initialize(version_base=None, config_path="../configs/"):
55
+ cfg = hydra.compose(
56
+ config_name="config", overrides=["agents/talk2scholars/main_agent=default"]
57
+ )
58
+ cfg = cfg.agents.talk2scholars.main_agent
59
+ logger.log(logging.INFO, "System_prompt of Talk2Scholars: %s", cfg.system_prompt)
60
+ # Create supervisor workflow
61
+ workflow = create_supervisor(
62
+ [
63
+ get_app_s2(uniq_id, llm_model), # semantic scholar
64
+ get_app_zotero(uniq_id, llm_model), # zotero
65
+ ],
66
+ model=llm_model,
67
+ state_schema=Talk2Scholars,
68
+ # Full history is needed to extract
69
+ # the tool artifacts
70
+ output_mode="full_history",
71
+ add_handoff_back_messages=False,
72
+ prompt=cfg.system_prompt,
73
+ )
74
+
75
+ # Compile and run
76
+ app = workflow.compile(checkpointer=MemorySaver(), name="Talk2Scholars_MainAgent")
77
+
78
+ return app
@@ -0,0 +1,86 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ This module defines the paper download agent that connects to the arXiv API to fetch
4
+ paper details and PDFs. It is part of the Talk2Scholars project.
5
+ """
6
+
7
+ import logging
8
+ from typing import Any, Dict
9
+ import hydra
10
+ from langchain_core.language_models.chat_models import BaseChatModel
11
+ from langgraph.graph import START, StateGraph
12
+ from langgraph.prebuilt.chat_agent_executor import create_react_agent
13
+ from langgraph.prebuilt.tool_node import ToolNode
14
+ from langgraph.checkpoint.memory import MemorySaver
15
+ from ..state.state_talk2scholars import Talk2Scholars
16
+ from ..tools.paper_download import download_arxiv_paper
17
+ from ..tools.s2.query_results import query_results
18
+
19
+ # Initialize logger
20
+ logging.basicConfig(level=logging.INFO)
21
+ logger = logging.getLogger(__name__)
22
+
23
+ def get_app(uniq_id, llm_model: BaseChatModel):
24
+ """
25
+ Initializes and returns the LangGraph application for the Talk2Scholars paper download agent.
26
+
27
+ Args:
28
+ uniq_id (str): A unique identifier for tracking the current session.
29
+ llm_model (BaseChatModel, optional): The language model to be used by the agent.
30
+ Defaults to ChatOpenAI(model="gpt-4o-mini", temperature=0.5).
31
+
32
+ Returns:
33
+ StateGraph: A compiled LangGraph application that enables the paper download agent to
34
+ process user queries and retrieve arXiv papers.
35
+ """
36
+
37
+ # Load Hydra configuration
38
+ logger.info("Loading Hydra configuration for Talk2Scholars paper download agent")
39
+ with hydra.initialize(version_base=None, config_path="../configs"):
40
+ cfg = hydra.compose(
41
+ config_name="config",
42
+ overrides=["agents/talk2scholars/paper_download_agent=default"]
43
+ )
44
+ cfg = cfg.agents.talk2scholars.paper_download_agent
45
+
46
+ # Define tools properly
47
+ tools = ToolNode(
48
+ [download_arxiv_paper, query_results]
49
+ )
50
+
51
+ # Define the model
52
+ logger.info("Using OpenAI model %s", llm_model)
53
+ model = create_react_agent(
54
+ llm_model,
55
+ tools=tools,
56
+ state_schema=Talk2Scholars,
57
+ prompt=cfg.prompt,
58
+ checkpointer=MemorySaver(),
59
+ )
60
+
61
+ def paper_download_agent_node(state: Talk2Scholars) -> Dict[str, Any]:
62
+ """
63
+ Processes the current state to fetch the arXiv paper.
64
+ """
65
+ logger.info("Creating paper download agent node with thread_id: %s", uniq_id)
66
+ result = model.invoke(state, {"configurable": {"thread_id": uniq_id}})
67
+ return result
68
+
69
+ # Define new graph
70
+ workflow = StateGraph(Talk2Scholars)
71
+
72
+ # Adding node for paper download agent
73
+ workflow.add_node("paper_download_agent", paper_download_agent_node)
74
+
75
+ # Entering into the agent
76
+ workflow.add_edge(START, "paper_download_agent")
77
+
78
+ # Memory management for states between graph runs
79
+ checkpointer = MemorySaver()
80
+
81
+ # Compile the graph
82
+ app = workflow.compile(checkpointer=checkpointer)
83
+
84
+ # Logging the information and returning the app
85
+ logger.info("Compiled the graph")
86
+ return app
@@ -28,9 +28,7 @@ logging.basicConfig(level=logging.INFO)
28
28
  logger = logging.getLogger(__name__)
29
29
 
30
30
 
31
- def get_app(
32
- uniq_id, llm_model: BaseChatModel
33
- ):
31
+ def get_app(uniq_id, llm_model: BaseChatModel):
34
32
  """
35
33
  Initializes and returns the LangGraph application for the Semantic Scholar (S2) agent.
36
34
 
@@ -86,6 +84,7 @@ def get_app(
86
84
  config_name="config", overrides=["agents/talk2scholars/s2_agent=default"]
87
85
  )
88
86
  cfg = cfg.agents.talk2scholars.s2_agent
87
+ logger.log(logging.INFO, "Loaded configuration for S2 agent")
89
88
 
90
89
  # Define the tools
91
90
  tools = ToolNode(
@@ -107,7 +106,7 @@ def get_app(
107
106
  llm_model,
108
107
  tools=tools,
109
108
  state_schema=Talk2Scholars,
110
- state_modifier=cfg.s2_agent,
109
+ prompt=cfg.s2_agent,
111
110
  checkpointer=MemorySaver(),
112
111
  )
113
112
 
@@ -122,7 +121,12 @@ def get_app(
122
121
  # This compiles it into a LangChain Runnable,
123
122
  # meaning you can use it as you would any other runnable.
124
123
  # Note that we're (optionally) passing the memory when compiling the graph
125
- app = workflow.compile(checkpointer=checkpointer)
126
- logger.log(logging.INFO, "Compiled the graph")
124
+ app = workflow.compile(checkpointer=checkpointer, name="agent_s2")
125
+ logger.log(
126
+ logging.INFO,
127
+ "Compiled the graph with thread_id %s and llm_model %s",
128
+ uniq_id,
129
+ llm_model,
130
+ )
127
131
 
128
132
  return app
@@ -14,6 +14,7 @@ from langgraph.prebuilt import create_react_agent, ToolNode
14
14
  from langgraph.checkpoint.memory import MemorySaver
15
15
  from ..state.state_talk2scholars import Talk2Scholars
16
16
  from ..tools.zotero.zotero_read import zotero_search_tool
17
+ from ..tools.zotero.zotero_write import zotero_save_tool
17
18
  from ..tools.s2.display_results import display_results as s2_display
18
19
  from ..tools.s2.query_results import query_results as s2_query_results
19
20
  from ..tools.s2.retrieve_semantic_scholar_paper_id import (
@@ -25,9 +26,7 @@ logging.basicConfig(level=logging.INFO)
25
26
  logger = logging.getLogger(__name__)
26
27
 
27
28
 
28
- def get_app(
29
- uniq_id, llm_model: BaseChatModel
30
- ):
29
+ def get_app(uniq_id, llm_model: BaseChatModel):
31
30
  """
32
31
  Initializes and returns the LangGraph application for the Zotero agent.
33
32
 
@@ -83,6 +82,7 @@ def get_app(
83
82
  overrides=["agents/talk2scholars/zotero_agent=default"],
84
83
  )
85
84
  cfg = cfg.agents.talk2scholars.zotero_agent
85
+ logger.log(logging.INFO, "Loaded configuration for Zotero agent")
86
86
 
87
87
  # Define the tools
88
88
  tools = ToolNode(
@@ -91,6 +91,7 @@ def get_app(
91
91
  s2_display,
92
92
  s2_query_results,
93
93
  retrieve_semantic_scholar_paper_id,
94
+ zotero_save_tool,
94
95
  ]
95
96
  )
96
97
 
@@ -102,7 +103,7 @@ def get_app(
102
103
  llm_model,
103
104
  tools=tools,
104
105
  state_schema=Talk2Scholars,
105
- state_modifier=cfg.zotero_agent,
106
+ prompt=cfg.zotero_agent,
106
107
  checkpointer=MemorySaver(),
107
108
  )
108
109
 
@@ -114,7 +115,12 @@ def get_app(
114
115
  checkpointer = MemorySaver()
115
116
 
116
117
  # Compile the graph
117
- app = workflow.compile(checkpointer=checkpointer)
118
- logger.log(logging.INFO, "Compiled the graph")
118
+ app = workflow.compile(checkpointer=checkpointer, name="agent_zotero")
119
+ logger.log(
120
+ logging.INFO,
121
+ "Compiled the graph with thread_id %s and llm_model %s",
122
+ uniq_id,
123
+ llm_model,
124
+ )
119
125
 
120
126
  return app
@@ -0,0 +1,13 @@
1
+ _target_: agents.main_agent.get_app
2
+ temperature: 0
3
+ system_prompt: >
4
+ You are the Talk2Scholars agent coordinating academic paper discovery and analysis.
5
+
6
+ You have access to the following agents:
7
+ 1. S2_agent: This agent can be used to search and recommend papers
8
+ from Semantic Scholar. Use this agent when the user asks for
9
+ general paper searches and recommendations.
10
+ 2. Zotero_agent: This agent can be used to retrieve, display, and query
11
+ papers from the Zotero library. Use this agent only when the user
12
+ explicitly asks for papers from Zotero. This tool can also be used to
13
+ save papers in under collections in the zotero library
@@ -0,0 +1,19 @@
1
+ _target_: agents.s2_agent.get_app
2
+ s2_agent: >
3
+ You are an academic research assistant with access to the
4
+ Semantic Scholar API for paper discovery and analysis.
5
+
6
+ AVAILABLE TOOLS:
7
+ 1. search - Search for academic papers by query string
8
+ 2. display_results - Display the papers retrieved by other tools
9
+ 3. single_paper_rec - Get recommendations based on a SINGLE paper
10
+ 4. multi_paper_rec - Get recommendations based on MULTIPLE papers
11
+ 5. query_results - Ask questions about the current set of papers
12
+ 6. retrieve_semantic_scholar_paper_id - Get Semantic Scholar ID for a paper title
13
+
14
+ WORKFLOW STEPS:
15
+ 1. When user requests papers, use search/recommendation tools to find papers
16
+ 2. Use `display_results` tool to display the response from the search/recommendation tools
17
+ 3. Use `query_results` tool to query over the selected paper only when the user asks to
18
+ 4. When the user wants recommendations, you can get the "paper_id" using `query_results` tool in the "last_displayed_results" key, then
19
+ pass the "paper_id" to `search`, `single_paper_rec` or `multi_paper_rec` tools depending on the user's query. Do not use "arxiv_id"
@@ -0,0 +1,19 @@
1
+ target: agents.zotero_agent.get_app
2
+ zotero_agent: >
3
+ You are a specialized Zotero library agent with access to tools for paper retrieval and management.
4
+
5
+ AVAILABLE TOOLS:
6
+ 1. zotero_search_tool - Search and retrieve papers from Zotero library
7
+ 2. display_results - Display the papers retrieved by other tools
8
+ 3. query_results - Ask questions about the current set of papers
9
+ 4. retrieve_semantic_scholar_paper_id - Get Semantic Scholar ID for a paper title for the papers from zotero library
10
+ 5. zotero_write - Save paper to users zotero library under specfied collections
11
+
12
+
13
+ WORKFLOW STEPS
14
+ 1. When user requests papers, use `zotero_search_tool` to find papers
15
+ 2. Use `display_results` tool to display the response
16
+ 3. Use `query_results` tool to query over the selected paper only when the user asks to
17
+ 4. Use `retrieve_semantic_scholar_paper_id` to get the semantic scholar id of a paper title for the papers from zotero library
18
+ 5. Use `zotero_write` to save the papers to users zotero library under collections and call `display_results` only after you recive
19
+ the save was successfull
@@ -2,12 +2,15 @@ defaults:
2
2
  - _self_
3
3
  - agents/talk2scholars/main_agent: default
4
4
  - agents/talk2scholars/s2_agent: default
5
+ - agents/talk2scholars/paper_download_agent: default
5
6
  - agents/talk2scholars/zotero_agent: default
6
7
  - app/frontend: default
7
8
  - agents/talk2scholars/pdf_agent: default
8
9
  - tools/search: default
10
+ - tools/download_arxiv_paper: default
9
11
  - tools/single_paper_recommendation: default
10
12
  - tools/multi_paper_recommendation: default
11
13
  - tools/retrieve_semantic_scholar_paper_id: default
12
14
  - tools/question_and_answer: default
13
15
  - tools/zotero_read: default
16
+ - tools/zotero_write: default
@@ -7,3 +7,4 @@ from . import single_paper_recommendation
7
7
  from . import multi_paper_recommendation
8
8
  from . import question_and_answer
9
9
  from . import zotero_read
10
+ from . import zotero_write
@@ -9,8 +9,8 @@ api_fields:
9
9
  - "authors"
10
10
  - "citationCount"
11
11
  - "url"
12
+ - "externalIds"
12
13
  # Commented fields that could be added later if needed
13
- # - "externalIds"
14
14
 
15
15
  # Default headers and params
16
16
  headers:
@@ -9,8 +9,8 @@ api_fields:
9
9
  - "authors"
10
10
  - "citationCount"
11
11
  - "url"
12
+ - "externalIds"
12
13
  # Commented fields that could be added later if needed
13
- # - "externalIds"
14
14
  # - "publicationTypes"
15
15
  # - "openAccessPdf"
16
16
 
@@ -0,0 +1,3 @@
1
+ """
2
+ Import all the modules in the package
3
+ """
@@ -9,8 +9,8 @@ api_fields:
9
9
  - "authors"
10
10
  - "citationCount"
11
11
  - "url"
12
+ - "externalIds"
12
13
  # Commented fields that could be added later if needed
13
- # - "externalIds"
14
14
  # - "publicationTypes"
15
15
  # - "openAccessPdf"
16
16
 
@@ -0,0 +1,3 @@
1
+ """
2
+ Import all the modules in the package
3
+ """
@@ -0,0 +1,56 @@
1
+ # Default configuration for Zotero search tool
2
+ library_type: "user" # Type of library ('user' or 'group')
3
+ default_limit: 2
4
+ request_timeout: 10
5
+ user_id: ${oc.env:ZOTERO_USER_ID} # Load from environment variable
6
+ api_key: ${oc.env:ZOTERO_API_KEY} # Load from environment variable
7
+
8
+ # Default search parameters
9
+ search_params:
10
+ limit: ${.default_limit}
11
+
12
+ # Item Types and Limit
13
+ zotero:
14
+ max_limit: 100
15
+ filter_item_types:
16
+ [
17
+ "Artwork",
18
+ "Audio Recording",
19
+ "Bill",
20
+ "Blog Post",
21
+ "Book",
22
+ "Book Section",
23
+ "Case",
24
+ "Conference Paper",
25
+ "Dataset",
26
+ "Dictionary Entry",
27
+ "Document",
28
+ "E-mail",
29
+ "Encyclopedia Article",
30
+ "Film",
31
+ "Forum Post",
32
+ "Hearing",
33
+ "Instant Message",
34
+ "Interview",
35
+ "Journal Article",
36
+ "Letter",
37
+ "Magazine Article",
38
+ "Manuscript",
39
+ "Map",
40
+ "Newspaper Article",
41
+ "Patent",
42
+ "Podcast",
43
+ "Preprint",
44
+ "Presentation",
45
+ "Radio Broadcast",
46
+ "Report",
47
+ "Software",
48
+ "Standard",
49
+ "Statute",
50
+ "Thesis",
51
+ "TV Broadcast",
52
+ "Video Recording",
53
+ "Web Page",
54
+ ]
55
+
56
+ filter_excluded_types: ["attachment", "note", "annotation"]
@@ -0,0 +1,3 @@
1
+ """
2
+ Import all the modules in the package
3
+ """
@@ -63,3 +63,4 @@ class Talk2Scholars(AgentState):
63
63
  pdf_data: Annotated[Dict[str, Any], replace_dict]
64
64
  zotero_read: Annotated[Dict[str, Any], replace_dict]
65
65
  llm_model: BaseChatModel
66
+ pdf_data: Annotated[Dict[str, Any], replace_dict]