| import logging | |
| from typing import List, Dict, Optional | |
| from core.llm_factory import llm_factory, ProviderNotAvailableError | |
| logger = logging.getLogger(__name__) | |
| class LLMClient: | |
| """High-level LLM client that uses the factory pattern""" | |
| def __init__(self, provider: Optional[str] = None): | |
| self.provider_name = provider | |
| try: | |
| self.provider = llm_factory.get_provider(provider) | |
| except ProviderNotAvailableError: | |
| self.provider = None | |
| logger.error("No LLM providers available") | |
| def generate(self, prompt: str, conversation_history: List[Dict], stream: bool = False): | |
| """Generate a response""" | |
| if not self.provider: | |
| raise ProviderNotAvailableError("No LLM provider available") | |
| try: | |
| if stream: | |
| return self.provider.stream_generate(prompt, conversation_history) | |
| else: | |
| return self.provider.generate(prompt, conversation_history) | |
| except Exception as e: | |
| logger.error(f"LLM generation failed: {e}") | |
| raise | |
| def send_to_ollama(prompt: str, conversation_history: List[Dict], ollama_url: str, model: str) -> Optional[str]: | |
| """Legacy function for backward compatibility""" | |
| try: | |
| from core.providers.ollama import OllamaProvider | |
| provider = OllamaProvider(model) | |
| return provider.generate(prompt, conversation_history) | |
| except Exception as e: | |
| logger.error(f"Ollama call failed: {e}") | |
| return None | |
| def send_to_hf(prompt: str, conversation_history: List[Dict]) -> Optional[str]: | |
| """Legacy function for backward compatibility""" | |
| try: | |
| from utils.config import config | |
| from core.providers.huggingface import HuggingFaceProvider | |
| provider = HuggingFaceProvider("meta-llama/Llama-2-7b-chat-hf") | |
| return provider.generate(prompt, conversation_history) | |
| except Exception as e: | |
| logger.error(f"Hugging Face call failed: {e}") | |
| return None | |