Newer
Older
from pydantic.v1 import BaseModel
from pydantic.v1.dataclasses import dataclass
from semantic_router.encoders import (
BaseEncoder,
CohereEncoder,
OpenAIEncoder,
class RouteChoice(BaseModel):
name: Optional[str] = None
function_call: Optional[dict] = None
def __init__(self, type: str, name: Optional[str]):
elif self.type == EncoderType.FASTEMBED:
elif self.type == EncoderType.MISTRAL:
self.model = MistralEncoder(name=name)
def __call__(self, texts: List[str]) -> List[List[float]]:
class Message(BaseModel):
role: str
content: str
if self.role.lower() not in ["user", "assistant", "system"]:
raise ValueError("Role must be either 'user', 'assistant' or 'system'")
return {"role": self.role, "content": self.content}
def to_llamacpp(self):
return {"role": self.role, "content": self.content}
def to_mistral(self):
return {"role": self.role, "content": self.content}
def __str__(self):
return f"{self.role}: {self.content}"
class DocumentSplit(BaseModel):
triggered_score: Optional[float] = None
token_count: Optional[int] = None
metadata: Optional[dict] = None
@property
def content(self) -> str:
return " ".join(self.docs)