From 787212bae0ddbd8ab05938583a92fde40b6b8c73 Mon Sep 17 00:00:00 2001 From: Siddhesh Agarwal Date: Tue, 29 Oct 2024 11:38:36 +0530 Subject: [PATCH] improved BaseProvider --- simplemind/models.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/simplemind/models.py b/simplemind/models.py index 397e773..9ff1c44 100644 --- a/simplemind/models.py +++ b/simplemind/models.py @@ -1,3 +1,4 @@ +from abc import ABC, abstractmethod import uuid from datetime import datetime from typing import Any, Dict, List, Literal, Optional @@ -17,31 +18,36 @@ class SMBaseModel(BaseModel): return str(self) -class BaseProvider(SMBaseModel): +class BaseProvider(SMBaseModel, ABC): """The base provider class.""" __name__ = "BaseProvider" DEFAULT_MODEL = "DEFAULT_MODEL" @property + @abstractmethod def client(self): """The instructor client for the provider.""" raise NotImplementedError @property + @abstractmethod def structured_client(self): """The structured client for the provider.""" raise NotImplementedError - def send_conversation(self, conversation: "Conversation"): + @abstractmethod + def send_conversation(self, conversation: "Conversation") -> "Message": """Send a conversation to the provider.""" raise NotImplementedError + @abstractmethod def structured_response(self, prompt: str, response_model, **kwargs): """Get a structured response.""" raise NotImplementedError - def generate_text(self, prompt: str, **kwargs): + @abstractmethod + def generate_text(self, prompt: str, **kwargs) -> str: """Generate text from a prompt.""" raise NotImplementedError