Initial commit: LocalPilot:本地模型运行时,复用 llama-server 并提供 Ollama 兼容 provider
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
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")
|
||||
Reference in New Issue
Block a user