DeepCritical / docs /api /tools.md
Joseph Pollack
restore docs ci
b4ff56e
|
raw
history blame
4.12 kB
# 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