aiagents4pharma 1.45.1__py3-none-any.whl → 1.46.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +1 -0
- aiagents4pharma/talk2aiagents4pharma/tests/test_main_agent.py +144 -54
- aiagents4pharma/talk2biomodels/api/__init__.py +1 -1
- 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 +1 -0
- aiagents4pharma/talk2biomodels/tests/test_api.py +0 -30
- aiagents4pharma/talk2biomodels/tests/test_get_annotation.py +1 -1
- aiagents4pharma/talk2biomodels/tools/get_annotation.py +1 -10
- aiagents4pharma/talk2knowledgegraphs/configs/app/frontend/default.yaml +42 -26
- aiagents4pharma/talk2knowledgegraphs/configs/config.yaml +1 -0
- aiagents4pharma/talk2knowledgegraphs/configs/tools/multimodal_subgraph_extraction/default.yaml +4 -23
- aiagents4pharma/talk2knowledgegraphs/configs/utils/database/milvus/__init__.py +3 -0
- aiagents4pharma/talk2knowledgegraphs/configs/utils/database/milvus/default.yaml +61 -0
- aiagents4pharma/talk2knowledgegraphs/entrypoint.sh +1 -11
- aiagents4pharma/talk2knowledgegraphs/milvus_data_dump.py +11 -10
- aiagents4pharma/talk2knowledgegraphs/tests/test_agents_t2kg_agent.py +193 -73
- aiagents4pharma/talk2knowledgegraphs/tests/test_tools_milvus_multimodal_subgraph_extraction.py +1375 -667
- aiagents4pharma/talk2knowledgegraphs/tests/test_utils_database_milvus_connection_manager.py +812 -0
- aiagents4pharma/talk2knowledgegraphs/tests/test_utils_extractions_milvus_multimodal_pcst.py +723 -539
- aiagents4pharma/talk2knowledgegraphs/tools/milvus_multimodal_subgraph_extraction.py +474 -58
- aiagents4pharma/talk2knowledgegraphs/utils/database/__init__.py +5 -0
- aiagents4pharma/talk2knowledgegraphs/utils/database/milvus_connection_manager.py +586 -0
- aiagents4pharma/talk2knowledgegraphs/utils/extractions/milvus_multimodal_pcst.py +240 -8
- aiagents4pharma/talk2scholars/configs/app/frontend/default.yaml +67 -31
- {aiagents4pharma-1.45.1.dist-info → aiagents4pharma-1.46.1.dist-info}/METADATA +10 -1
- {aiagents4pharma-1.45.1.dist-info → aiagents4pharma-1.46.1.dist-info}/RECORD +33 -23
- aiagents4pharma/talk2biomodels/api/kegg.py +0 -87
- {aiagents4pharma-1.45.1.dist-info → aiagents4pharma-1.46.1.dist-info}/WHEEL +0 -0
- {aiagents4pharma-1.45.1.dist-info → aiagents4pharma-1.46.1.dist-info}/licenses/LICENSE +0 -0
@@ -2,8 +2,8 @@
|
|
2
2
|
Exctraction of multimodal subgraph using Prize-Collecting Steiner Tree (PCST) algorithm.
|
3
3
|
"""
|
4
4
|
|
5
|
+
import asyncio
|
5
6
|
import logging
|
6
|
-
import pickle
|
7
7
|
import platform
|
8
8
|
import subprocess
|
9
9
|
from typing import NamedTuple
|
@@ -14,8 +14,8 @@ import pcst_fast
|
|
14
14
|
from pymilvus import Collection
|
15
15
|
|
16
16
|
try:
|
17
|
-
import cudf
|
18
|
-
import cupy as cp
|
17
|
+
import cudf # type: ignore
|
18
|
+
import cupy as cp # type: ignore
|
19
19
|
|
20
20
|
CUDF_AVAILABLE = True
|
21
21
|
except ImportError:
|
@@ -217,6 +217,110 @@ class MultimodalPCSTPruning(NamedTuple):
|
|
217
217
|
|
218
218
|
return colls
|
219
219
|
|
220
|
+
async def load_edge_index_async(self, cfg: dict, _connection_manager=None) -> np.ndarray:
|
221
|
+
"""
|
222
|
+
Load edge index using hybrid async/sync approach to avoid event loop issues.
|
223
|
+
|
224
|
+
This method queries the edges collection to get head_index and tail_index,
|
225
|
+
eliminating the need for pickle caching and reducing memory usage.
|
226
|
+
|
227
|
+
Args:
|
228
|
+
cfg: The configuration dictionary containing the Milvus setup.
|
229
|
+
_connection_manager: Unused parameter for interface compatibility.
|
230
|
+
|
231
|
+
Returns:
|
232
|
+
numpy.ndarray: Edge index array with shape [2, num_edges]
|
233
|
+
"""
|
234
|
+
logger.log(logging.INFO, "Loading edge index from Milvus collection (hybrid)")
|
235
|
+
|
236
|
+
def load_edges_sync():
|
237
|
+
"""Load edges synchronously to avoid event loop issues."""
|
238
|
+
|
239
|
+
collection_name = f"{cfg.milvus_db.database_name}_edges"
|
240
|
+
edges_collection = Collection(name=collection_name)
|
241
|
+
edges_collection.load()
|
242
|
+
|
243
|
+
# Query all edges in batches
|
244
|
+
batch_size = getattr(cfg.milvus_db, "query_batch_size", 10000)
|
245
|
+
total_entities = edges_collection.num_entities
|
246
|
+
logger.log(logging.INFO, "Total edges to process: %d", total_entities)
|
247
|
+
|
248
|
+
head_list = []
|
249
|
+
tail_list = []
|
250
|
+
|
251
|
+
for start in range(0, total_entities, batch_size):
|
252
|
+
end = min(start + batch_size, total_entities)
|
253
|
+
logger.debug("Processing edge batch: %d to %d", start, end)
|
254
|
+
|
255
|
+
batch = edges_collection.query(
|
256
|
+
expr=f"triplet_index >= {start} and triplet_index < {end}",
|
257
|
+
output_fields=["head_index", "tail_index"],
|
258
|
+
)
|
259
|
+
|
260
|
+
head_list.extend([r["head_index"] for r in batch])
|
261
|
+
tail_list.extend([r["tail_index"] for r in batch])
|
262
|
+
|
263
|
+
# Convert to numpy array format expected by PCST
|
264
|
+
edge_index = self.loader.py.array([head_list, tail_list])
|
265
|
+
logger.log(
|
266
|
+
logging.INFO,
|
267
|
+
"Edge index loaded (hybrid): shape %s",
|
268
|
+
str(edge_index.shape),
|
269
|
+
)
|
270
|
+
|
271
|
+
return edge_index
|
272
|
+
|
273
|
+
# Run in thread to avoid event loop conflicts
|
274
|
+
return await asyncio.to_thread(load_edges_sync)
|
275
|
+
|
276
|
+
def load_edge_index(self, cfg: dict) -> np.ndarray:
|
277
|
+
"""
|
278
|
+
Load edge index synchronously from Milvus collection.
|
279
|
+
|
280
|
+
This method queries the edges collection to get head_index and tail_index.
|
281
|
+
|
282
|
+
Args:
|
283
|
+
cfg: The configuration dictionary containing the Milvus setup.
|
284
|
+
|
285
|
+
Returns:
|
286
|
+
numpy.ndarray: Edge index array with shape [2, num_edges]
|
287
|
+
"""
|
288
|
+
logger.log(logging.INFO, "Loading edge index from Milvus collection (sync)")
|
289
|
+
|
290
|
+
collection_name = f"{cfg.milvus_db.database_name}_edges"
|
291
|
+
edges_collection = Collection(name=collection_name)
|
292
|
+
edges_collection.load()
|
293
|
+
|
294
|
+
# Query all edges in batches
|
295
|
+
batch_size = getattr(cfg.milvus_db, "query_batch_size", 10000)
|
296
|
+
total_entities = edges_collection.num_entities
|
297
|
+
logger.log(logging.INFO, "Total edges to process: %d", total_entities)
|
298
|
+
|
299
|
+
head_list = []
|
300
|
+
tail_list = []
|
301
|
+
|
302
|
+
for start in range(0, total_entities, batch_size):
|
303
|
+
end = min(start + batch_size, total_entities)
|
304
|
+
logger.debug("Processing edge batch: %d to %d", start, end)
|
305
|
+
|
306
|
+
batch = edges_collection.query(
|
307
|
+
expr=f"triplet_index >= {start} and triplet_index < {end}",
|
308
|
+
output_fields=["head_index", "tail_index"],
|
309
|
+
)
|
310
|
+
|
311
|
+
head_list.extend([r["head_index"] for r in batch])
|
312
|
+
tail_list.extend([r["tail_index"] for r in batch])
|
313
|
+
|
314
|
+
# Convert to numpy array format expected by PCST
|
315
|
+
edge_index = self.loader.py.array([head_list, tail_list])
|
316
|
+
logger.log(
|
317
|
+
logging.INFO,
|
318
|
+
"Edge index loaded (sync): shape %s",
|
319
|
+
str(edge_index.shape),
|
320
|
+
)
|
321
|
+
|
322
|
+
return edge_index
|
323
|
+
|
220
324
|
def _compute_node_prizes(self, query_emb: list, colls: dict) -> dict:
|
221
325
|
"""
|
222
326
|
Compute the node prizes based on the similarity between the query and nodes.
|
@@ -263,6 +367,56 @@ class MultimodalPCSTPruning(NamedTuple):
|
|
263
367
|
|
264
368
|
return n_prizes
|
265
369
|
|
370
|
+
async def _compute_node_prizes_async(
|
371
|
+
self,
|
372
|
+
query_emb: list,
|
373
|
+
collection_name: str,
|
374
|
+
connection_manager,
|
375
|
+
use_description: bool = False,
|
376
|
+
) -> dict:
|
377
|
+
"""
|
378
|
+
Compute the node prizes asynchronously using connection manager.
|
379
|
+
|
380
|
+
Args:
|
381
|
+
query_emb: The query embedding
|
382
|
+
collection_name: Name of the collection to search
|
383
|
+
connection_manager: The MilvusConnectionManager instance
|
384
|
+
use_description: Whether to use description embeddings
|
385
|
+
|
386
|
+
Returns:
|
387
|
+
The prizes of the nodes
|
388
|
+
"""
|
389
|
+
# Get collection stats for initialization
|
390
|
+
stats = await connection_manager.async_get_collection_stats(collection_name)
|
391
|
+
num_entities = stats["num_entities"]
|
392
|
+
|
393
|
+
# Initialize prizes array
|
394
|
+
topk = min(self.topk, num_entities)
|
395
|
+
n_prizes = self.loader.py.zeros(num_entities, dtype=self.loader.py.float32)
|
396
|
+
|
397
|
+
# Get the actual metric type to use
|
398
|
+
actual_metric_type = self.metric_type or self.loader.metric_type
|
399
|
+
|
400
|
+
# Determine search field based on use_description
|
401
|
+
anns_field = "desc_emb" if use_description else "feat_emb"
|
402
|
+
|
403
|
+
# Perform async search
|
404
|
+
results = await connection_manager.async_search(
|
405
|
+
collection_name=collection_name,
|
406
|
+
data=[query_emb],
|
407
|
+
anns_field=anns_field,
|
408
|
+
param={"metric_type": actual_metric_type},
|
409
|
+
limit=topk,
|
410
|
+
output_fields=["node_id"],
|
411
|
+
)
|
412
|
+
|
413
|
+
# Update the prizes based on the search results
|
414
|
+
if results and len(results) > 0:
|
415
|
+
result_ids = [hit["id"] for hit in results[0]]
|
416
|
+
n_prizes[result_ids] = self.loader.py.arange(topk, 0, -1).astype(self.loader.py.float32)
|
417
|
+
|
418
|
+
return n_prizes
|
419
|
+
|
266
420
|
def _compute_edge_prizes(self, text_emb: list, colls: dict):
|
267
421
|
"""
|
268
422
|
Compute the edge prizes based on the similarity between the query and edges.
|
@@ -305,6 +459,65 @@ class MultimodalPCSTPruning(NamedTuple):
|
|
305
459
|
|
306
460
|
return e_prizes
|
307
461
|
|
462
|
+
async def _compute_edge_prizes_async(
|
463
|
+
self, text_emb: list, collection_name: str, connection_manager
|
464
|
+
) -> dict:
|
465
|
+
"""
|
466
|
+
Compute the edge prizes asynchronously using connection manager.
|
467
|
+
|
468
|
+
Args:
|
469
|
+
text_emb: The textual description embedding
|
470
|
+
collection_name: Name of the edges collection
|
471
|
+
connection_manager: The MilvusConnectionManager instance
|
472
|
+
|
473
|
+
Returns:
|
474
|
+
The prizes of the edges
|
475
|
+
"""
|
476
|
+
# Get collection stats for initialization
|
477
|
+
stats = await connection_manager.async_get_collection_stats(collection_name)
|
478
|
+
num_entities = stats["num_entities"]
|
479
|
+
|
480
|
+
# Initialize prizes array
|
481
|
+
topk_e = min(self.topk_e, num_entities)
|
482
|
+
e_prizes = self.loader.py.zeros(num_entities, dtype=self.loader.py.float32)
|
483
|
+
|
484
|
+
# Get the actual metric type to use
|
485
|
+
actual_metric_type = self.metric_type or self.loader.metric_type
|
486
|
+
|
487
|
+
# Perform async search
|
488
|
+
results = await connection_manager.async_search(
|
489
|
+
collection_name=collection_name,
|
490
|
+
data=[text_emb],
|
491
|
+
anns_field="feat_emb",
|
492
|
+
param={"metric_type": actual_metric_type},
|
493
|
+
limit=topk_e,
|
494
|
+
output_fields=["head_id", "tail_id"],
|
495
|
+
)
|
496
|
+
|
497
|
+
# Update the prizes based on the search results
|
498
|
+
if results and len(results) > 0:
|
499
|
+
result_ids = [hit["id"] for hit in results[0]]
|
500
|
+
result_scores = [hit["distance"] for hit in results[0]] # Use distance/score
|
501
|
+
e_prizes[result_ids] = result_scores
|
502
|
+
|
503
|
+
# Process edge prizes using helper method
|
504
|
+
return self._process_edge_prizes(e_prizes, topk_e)
|
505
|
+
|
506
|
+
def _process_edge_prizes(self, e_prizes, topk_e):
|
507
|
+
"""Helper method to process edge prizes and reduce complexity."""
|
508
|
+
unique_prizes, inverse_indices = self.loader.py.unique(e_prizes, return_inverse=True)
|
509
|
+
sorted_indices = self.loader.py.argsort(-unique_prizes)[:topk_e]
|
510
|
+
topk_e_values = unique_prizes[sorted_indices]
|
511
|
+
last_topk_e_value = topk_e
|
512
|
+
|
513
|
+
for k in range(topk_e):
|
514
|
+
indices = inverse_indices == (unique_prizes == topk_e_values[k]).nonzero()[0]
|
515
|
+
value = min((topk_e - k) / indices.sum().item(), last_topk_e_value)
|
516
|
+
e_prizes[indices] = value
|
517
|
+
last_topk_e_value = value * (1 - self.c_const)
|
518
|
+
|
519
|
+
return e_prizes
|
520
|
+
|
308
521
|
def compute_prizes(self, text_emb: list, query_emb: list, colls: dict) -> dict:
|
309
522
|
"""
|
310
523
|
Compute the node prizes based on the cosine similarity between the query and nodes,
|
@@ -331,6 +544,27 @@ class MultimodalPCSTPruning(NamedTuple):
|
|
331
544
|
|
332
545
|
return {"nodes": n_prizes, "edges": e_prizes}
|
333
546
|
|
547
|
+
async def compute_prizes_async(
|
548
|
+
self, text_emb: list, query_emb: list, cfg: dict, modality: str
|
549
|
+
) -> dict:
|
550
|
+
"""
|
551
|
+
Compute node and edge prizes asynchronously in parallel using sync fallback.
|
552
|
+
|
553
|
+
Args:
|
554
|
+
text_emb: The textual description embedding
|
555
|
+
query_emb: The query embedding
|
556
|
+
cfg: The configuration dictionary containing the Milvus setup
|
557
|
+
modality: The modality to use for the subgraph extraction
|
558
|
+
|
559
|
+
Returns:
|
560
|
+
The prizes of the nodes and edges
|
561
|
+
"""
|
562
|
+
logger.log(logging.INFO, "Computing prizes in parallel (hybrid async/sync)")
|
563
|
+
|
564
|
+
# Use existing sync method wrapped in asyncio.to_thread
|
565
|
+
colls = self.prepare_collections(cfg, modality)
|
566
|
+
return await asyncio.to_thread(self.compute_prizes, text_emb, query_emb, colls)
|
567
|
+
|
334
568
|
def compute_subgraph_costs(self, edge_index, num_nodes: int, prizes: dict):
|
335
569
|
"""
|
336
570
|
Compute the costs in constructing the subgraph proposed by G-Retriever paper.
|
@@ -481,11 +715,9 @@ class MultimodalPCSTPruning(NamedTuple):
|
|
481
715
|
logger.log(logging.INFO, "Preparing collections")
|
482
716
|
colls = self.prepare_collections(cfg, modality)
|
483
717
|
|
484
|
-
# Load
|
485
|
-
logger.log(logging.INFO, "Loading
|
486
|
-
|
487
|
-
edge_index = pickle.load(f)
|
488
|
-
edge_index = self.loader.py.array(edge_index)
|
718
|
+
# Load edge index directly from Milvus (replaces pickle cache)
|
719
|
+
logger.log(logging.INFO, "Loading edge index from Milvus")
|
720
|
+
edge_index = self.load_edge_index(cfg)
|
489
721
|
|
490
722
|
# Assert the topk and topk_e values for subgraph retrieval
|
491
723
|
assert self.topk > 0, "topk must be greater than or equal to 0"
|
@@ -1,36 +1,72 @@
|
|
1
|
+
_target_: app.frontend.streamlit_app_talk2scholars
|
2
|
+
default_user: "talk2scholars_user"
|
3
|
+
|
4
|
+
# File upload configuration
|
5
|
+
upload_data_dir: "../files"
|
6
|
+
pdf_allowed_file_types:
|
7
|
+
- "pdf"
|
8
|
+
|
9
|
+
# OpenAI configuration - can use custom base_url for enterprise/Azure deployments
|
10
|
+
openai_api_key: ${oc.env:OPENAI_API_KEY}
|
11
|
+
openai_base_url: ${oc.env:OPENAI_BASE_URL,null} # Optional: custom OpenAI endpoint
|
12
|
+
openai_llms:
|
13
|
+
- "OpenAI/gpt-4o-mini"
|
14
|
+
openai_embeddings:
|
15
|
+
- "text-embedding-ada-002"
|
16
|
+
- "text-embedding-3-small"
|
17
|
+
# Rate limiting and retry configuration
|
18
|
+
llm_max_retries: 5 # Number of retries on rate limit or transient errors
|
19
|
+
llm_timeout: 60 # Timeout in seconds for LLM requests
|
20
|
+
embedding_max_retries: 3 # Number of retries for embedding requests
|
21
|
+
embedding_timeout: 30 # Timeout in seconds for embedding requests
|
22
|
+
|
23
|
+
# NVIDIA configuration
|
24
|
+
nvidia_api_key: ${oc.env:NVIDIA_API_KEY}
|
25
|
+
nvidia_llms:
|
26
|
+
- "NVIDIA/llama-3.3-70b-instruct"
|
27
|
+
- "NVIDIA/llama-3.1-405b-instruct"
|
28
|
+
- "NVIDIA/llama-3.1-70b-instruct"
|
29
|
+
nvidia_embeddings:
|
30
|
+
- "NVIDIA/llama-3.2-nv-embedqa-1b-v2"
|
31
|
+
|
32
|
+
# Azure OpenAI configuration
|
33
|
+
azure_openai_endpoint: ${oc.env:AZURE_OPENAI_ENDPOINT,null} # Azure OpenAI endpoint
|
34
|
+
azure_openai_deployment: ${oc.env:AZURE_OPENAI_DEPLOYMENT,null} # Azure deployment name
|
35
|
+
azure_openai_api_version: ${oc.env:AZURE_OPENAI_API_VERSION,"2024-02-01"} # Azure API version
|
36
|
+
azure_openai_model_name: ${oc.env:AZURE_OPENAI_MODEL_NAME,null} # Model name for analytics
|
37
|
+
azure_openai_model_version: ${oc.env:AZURE_OPENAI_MODEL_VERSION,null} # Model version
|
38
|
+
# Azure AD authentication (uses AZURE_CLIENT_ID, AZURE_TENANT_ID, AZURE_CLIENT_SECRET)
|
39
|
+
azure_client_id: ${oc.env:AZURE_CLIENT_ID,null}
|
40
|
+
azure_tenant_id: ${oc.env:AZURE_TENANT_ID,null}
|
41
|
+
azure_client_secret: ${oc.env:AZURE_CLIENT_SECRET,null}
|
42
|
+
azure_openai_llms:
|
43
|
+
- "Azure/gpt-4o-mini" # Will map to Azure deployment
|
44
|
+
azure_openai_embeddings:
|
45
|
+
- "Azure/text-embedding-ada-002"
|
46
|
+
|
47
|
+
# Ollama configuration (for local deployment)
|
48
|
+
ollama_llms:
|
49
|
+
- "Ollama/llama3.1:8b"
|
50
|
+
ollama_embeddings:
|
51
|
+
- "nomic-embed-text"
|
52
|
+
|
53
|
+
# Default models
|
54
|
+
default_llm_provider: "openai"
|
55
|
+
default_embedding_model: "openai"
|
56
|
+
|
57
|
+
# App settings
|
58
|
+
temperature: 0.1
|
59
|
+
streaming: False
|
60
|
+
|
61
|
+
# Logo configuration
|
62
|
+
logo_paths:
|
63
|
+
container: "/app/docs/assets/VPE.png"
|
64
|
+
local: "docs/assets/VPE.png"
|
65
|
+
relative: "../../docs/assets/VPE.png"
|
66
|
+
logo_link: "https://github.com/VirtualPatientEngine"
|
67
|
+
|
1
68
|
# Page configuration
|
2
69
|
page:
|
3
70
|
title: "Talk2Scholars"
|
4
71
|
icon: "🤖"
|
5
72
|
layout: "wide"
|
6
|
-
|
7
|
-
# Available LLM models
|
8
|
-
llms:
|
9
|
-
available_models:
|
10
|
-
- "OpenAI/gpt-4o-mini"
|
11
|
-
- "NVIDIA/llama-3.3-70b-instruct"
|
12
|
-
# # Chat UI configuration
|
13
|
-
# chat:
|
14
|
-
# assistant_avatar: "🤖"
|
15
|
-
# user_avatar: "👩🏻💻"
|
16
|
-
# input_placeholder: "Say something ..."
|
17
|
-
# spinner_text: "Fetching response ..."
|
18
|
-
|
19
|
-
api_keys:
|
20
|
-
openai_key: "OPENAI_API_KEY"
|
21
|
-
nvidia_key: "NVIDIA_API_KEY"
|
22
|
-
# # Feedback configuration
|
23
|
-
# feedback:
|
24
|
-
# type: "thumbs"
|
25
|
-
# text_label: "[Optional] Please provide an explanation"
|
26
|
-
# success_message: "Your feedback is on its way to the developers. Thank you!"
|
27
|
-
# success_icon: "🚀"
|
28
|
-
|
29
|
-
# # Layout configuration
|
30
|
-
# layout:
|
31
|
-
# column_ratio: [3, 7] # Ratio for main_col1 and main_col2
|
32
|
-
# chat_container_height: 575
|
33
|
-
# sidebar_container_height: 500
|
34
|
-
#
|
35
|
-
# # Project name prefix
|
36
|
-
# project_name_prefix: "Talk2Scholars-"
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: aiagents4pharma
|
3
|
-
Version: 1.
|
3
|
+
Version: 1.46.1
|
4
4
|
Summary: AI Agents for drug discovery, drug development, and other pharmaceutical R&D.
|
5
5
|
License-File: LICENSE
|
6
6
|
Classifier: License :: OSI Approved :: MIT License
|
@@ -8,6 +8,7 @@ Classifier: Operating System :: OS Independent
|
|
8
8
|
Classifier: Programming Language :: Python :: 3
|
9
9
|
Requires-Python: >=3.12
|
10
10
|
Requires-Dist: anndata==0.11.3
|
11
|
+
Requires-Dist: azure-identity==1.24.0
|
11
12
|
Requires-Dist: beautifulsoup4==4.13.4
|
12
13
|
Requires-Dist: cell2sentence==1.1.0
|
13
14
|
Requires-Dist: cloudscraper==1.2.71
|
@@ -192,6 +193,14 @@ export LANGCHAIN_API_KEY=... # Optional for all agents
|
|
192
193
|
|
193
194
|
4. **Launch the app:**
|
194
195
|
|
196
|
+
> System Dependency: libmagic (for secure uploads)
|
197
|
+
> For accurate file MIME-type detection used by our secure upload validation, install the libmagic system library. This is recommended across all providers (OpenAI, Azure OpenAI, NVIDIA) because it runs locally in the Streamlit apps.
|
198
|
+
>
|
199
|
+
> - Linux (Debian/Ubuntu): `sudo apt-get install libmagic1`
|
200
|
+
> - macOS (Homebrew): `brew install libmagic`
|
201
|
+
> - Windows: Use the `python-magic`/`python-magic-bin` package; libmagic is bundled
|
202
|
+
> If libmagic is not available, the apps fall back to extension-based detection. For best security, keep libmagic installed.
|
203
|
+
|
195
204
|
**Option A: Using UV (recommended)**
|
196
205
|
|
197
206
|
```sh
|
@@ -7,9 +7,12 @@ aiagents4pharma/talk2aiagents4pharma/install.md,sha256=YYzY1vIEA6RrVUvNuv-h_YTar
|
|
7
7
|
aiagents4pharma/talk2aiagents4pharma/agents/__init__.py,sha256=NpNI6Vr9XIr5m0ZaO32c6NEUTDOZvJUqd8gKzNZhcSw,130
|
8
8
|
aiagents4pharma/talk2aiagents4pharma/agents/main_agent.py,sha256=1nRIhj3huv9eVT7v3nhSvx1dDOEEaiApPi7AMRDviXE,2750
|
9
9
|
aiagents4pharma/talk2aiagents4pharma/configs/__init__.py,sha256=hwLAR-uhZGEbD5R7mp4kiltSvxuKkG6-_ac17sF-4xU,68
|
10
|
-
aiagents4pharma/talk2aiagents4pharma/configs/config.yaml,sha256=
|
10
|
+
aiagents4pharma/talk2aiagents4pharma/configs/config.yaml,sha256=bJpU9_L88dOSqI6-BL3-X5tlR9eznXXNgXCi0qzPdEs,78
|
11
11
|
aiagents4pharma/talk2aiagents4pharma/configs/agents/__init__.py,sha256=8a9wAMF8zcfKYVZw-lQWsPsQtOPL_HQzu62F-EYekvw,72
|
12
12
|
aiagents4pharma/talk2aiagents4pharma/configs/agents/main_agent/default.yaml,sha256=jISv2CazHsK_OuQNgRG2uu3i9i2OeWm1Kxzh-2sPokU,2424
|
13
|
+
aiagents4pharma/talk2aiagents4pharma/configs/app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
14
|
+
aiagents4pharma/talk2aiagents4pharma/configs/app/frontend/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
15
|
+
aiagents4pharma/talk2aiagents4pharma/configs/app/frontend/default.yaml,sha256=BpDv_Bau0F7xDPzMHVYxedKpZQAPdo0rAsRnfH32-U8,3470
|
13
16
|
aiagents4pharma/talk2aiagents4pharma/docker-compose/cpu/.env.example,sha256=twsuiEN-FczXfka40_bVoSQXaMDR_3J3ESKCqU4qSkg,585
|
14
17
|
aiagents4pharma/talk2aiagents4pharma/docker-compose/cpu/docker-compose.yml,sha256=2I8jyzaFXSGsBMMFOZ4Hz7hAH3A-ELpoYCphkpT_8rA,2631
|
15
18
|
aiagents4pharma/talk2aiagents4pharma/docker-compose/gpu/.env.example,sha256=twsuiEN-FczXfka40_bVoSQXaMDR_3J3ESKCqU4qSkg,585
|
@@ -17,7 +20,7 @@ aiagents4pharma/talk2aiagents4pharma/docker-compose/gpu/docker-compose.yml,sha25
|
|
17
20
|
aiagents4pharma/talk2aiagents4pharma/states/__init__.py,sha256=VuVAFmoH8p2erE-mYiaa0uoqTuFynBcXia5Y8lmjI34,109
|
18
21
|
aiagents4pharma/talk2aiagents4pharma/states/state_talk2aiagents4pharma.py,sha256=ahquXi8hg6Bk1ttskl9QaYdHq4rDWa_bK7hu81E75M4,468
|
19
22
|
aiagents4pharma/talk2aiagents4pharma/tests/__init__.py,sha256=U3PsTiUZaUBD1IZanFGkDIOdFieDVJtGKQ5-woYUo8c,45
|
20
|
-
aiagents4pharma/talk2aiagents4pharma/tests/test_main_agent.py,sha256=
|
23
|
+
aiagents4pharma/talk2aiagents4pharma/tests/test_main_agent.py,sha256=oLRYlnkSBiD7trIUf-NZBTJDKX0X0JIK8hhMB9nMu9s,10945
|
21
24
|
aiagents4pharma/talk2biomodels/.dockerignore,sha256=-hAM7RzkGbjDeU411-kXOmYzNfl3Z9OlLWvN9zMDAXE,89
|
22
25
|
aiagents4pharma/talk2biomodels/Dockerfile,sha256=BXIqnV5HWHtCsS5dzvN-lL6S8wSzDmKawcIuyLscaqw,3537
|
23
26
|
aiagents4pharma/talk2biomodels/README.md,sha256=0eGxj7jxi_LrCvX-4I4KrQv-7T2ivo3pqLslG7suaCk,74
|
@@ -25,15 +28,17 @@ aiagents4pharma/talk2biomodels/__init__.py,sha256=DxARZJu91m4WHW4PBSZvlMb1MCbjvk
|
|
25
28
|
aiagents4pharma/talk2biomodels/install.md,sha256=9YAEeW_vG5hv7WiMnNEzgKQIgVyHnpk1IIWXg_jhLxE,1520
|
26
29
|
aiagents4pharma/talk2biomodels/agents/__init__.py,sha256=4wPy6hWRJksX6z8qX1cVjFctZLpsja8JMngKHqn49N4,129
|
27
30
|
aiagents4pharma/talk2biomodels/agents/t2b_agent.py,sha256=b_9pjnY3VGPRrzy-LCFrbJCkP1PT3M30NiQq6gbavaA,3267
|
28
|
-
aiagents4pharma/talk2biomodels/api/__init__.py,sha256=
|
29
|
-
aiagents4pharma/talk2biomodels/api/kegg.py,sha256=znaXYtw6HZe5XoX7wyl0hi1anHd2vzKRgVzt0HZ_TU0,2836
|
31
|
+
aiagents4pharma/talk2biomodels/api/__init__.py,sha256=KGok9mCa6RT8whDj3jT3kcpFO1yHxk5vVD8IExsI5Bc,92
|
30
32
|
aiagents4pharma/talk2biomodels/api/ols.py,sha256=QSvbsD0V07-w0OU-wPQ4EypXi9bn_xl0NyliZQxRvCU,2173
|
31
33
|
aiagents4pharma/talk2biomodels/api/uniprot.py,sha256=jXoyd7BhIQA9JNaGMVPzORpQ5k1Ix9iYYduMv6YG7hw,1147
|
32
34
|
aiagents4pharma/talk2biomodels/configs/__init__.py,sha256=WgGZbEtZiVR8EVJeH3iIJ6LxBGFafAjfCftptnTm2Ds,75
|
33
|
-
aiagents4pharma/talk2biomodels/configs/config.yaml,sha256=
|
35
|
+
aiagents4pharma/talk2biomodels/configs/config.yaml,sha256=9I9L99j2DxD3MzNX3Ch-x4Q38nsKzh33SrAqv6ftpnk,177
|
34
36
|
aiagents4pharma/talk2biomodels/configs/agents/__init__.py,sha256=6CfgJ15-smSZ4HP4uIlk3QgfVzzpDunBZOuqpuz9CIY,71
|
35
37
|
aiagents4pharma/talk2biomodels/configs/agents/t2b_agent/__init__.py,sha256=fqQQ-GlRcbzru2KmEk3oMma0R6_SzGM8dOXzYeU4oVA,46
|
36
38
|
aiagents4pharma/talk2biomodels/configs/agents/t2b_agent/default.yaml,sha256=oMC7OK3t1tMI2LLJHJcQQcteOoqO6gR12aKJWyZ08_E,535
|
39
|
+
aiagents4pharma/talk2biomodels/configs/app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
40
|
+
aiagents4pharma/talk2biomodels/configs/app/frontend/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
41
|
+
aiagents4pharma/talk2biomodels/configs/app/frontend/default.yaml,sha256=dAnLyA8pd02Ko9IURh3xeYTmbC4RK9j1kuZQJwUPqWQ,2478
|
37
42
|
aiagents4pharma/talk2biomodels/configs/tools/__init__.py,sha256=m3Kvvc0YNyJ2_uiLpBVJmEJvJ0WyoPrdokdR7TKQR5I,106
|
38
43
|
aiagents4pharma/talk2biomodels/configs/tools/ask_question/__init__.py,sha256=fqQQ-GlRcbzru2KmEk3oMma0R6_SzGM8dOXzYeU4oVA,46
|
39
44
|
aiagents4pharma/talk2biomodels/configs/tools/ask_question/default.yaml,sha256=9AlSgfb6XSFaH3N80BMQ-CcI_x-ZWfF-52QNgpdtlhE,1296
|
@@ -49,10 +54,10 @@ aiagents4pharma/talk2biomodels/states/state_talk2biomodels.py,sha256=kKtVBfSK92h
|
|
49
54
|
aiagents4pharma/talk2biomodels/tests/BIOMD0000000449_url.xml,sha256=RkWbstfLrT1mAfOtZf7JsBz6poyWg6-5G7H_IdVXEXg,72630
|
50
55
|
aiagents4pharma/talk2biomodels/tests/__init__.py,sha256=U3PsTiUZaUBD1IZanFGkDIOdFieDVJtGKQ5-woYUo8c,45
|
51
56
|
aiagents4pharma/talk2biomodels/tests/article_on_model_537.pdf,sha256=rfBnG9XSGRZodq-NQsouQQ3dvm4JKcrAqEkoAQJmuDc,470738
|
52
|
-
aiagents4pharma/talk2biomodels/tests/test_api.py,sha256=
|
57
|
+
aiagents4pharma/talk2biomodels/tests/test_api.py,sha256=rfH2_K2pC5fm3DcyKJSHOBcN6Mzz3D37oJEpFCE1Jek,970
|
53
58
|
aiagents4pharma/talk2biomodels/tests/test_ask_question.py,sha256=lMrFI5URqUEz0Cv3WOoj8vhR_ciwDOgoJlqh1dOdaik,1523
|
54
59
|
aiagents4pharma/talk2biomodels/tests/test_basico_model.py,sha256=F_1AbFRcXIDahQKcS-Nq0v45bEozLUOYx_oyyFN0hxw,2429
|
55
|
-
aiagents4pharma/talk2biomodels/tests/test_get_annotation.py,sha256=
|
60
|
+
aiagents4pharma/talk2biomodels/tests/test_get_annotation.py,sha256=L4fTQaY2rnkfHwfPSC6GdXD2T3NGTIqNoF2dRklBIQA,8173
|
56
61
|
aiagents4pharma/talk2biomodels/tests/test_getmodelinfo.py,sha256=PlVDIQZaZw8a94_Muw5GMa2Kop6foEBGhp3x-412cQA,3258
|
57
62
|
aiagents4pharma/talk2biomodels/tests/test_integration.py,sha256=t8jR45pX7hKBGOjXySQ-XG5wJpTt41jGba74T8zuIdI,4838
|
58
63
|
aiagents4pharma/talk2biomodels/tests/test_load_biomodel.py,sha256=8nVSDa8_z85dyvxa8aYGQR0YGZDtpzLF5HhBmifCk6w,895
|
@@ -65,7 +70,7 @@ aiagents4pharma/talk2biomodels/tests/test_sys_bio_model.py,sha256=poMxOsKhg8USnp
|
|
65
70
|
aiagents4pharma/talk2biomodels/tools/__init__.py,sha256=j6wTW09BOwFMzHERfJbsajctDsNxJDtWJHUE3FmTu-A,279
|
66
71
|
aiagents4pharma/talk2biomodels/tools/ask_question.py,sha256=IbolM6zbYKHd_UCfLMa8bawt9fJH59cCUtkLB_wtxKI,4495
|
67
72
|
aiagents4pharma/talk2biomodels/tools/custom_plotter.py,sha256=dk5HUmPwSTIRp2sbd8Q8__fwSE8m13UseonvcpyDs00,6636
|
68
|
-
aiagents4pharma/talk2biomodels/tools/get_annotation.py,sha256=
|
73
|
+
aiagents4pharma/talk2biomodels/tools/get_annotation.py,sha256=oHERHdY4KinQFg9udufEgJP3tE3x0gtoWWy4Kna9H78,12854
|
69
74
|
aiagents4pharma/talk2biomodels/tools/get_modelinfo.py,sha256=mVAqO2TRWIlD93ZsMggs2N3629sxHZWnOisW7r_yBU0,5987
|
70
75
|
aiagents4pharma/talk2biomodels/tools/load_arguments.py,sha256=LZQNkAikXhG0AKRnfLUqqpa5hNAyVGSwPQ4_nBu-DSw,4009
|
71
76
|
aiagents4pharma/talk2biomodels/tools/load_biomodel.py,sha256=025-E5qo2uiJVvHIhyeDh1tfmXTeIguSgS0KIY0LiyY,1208
|
@@ -90,27 +95,29 @@ aiagents4pharma/talk2knowledgegraphs/.dockerignore,sha256=-hAM7RzkGbjDeU411-kXOm
|
|
90
95
|
aiagents4pharma/talk2knowledgegraphs/Dockerfile,sha256=qGy6I4oBvQonpDEANQaCW-5JMtHPdd2HKc-JJgoCyYQ,3384
|
91
96
|
aiagents4pharma/talk2knowledgegraphs/README.md,sha256=0eGxj7jxi_LrCvX-4I4KrQv-7T2ivo3pqLslG7suaCk,74
|
92
97
|
aiagents4pharma/talk2knowledgegraphs/__init__.py,sha256=ZztaRzRlovSXtVX3i9Rvf84ivIjPn8RMPiYRkbkEJ0E,114
|
93
|
-
aiagents4pharma/talk2knowledgegraphs/entrypoint.sh,sha256=
|
98
|
+
aiagents4pharma/talk2knowledgegraphs/entrypoint.sh,sha256=EK_jGau1VuW1uTmFWZcKhLMK9VanC5l3q9axF4ZYgmI,5758
|
94
99
|
aiagents4pharma/talk2knowledgegraphs/install.md,sha256=6eZe9czZ8nRrsOHbRmn9WaAk9xgl2kxDZac4Exs1WqU,6022
|
95
|
-
aiagents4pharma/talk2knowledgegraphs/milvus_data_dump.py,sha256=
|
100
|
+
aiagents4pharma/talk2knowledgegraphs/milvus_data_dump.py,sha256=nLChVpn9KwJ2F5zgtb51zG2s81vOzc6o5Ut-xhkjpJI,35550
|
96
101
|
aiagents4pharma/talk2knowledgegraphs/agents/__init__.py,sha256=ugUvVYEdjbZ3y_dogfF5hpQ3lFPFrAvLSydlcpbkGo0,93
|
97
102
|
aiagents4pharma/talk2knowledgegraphs/agents/t2kg_agent.py,sha256=GDeSjJNhAqQWagZOxAWUKqDhzUohHViSsu444W9SzRQ,3240
|
98
103
|
aiagents4pharma/talk2knowledgegraphs/configs/__init__.py,sha256=H-yhTbJ_RXBLe3XSto5x6FmVrgbi7y1WKEfiwmKzLAk,87
|
99
|
-
aiagents4pharma/talk2knowledgegraphs/configs/config.yaml,sha256=
|
104
|
+
aiagents4pharma/talk2knowledgegraphs/configs/config.yaml,sha256=W-yjtavcqGE3hZdGwG5o1qDnvjEChQ-BjuU8Y2Salk8,453
|
100
105
|
aiagents4pharma/talk2knowledgegraphs/configs/agents/t2kg_agent/__init__.py,sha256=fqQQ-GlRcbzru2KmEk3oMma0R6_SzGM8dOXzYeU4oVA,46
|
101
106
|
aiagents4pharma/talk2knowledgegraphs/configs/agents/t2kg_agent/default.yaml,sha256=4NcNS8f9A6e9_8DcdYjC_Q5sjgmGA6GZFAwbsmEcPiA,4824
|
102
107
|
aiagents4pharma/talk2knowledgegraphs/configs/app/__init__.py,sha256=JoSZV6N669kGMv5zLDszwf0ZjcRHx9TJfIqGhIIdPXE,70
|
103
108
|
aiagents4pharma/talk2knowledgegraphs/configs/app/frontend/__init__.py,sha256=fqQQ-GlRcbzru2KmEk3oMma0R6_SzGM8dOXzYeU4oVA,46
|
104
|
-
aiagents4pharma/talk2knowledgegraphs/configs/app/frontend/default.yaml,sha256=
|
109
|
+
aiagents4pharma/talk2knowledgegraphs/configs/app/frontend/default.yaml,sha256=c5ufnM3rU5affg1s-JEkQ_8LUpnc6EwjIdLRNvQMBOA,3245
|
105
110
|
aiagents4pharma/talk2knowledgegraphs/configs/tools/__init__.py,sha256=lGyiRtLtwBn0pTa7AV2ZzjyVck2lVrVO3D9FQF22s7w,125
|
106
111
|
aiagents4pharma/talk2knowledgegraphs/configs/tools/graphrag_reasoning/__init__.py,sha256=fqQQ-GlRcbzru2KmEk3oMma0R6_SzGM8dOXzYeU4oVA,46
|
107
112
|
aiagents4pharma/talk2knowledgegraphs/configs/tools/graphrag_reasoning/default.yaml,sha256=bSEqSz70hd4gnCSNZ0vlmtF-X1NO4BaXo3CA6Kdcz1o,1038
|
108
113
|
aiagents4pharma/talk2knowledgegraphs/configs/tools/multimodal_subgraph_extraction/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
109
|
-
aiagents4pharma/talk2knowledgegraphs/configs/tools/multimodal_subgraph_extraction/default.yaml,sha256=
|
114
|
+
aiagents4pharma/talk2knowledgegraphs/configs/tools/multimodal_subgraph_extraction/default.yaml,sha256=pqR9bBQM3sW-V4bBlP7LFB2GpO2RhacHrXzGXmUL6fk,904
|
110
115
|
aiagents4pharma/talk2knowledgegraphs/configs/tools/subgraph_extraction/__init__.py,sha256=fqQQ-GlRcbzru2KmEk3oMma0R6_SzGM8dOXzYeU4oVA,46
|
111
116
|
aiagents4pharma/talk2knowledgegraphs/configs/tools/subgraph_extraction/default.yaml,sha256=r5T29xiWnBK2C1vfsSlNHDlB0DfTvReFbzQgZqqB5l4,1470
|
112
117
|
aiagents4pharma/talk2knowledgegraphs/configs/tools/subgraph_summarization/__init__.py,sha256=fqQQ-GlRcbzru2KmEk3oMma0R6_SzGM8dOXzYeU4oVA,46
|
113
118
|
aiagents4pharma/talk2knowledgegraphs/configs/tools/subgraph_summarization/default.yaml,sha256=kiHerHXsGuohu_FLq58nXkY3bwlSFMw3kGqtQ68LMfA,562
|
119
|
+
aiagents4pharma/talk2knowledgegraphs/configs/utils/database/milvus/__init__.py,sha256=fqQQ-GlRcbzru2KmEk3oMma0R6_SzGM8dOXzYeU4oVA,46
|
120
|
+
aiagents4pharma/talk2knowledgegraphs/configs/utils/database/milvus/default.yaml,sha256=4J6cIguIy4Z794UM9EHwzwzwrwWv7qvsKTN8c5QucLc,2394
|
114
121
|
aiagents4pharma/talk2knowledgegraphs/configs/utils/enrichments/ols_terms/default.yaml,sha256=7Fu03IkClglxbAzwTUdy-z-Tv6MZuo4oIdBYpQ7TPjI,107
|
115
122
|
aiagents4pharma/talk2knowledgegraphs/configs/utils/enrichments/reactome_pathways/default.yaml,sha256=gyYLJREMO1jDex8-0CcCPfsuD5KguY6fKDmDCL_S4Uc,125
|
116
123
|
aiagents4pharma/talk2knowledgegraphs/configs/utils/enrichments/uniprot_proteins/default.yaml,sha256=JlmawYim5ECgAKCZta3UrPD2YIjkD2d5TvLmR5V6wXM,184
|
@@ -127,16 +134,17 @@ aiagents4pharma/talk2knowledgegraphs/docker-compose/gpu/docker-compose.yml,sha25
|
|
127
134
|
aiagents4pharma/talk2knowledgegraphs/states/__init__.py,sha256=9X3zHxvtAJFQ0s0VLZ_-iBn4rMVfZWk5CQiWEKJkr0c,109
|
128
135
|
aiagents4pharma/talk2knowledgegraphs/states/state_talk2knowledgegraphs.py,sha256=QECNXd8IWDh3WlMvePcd2T6G5XqjOI9EkZdWmICcCT0,1088
|
129
136
|
aiagents4pharma/talk2knowledgegraphs/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
130
|
-
aiagents4pharma/talk2knowledgegraphs/tests/test_agents_t2kg_agent.py,sha256=
|
137
|
+
aiagents4pharma/talk2knowledgegraphs/tests/test_agents_t2kg_agent.py,sha256=1Y-W2uH3goFTKKB_MeVtrfdMwPy-WGnieawF4KQIjkM,11132
|
131
138
|
aiagents4pharma/talk2knowledgegraphs/tests/test_datasets_biobridge_primekg.py,sha256=AHUJ7StFYTBa8l4n_zYgyT0C9_G8j6NY3qHzLBhtkDg,9410
|
132
139
|
aiagents4pharma/talk2knowledgegraphs/tests/test_datasets_dataset.py,sha256=nBLMI1TzulCl1pj-svy_mstomSQ6BRumTiXV8lRV40o,570
|
133
140
|
aiagents4pharma/talk2knowledgegraphs/tests/test_datasets_primekg.py,sha256=csAR86I2RAxYG4Y0wpz-XLSBQf52x5gnhivvW_S17do,2329
|
134
141
|
aiagents4pharma/talk2knowledgegraphs/tests/test_datasets_starkqa_primekg.py,sha256=30hNjv2i8G7VmbU_LLTuwpAkYFuQQdhJguLX_JJ-0MA,4391
|
135
142
|
aiagents4pharma/talk2knowledgegraphs/tests/test_tools_graphrag_reasoning.py,sha256=Z2PIXBb_vV91BlC9x6a3YvQ8lvCtXnn1T28A8iwzKwM,11940
|
136
|
-
aiagents4pharma/talk2knowledgegraphs/tests/test_tools_milvus_multimodal_subgraph_extraction.py,sha256=
|
143
|
+
aiagents4pharma/talk2knowledgegraphs/tests/test_tools_milvus_multimodal_subgraph_extraction.py,sha256=U_b8tz7McoX2Vd0rZRkkl_UOmMtiiROvdZZGo59rMjY,52689
|
137
144
|
aiagents4pharma/talk2knowledgegraphs/tests/test_tools_multimodal_subgraph_extraction.py,sha256=fIfs1atTZAYdJArPO1SUYmikYXn8pBIzQ_f3qrAo4Yc,5851
|
138
145
|
aiagents4pharma/talk2knowledgegraphs/tests/test_tools_subgraph_extraction.py,sha256=zdhBkKj7Ygo-X5DSWSrLa-Xz-z8Va00NNekJXJjYl5Q,5428
|
139
146
|
aiagents4pharma/talk2knowledgegraphs/tests/test_tools_subgraph_summarization.py,sha256=dt_wi3bQUDd57HsoVl4_dIOy-EP_KZvvHxJcrdMvt_4,8907
|
147
|
+
aiagents4pharma/talk2knowledgegraphs/tests/test_utils_database_milvus_connection_manager.py,sha256=BaHFc5g7rLI3cMaHcgvTA8aI0lGmxZIUzLYyKN_QQtk,25028
|
140
148
|
aiagents4pharma/talk2knowledgegraphs/tests/test_utils_embeddings_embeddings.py,sha256=LXrztJ9ICAph-txBbXB2Dw1hPfSI2fYAdKq8CjqaOhA,1521
|
141
149
|
aiagents4pharma/talk2knowledgegraphs/tests/test_utils_embeddings_huggingface.py,sha256=C36Dn4ri4qABCY3Wh_amPxxKNTWVp5Xed9QsAAkNLhk,1628
|
142
150
|
aiagents4pharma/talk2knowledgegraphs/tests/test_utils_embeddings_nim_molmim.py,sha256=NZF5sP64Q-jV8E-gxtq1NZX6kq3NJcgV74jkcnyM7Jg,2055
|
@@ -148,19 +156,21 @@ aiagents4pharma/talk2knowledgegraphs/tests/test_utils_enrichments_ols.py,sha256=
|
|
148
156
|
aiagents4pharma/talk2knowledgegraphs/tests/test_utils_enrichments_pubchem.py,sha256=USHsjpfHxAktxjc5Q8INZ7qQJDWn_XFQYsS6mpeTLv0,1704
|
149
157
|
aiagents4pharma/talk2knowledgegraphs/tests/test_utils_enrichments_reactome.py,sha256=eseSw3flQLQAmXLS2R-bobN3QGEs_i6iId8l4bLEitE,1658
|
150
158
|
aiagents4pharma/talk2knowledgegraphs/tests/test_utils_enrichments_uniprot.py,sha256=8JqptVypftx4IrObzxGPDjQ1C7I24f3zUUx69D8svAo,1615
|
151
|
-
aiagents4pharma/talk2knowledgegraphs/tests/test_utils_extractions_milvus_multimodal_pcst.py,sha256=
|
159
|
+
aiagents4pharma/talk2knowledgegraphs/tests/test_utils_extractions_milvus_multimodal_pcst.py,sha256=vBc1nlAawIyp3NNp9P4JO1cu3uKIA_OiajXBNro-T_s,28591
|
152
160
|
aiagents4pharma/talk2knowledgegraphs/tests/test_utils_kg_utils.py,sha256=RDheTkkRxnGCxIoaTmTRKOQA2ewJyOOlKtgxdABgSSA,2397
|
153
161
|
aiagents4pharma/talk2knowledgegraphs/tests/test_utils_pubchem_utils.py,sha256=80PhbFXD287LeCwGpXGtPal5vkjqKKCACefR_BPdfbM,3967
|
154
162
|
aiagents4pharma/talk2knowledgegraphs/tools/__init__.py,sha256=unrqqDUAmfTpgiJSV65Pag9FWHpnf3eEsE8Cwh59NWI,242
|
155
163
|
aiagents4pharma/talk2knowledgegraphs/tools/graphrag_reasoning.py,sha256=cCPBH1tKs9MjX1q9v6BXi-dInz_gxKwMyIVA-XdKocg,5251
|
156
164
|
aiagents4pharma/talk2knowledgegraphs/tools/load_arguments.py,sha256=zhmsRp-8vjB5rRekqTA07d3yb-42HWqng9dDMkvK6hM,623
|
157
|
-
aiagents4pharma/talk2knowledgegraphs/tools/milvus_multimodal_subgraph_extraction.py,sha256=
|
165
|
+
aiagents4pharma/talk2knowledgegraphs/tools/milvus_multimodal_subgraph_extraction.py,sha256=chyHEOlbzLwPd8IXwgA4B2YMWbJAyBikBkf2-x_XH1E,39730
|
158
166
|
aiagents4pharma/talk2knowledgegraphs/tools/multimodal_subgraph_extraction.py,sha256=cAsRkBklFxitBDNvhOIqmqd0ZTjtRYKsgb-rySC0PTk,14774
|
159
167
|
aiagents4pharma/talk2knowledgegraphs/tools/subgraph_extraction.py,sha256=DSUucfzKf3LoOo1v9snp6-Zk1vTGB9jeH-hshatd0PY,11161
|
160
168
|
aiagents4pharma/talk2knowledgegraphs/tools/subgraph_summarization.py,sha256=mXuKTahLXXFYFMS-0HkmiP7o6MSLjE_REEEsxPwCF7c,4372
|
161
169
|
aiagents4pharma/talk2knowledgegraphs/utils/__init__.py,sha256=OwsMjDLRsVdHm6jS_oKbUP9tUKOwGt2yOjz5EgWCv_M,144
|
162
170
|
aiagents4pharma/talk2knowledgegraphs/utils/kg_utils.py,sha256=IeCekDG__hjvIBXk4geLLBzlrLJukVg2y8IZfXTosQ0,2188
|
163
171
|
aiagents4pharma/talk2knowledgegraphs/utils/pubchem_utils.py,sha256=PWjLdXbkdnQig95TkR4zqrhEULbQoGFIQMFK7HIMX8U,3378
|
172
|
+
aiagents4pharma/talk2knowledgegraphs/utils/database/__init__.py,sha256=KwsAQO484Ado7GUn0kvymVn5_71h0oxcAkbMxOf6MZQ,154
|
173
|
+
aiagents4pharma/talk2knowledgegraphs/utils/database/milvus_connection_manager.py,sha256=IW4FoTAYQvhln4_M8jcRfpXjb-WqaMw65cRe5vvqNOw,21083
|
164
174
|
aiagents4pharma/talk2knowledgegraphs/utils/embeddings/__init__.py,sha256=XWFU0_juBq-8oEP8oAgyGLMpowZ1VdgibwjYdc0I3y4,148
|
165
175
|
aiagents4pharma/talk2knowledgegraphs/utils/embeddings/embeddings.py,sha256=O11r9uKDKBjsgq9gGeKxoUR-HoBSVX6D16wci7eYW8s,2527
|
166
176
|
aiagents4pharma/talk2knowledgegraphs/utils/embeddings/huggingface.py,sha256=rDhksY0g8HfpWiJO1CeKGdvZJ-stFrZ9Q88CXlfXJCU,3724
|
@@ -175,7 +185,7 @@ aiagents4pharma/talk2knowledgegraphs/utils/enrichments/pubchem_strings.py,sha256
|
|
175
185
|
aiagents4pharma/talk2knowledgegraphs/utils/enrichments/reactome_pathways.py,sha256=8iyrT1p01GJpi7k7FCuwZBqn-hyueRWYxPqabM5U80Q,1990
|
176
186
|
aiagents4pharma/talk2knowledgegraphs/utils/enrichments/uniprot_proteins.py,sha256=0mTFX5sVgBZHkEuf057lCFNciTBapn9CqPi2-YublUg,3013
|
177
187
|
aiagents4pharma/talk2knowledgegraphs/utils/extractions/__init__.py,sha256=kgioLxc3ZPY46aXe36JMTo2OODchsLnzSzClpz-nwaU,128
|
178
|
-
aiagents4pharma/talk2knowledgegraphs/utils/extractions/milvus_multimodal_pcst.py,sha256=
|
188
|
+
aiagents4pharma/talk2knowledgegraphs/utils/extractions/milvus_multimodal_pcst.py,sha256=QZ_hJpeqre1YKKGTRr1fJpY1cb1y1Ldy8UcdxaTYyLU,30570
|
179
189
|
aiagents4pharma/talk2knowledgegraphs/utils/extractions/multimodal_pcst.py,sha256=GD2lsq3yiDf6n-pT9HbJiRd6o0DBgnv6lwq9RuC-zuU,12356
|
180
190
|
aiagents4pharma/talk2knowledgegraphs/utils/extractions/pcst.py,sha256=__IB_hPEQ-GyHAsz6FOmYUlXXmcB0T6J9wvMS2UNiko,9324
|
181
191
|
aiagents4pharma/talk2scholars/.dockerignore,sha256=-hAM7RzkGbjDeU411-kXOmYzNfl3Z9OlLWvN9zMDAXE,89
|
@@ -205,7 +215,7 @@ aiagents4pharma/talk2scholars/configs/agents/talk2scholars/zotero_agent/__init__
|
|
205
215
|
aiagents4pharma/talk2scholars/configs/agents/talk2scholars/zotero_agent/default.yaml,sha256=ymVGlho7BZTJlMxT3xMRUsMwd9qNT6ZR7KgB57DgvaY,1002
|
206
216
|
aiagents4pharma/talk2scholars/configs/app/__init__.py,sha256=tXpOW3R4eAfNoqvoaHfabSG-DcMHmUGSTg_4zH_vlgw,94
|
207
217
|
aiagents4pharma/talk2scholars/configs/app/frontend/__init__.py,sha256=fqQQ-GlRcbzru2KmEk3oMma0R6_SzGM8dOXzYeU4oVA,46
|
208
|
-
aiagents4pharma/talk2scholars/configs/app/frontend/default.yaml,sha256=
|
218
|
+
aiagents4pharma/talk2scholars/configs/app/frontend/default.yaml,sha256=Z2oZBqGkJBC_8M5jXCZwrBcJwbllRd5YnCiUtKZdOig,2445
|
209
219
|
aiagents4pharma/talk2scholars/configs/tools/__init__.py,sha256=TTLziqMoxBLU5yZpecgptfySKQJH82tc1K1G6iKzmKg,366
|
210
220
|
aiagents4pharma/talk2scholars/configs/tools/multi_paper_recommendation/__init__.py,sha256=fqQQ-GlRcbzru2KmEk3oMma0R6_SzGM8dOXzYeU4oVA,46
|
211
221
|
aiagents4pharma/talk2scholars/configs/tools/multi_paper_recommendation/default.yaml,sha256=comNgL9hRpH--IWuEsrN6hV5WdrJmh-ZsRh7hbryVhg,631
|
@@ -318,7 +328,7 @@ aiagents4pharma/talk2scholars/tools/zotero/utils/review_helper.py,sha256=-q-UuzP
|
|
318
328
|
aiagents4pharma/talk2scholars/tools/zotero/utils/write_helper.py,sha256=K1EatPfC-riGyFmkOAS3ReNBaGPY-znne1KqOnFahkI,7339
|
319
329
|
aiagents4pharma/talk2scholars/tools/zotero/utils/zotero_path.py,sha256=sKkfJu3u4LKSZjfoQRfeqz26IESHRwBtcSDzLMLlJMo,6311
|
320
330
|
aiagents4pharma/talk2scholars/tools/zotero/utils/zotero_pdf_downloader.py,sha256=DBrF5IiF7VRP58hUK8T9LST3lQWLFixLUfnpMSTccoQ,4614
|
321
|
-
aiagents4pharma-1.
|
322
|
-
aiagents4pharma-1.
|
323
|
-
aiagents4pharma-1.
|
324
|
-
aiagents4pharma-1.
|
331
|
+
aiagents4pharma-1.46.1.dist-info/METADATA,sha256=z8dEOeNUk6HxhM5WQfaFKsnkdrUo-OAbJwf3G8-4Yro,16928
|
332
|
+
aiagents4pharma-1.46.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
333
|
+
aiagents4pharma-1.46.1.dist-info/licenses/LICENSE,sha256=IcIbyB1Hyk5ZDah03VNQvJkbNk2hkBCDqQ8qtnCvB4Q,1077
|
334
|
+
aiagents4pharma-1.46.1.dist-info/RECORD,,
|