class Model:
    def __init__(self, model_id, api_key):
        self.model_id = model_id
        self.api_key = api_key
        # Base inference parameters to use.
        self.inference_config = {"maxTokens": 2048, "temperature": 1.0}
        # Additional inference parameters to use.
        self.additional_model_fields = {}

    def cleanup(self):
        pass

    def get_system_prompts(self):
        return []

    def get_messages(self, message):
        return self.format_as_user_prompt(message)

    def setup(self):
        raise NotImplementedError("Model must implement setup method.")

    def generate(self, message, comment):
        raise NotImplementedError("Model must implement generate method.")

    def send_request(self, system_prompts, messages):
        raise NotImplementedError("Model must implement send_request method.")

    def format_as_system_prompt(self, prompt):
        raise NotImplementedError("Model must implement format_as_system_prompt method.")

    def format_as_user_prompt(self, prompt):
        raise NotImplementedError("Model must implement format_as_user_prompt method.")

    def get_llm_response(self, system_prompts, messages, comment):
        raise NotImplementedError("Model must implement get_llm_response method.")
