|
|
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) |