File size: 1,351 Bytes
f1f682e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# models/base.py

from abc import ABC, abstractmethod
from typing import List

class BaseModel(ABC):
    """
    Abstract base class for all model implementations.
    """
    def __init__(self, model_name: str, model_path: str, **kwargs):
        """
        Initialize the model.

        :param model_path: Model path or API name (e.g., 'qwen-turbo', '/path/to/local/model')
        :param kwargs: Other parameters such as api_key, temperature, etc.
        """
        self.model_name = model_name
        self.model_path = model_path
        self.kwargs = kwargs

    @abstractmethod
    def load_model(self):
        pass

    @abstractmethod
    def generate(self, prompt: str) -> str:
        """
        Generate response for a single prompt.

        :param prompt: Input prompt string
        :return: Text generated by the model
        """
        pass
    
    @abstractmethod
    def generate_batch(self, prompts: List[str]) -> List[str]:
        """
        Generate responses for a batch of prompts (optional, but recommended for efficiency).

        :param prompts: List of input prompt strings
        :return: List of texts generated by the model
        """
        # Default implementation calls generate serially, subclasses should override for true batch processing
        return [self.generate(prompt) for prompt in prompts]