Spaces:
Sleeping
Sleeping
| """ | |
| Base LLM client class for all LLM providers. | |
| """ | |
| from abc import ABC, abstractmethod | |
| from typing import Any, Dict, Optional, Union | |
| import logging | |
| logger = logging.getLogger(__name__) | |
| class BaseLLMClient(ABC): | |
| """ | |
| Abstract base class for all LLM clients. | |
| Provides a consistent interface for different LLM providers and models. | |
| """ | |
| def __init__(self, provider: str, model_name: str, **kwargs): | |
| """ | |
| Initialize LLM client. | |
| Args: | |
| provider: LLM provider (e.g., 'openai', 'anthropic') | |
| model_name: Specific model name | |
| **kwargs: Additional provider-specific parameters | |
| """ | |
| self.provider = provider | |
| self.model_name = model_name | |
| self.logger = logging.getLogger(f"{__name__}.{self.__class__.__name__}") | |
| # Store additional configuration | |
| self.config = kwargs | |
| def generate(self, system_prompt: str, user_prompt: str, **kwargs) -> Dict[str, Any]: | |
| """ | |
| Generate response from LLM. | |
| Args: | |
| system_prompt: System-level instructions | |
| user_prompt: User's input prompt | |
| **kwargs: Additional generation parameters (e.g., image_base64) | |
| Returns: | |
| Dictionary with 'content' key containing the generated response | |
| and additional metadata | |
| """ | |
| pass | |
| def get_model_info(self) -> Dict[str, str]: | |
| """Get model information for logging and debugging""" | |
| return { | |
| 'provider': self.provider, | |
| 'model_name': self.model_name, | |
| 'class': self.__class__.__name__ | |
| } | |