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