import logging | |
from typing import List, Dict, Optional | |
from core.llm_factory import llm_factory, ProviderNotAvailableError | |
logger = logging.getLogger(__name__) | |
class LLMClient: | |
"""Simple LLM client using factory pattern""" | |
def __init__(self): | |
try: | |
self.provider = llm_factory.get_provider() | |
except ProviderNotAvailableError: | |
self.provider = None | |
logger.error("No LLM providers available") | |
def generate(self, prompt: str, conversation_history: List[Dict], stream: bool = False) -> Optional[str]: | |
"""Generate a response""" | |
if not self.provider: | |
raise ProviderNotAvailableError("No LLM provider available") | |
try: | |
if stream: | |
result = self.provider.stream_generate(prompt, conversation_history) | |
if isinstance(result, list): | |
return "".join(result) | |
return result | |
else: | |
return self.provider.generate(prompt, conversation_history) | |
except Exception as e: | |
logger.error(f"LLM generation failed: {e}") | |
raise | |