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] |