Source code for council.scorers.scorer_base
import abc
from typing import Any, Dict
from council.contexts import ChatMessage, Monitorable, ScorerContext
from .scorer_exception import ScorerException
[docs]
class ScorerBase(Monitorable, abc.ABC):
"""
Base class for implementing a Scorer
"""
def __init__(self) -> None:
super().__init__("scorer")
[docs]
def score(self, context: ScorerContext, message: ChatMessage) -> float:
"""
Score the given message
Parameters:
context (ScorerContext): the context for scoring
message (ChatMessage): the message to be scored
Returns:
similarity score. The greater the value to higher the similarity
Raises:
ScorerException: an unexpected error occurs
"""
try:
return self._score(context, message)
except Exception as e:
context.logger.exception('message="execution failed"')
raise ScorerException from e
[docs]
@abc.abstractmethod
def _score(self, context: ScorerContext, message: ChatMessage) -> float:
"""
To be implemented with in derived classes with actual scoring logic
"""
pass
[docs]
def to_dict(self) -> Dict[str, Any]:
"""
Serialize the instance into a dictionary. May need to be overridden in derived classes
"""
return {"type": self.__class__.__name__}