| from abc import ABC, abstractmethod |
| from typing import Union, Optional, Dict |
|
|
| from evoagentx.rag.schema import Query |
|
|
|
|
| class BaseQueryTransform(ABC): |
|
|
| @abstractmethod |
| def _run(self, query: Query, metadata: Dict) -> Query: |
| """The Main run logic for Transform""" |
| |
| def run( |
| self, |
| query_or_str: Union[str, Query], |
| metadata: Optional[Dict] = None, |
| ) -> Query: |
| """Run query transform.""" |
| metadata = metadata or {} |
| if isinstance(query_or_str, str): |
| query = Query( |
| query_str=query_or_str, |
| custom_embedding_strs=[query_or_str], |
| ) |
| else: |
| query = query_or_str |
|
|
| return self._run(query, metadata=metadata) |
|
|
| def __call__( |
| self, |
| query_bundle_or_str: Union[str, Query], |
| metadata: Optional[Dict] = None, |
| ) -> Query: |
| """Run query processor.""" |
| return self.run(query_bundle_or_str, metadata=metadata) |