Spaces:
Running
Running
| # Tools API Reference | |
| This page documents the API for DeepCritical search tools. | |
| ## SearchTool Protocol | |
| All tools implement the `SearchTool` protocol: | |
| ```python | |
| class SearchTool(Protocol): | |
| @property | |
| def name(self) -> str: ... | |
| async def search( | |
| self, | |
| query: str, | |
| max_results: int = 10 | |
| ) -> list[Evidence]: ... | |
| ``` | |
| ## PubMedTool | |
| **Module**: `src.tools.pubmed` | |
| **Purpose**: Search peer-reviewed biomedical literature from PubMed. | |
| ### Properties | |
| #### `name` | |
| ```python | |
| @property | |
| def name(self) -> str | |
| ``` | |
| Returns tool name: `"pubmed"` | |
| ### Methods | |
| #### `search` | |
| ```python | |
| async def search( | |
| self, | |
| query: str, | |
| max_results: int = 10 | |
| ) -> list[Evidence] | |
| ``` | |
| Searches PubMed for articles. | |
| **Parameters**: | |
| - `query`: Search query string | |
| - `max_results`: Maximum number of results to return (default: 10) | |
| **Returns**: List of `Evidence` objects with PubMed articles. | |
| **Raises**: | |
| - `SearchError`: If search fails | |
| - `RateLimitError`: If rate limit is exceeded | |
| ## ClinicalTrialsTool | |
| **Module**: `src.tools.clinicaltrials` | |
| **Purpose**: Search ClinicalTrials.gov for interventional studies. | |
| ### Properties | |
| #### `name` | |
| ```python | |
| @property | |
| def name(self) -> str | |
| ``` | |
| Returns tool name: `"clinicaltrials"` | |
| ### Methods | |
| #### `search` | |
| ```python | |
| async def search( | |
| self, | |
| query: str, | |
| max_results: int = 10 | |
| ) -> list[Evidence] | |
| ``` | |
| Searches ClinicalTrials.gov for trials. | |
| **Parameters**: | |
| - `query`: Search query string | |
| - `max_results`: Maximum number of results to return (default: 10) | |
| **Returns**: List of `Evidence` objects with clinical trials. | |
| **Note**: Only returns interventional studies with status: COMPLETED, ACTIVE_NOT_RECRUITING, RECRUITING, ENROLLING_BY_INVITATION | |
| **Raises**: | |
| - `SearchError`: If search fails | |
| ## EuropePMCTool | |
| **Module**: `src.tools.europepmc` | |
| **Purpose**: Search Europe PMC for preprints and peer-reviewed articles. | |
| ### Properties | |
| #### `name` | |
| ```python | |
| @property | |
| def name(self) -> str | |
| ``` | |
| Returns tool name: `"europepmc"` | |
| ### Methods | |
| #### `search` | |
| ```python | |
| async def search( | |
| self, | |
| query: str, | |
| max_results: int = 10 | |
| ) -> list[Evidence] | |
| ``` | |
| Searches Europe PMC for articles and preprints. | |
| **Parameters**: | |
| - `query`: Search query string | |
| - `max_results`: Maximum number of results to return (default: 10) | |
| **Returns**: List of `Evidence` objects with articles/preprints. | |
| **Note**: Includes both preprints (marked with `[PREPRINT - Not peer-reviewed]`) and peer-reviewed articles. | |
| **Raises**: | |
| - `SearchError`: If search fails | |
| ## RAGTool | |
| **Module**: `src.tools.rag_tool` | |
| **Purpose**: Semantic search within collected evidence. | |
| ### Properties | |
| #### `name` | |
| ```python | |
| @property | |
| def name(self) -> str | |
| ``` | |
| Returns tool name: `"rag"` | |
| ### Methods | |
| #### `search` | |
| ```python | |
| async def search( | |
| self, | |
| query: str, | |
| max_results: int = 10 | |
| ) -> list[Evidence] | |
| ``` | |
| Searches collected evidence using semantic similarity. | |
| **Parameters**: | |
| - `query`: Search query string | |
| - `max_results`: Maximum number of results to return (default: 10) | |
| **Returns**: List of `Evidence` objects from collected evidence. | |
| **Note**: Requires evidence to be ingested into RAG service first. | |
| ## SearchHandler | |
| **Module**: `src.tools.search_handler` | |
| **Purpose**: Orchestrates parallel searches across multiple tools. | |
| ### Methods | |
| #### `search` | |
| ```python | |
| async def search( | |
| self, | |
| query: str, | |
| tools: list[SearchTool] | None = None, | |
| max_results_per_tool: int = 10 | |
| ) -> SearchResult | |
| ``` | |
| Searches multiple tools in parallel. | |
| **Parameters**: | |
| - `query`: Search query string | |
| - `tools`: List of tools to use (default: all available tools) | |
| - `max_results_per_tool`: Maximum results per tool (default: 10) | |
| **Returns**: `SearchResult` with: | |
| - `evidence`: Aggregated list of evidence | |
| - `tool_results`: Results per tool | |
| - `total_count`: Total number of results | |
| **Note**: Uses `asyncio.gather()` for parallel execution. Handles tool failures gracefully. | |
| ## See Also | |
| - [Architecture - Tools](../architecture/tools.md) - Architecture overview | |
| - [Models API](models.md) - Data models used by tools | |