from __future__ import annotations from abc import ABC, abstractmethod from collections.abc import AsyncIterator from typing import Any from ..config import ModelConfig, RuntimeConfig from ..types import BackendError, ChatChunk, ChatParams class BaseBackend(ABC): def __init__(self, model: ModelConfig, runtime: RuntimeConfig) -> None: self.model = model self.runtime = runtime self.loaded = False @abstractmethod async def load(self) -> None: raise NotImplementedError @abstractmethod async def unload(self) -> None: raise NotImplementedError @abstractmethod async def chat( self, messages: list[dict[str, Any]], params: ChatParams, stream: bool = False, ) -> AsyncIterator[ChatChunk]: raise NotImplementedError @abstractmethod def info(self) -> dict[str, Any]: raise NotImplementedError async def embed(self, inputs: list[str]) -> list[list[float]]: raise BackendError(f"后端 {self.model.id} 不支持 embeddings")