| from abc import ABC, abstractmethod |
| from typing import AsyncIterator, List, Dict, Any, Optional |
|
|
| class BaseLLMProvider(ABC): |
| @abstractmethod |
| async def initialize(self) -> bool: |
| """Initialize the LLM provider. Returns True if successful.""" |
| pass |
|
|
| @abstractmethod |
| async def generate( |
| self, |
| prompt: str, |
| system_prompt: Optional[str] = None, |
| messages: Optional[List[Dict[str, str]]] = None, |
| temperature: float = 0.7, |
| max_tokens: int = 1024, |
| top_p: float = 0.9, |
| ) -> Dict[str, Any]: |
| """ |
| Execute non-streaming completion. |
| Returns a dict with format: { "content": str, "usage": dict } |
| """ |
| pass |
|
|
| @abstractmethod |
| async def generate_stream( |
| self, |
| prompt: str, |
| system_prompt: Optional[str] = None, |
| messages: Optional[List[Dict[str, str]]] = None, |
| temperature: float = 0.7, |
| max_tokens: int = 1024, |
| top_p: float = 0.9, |
| ) -> AsyncIterator[str]: |
| """ |
| Execute streaming completion. |
| Yields text chunks. |
| """ |
| pass |
|
|
| @abstractmethod |
| def get_info(self) -> Dict[str, Any]: |
| """Return diagnostic and config information for the provider.""" |
| pass |
|
|