Newer
Older
from pydantic import BaseModel
from pydantic.dataclasses import dataclass
from semantic_router.retrievers import (
BaseRetriever,
CohereRetriever,
OpenAIRetriever,
)
class Decision(BaseModel):
name: str
utterances: list[str]
description: str | None = None
class RetrieverType(Enum):
HUGGINGFACE = "huggingface"
OPENAI = "openai"
COHERE = "cohere"
class Retriever:
type: RetrieverType
model: BaseRetriever
self.type = RetrieverType(type)
if self.type == RetrieverType.HUGGINGFACE:
elif self.type == RetrieverType.OPENAI:
self.model = OpenAIRetriever(name)
elif self.type == RetrieverType.COHERE:
self.model = CohereRetriever(name)
def __call__(self, texts: list[str]) -> list[float]:
return self.model(texts)
@dataclass
class SemanticSpace:
id: str
decisions: list[Decision]
encoder: str = ""
def __init__(self, decisions: list[Decision] = []):
self.id = ""
self.decisions = decisions
def add(self, decision: Decision):