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