|
from typing import List, Dict, Optional |
|
from src.llm.factory import llm_factory, ProviderNotAvailableError |
|
import logging |
|
|
|
logger = logging.getLogger(__name__) |
|
|
|
class ChatService: |
|
"""Service for handling chat interactions with LLM providers""" |
|
|
|
def __init__(self): |
|
try: |
|
self.provider = llm_factory.get_provider() |
|
except ProviderNotAvailableError: |
|
self.provider = None |
|
logger.error("No LLM providers available") |
|
|
|
def generate_response(self, prompt: str, conversation_history: List[Dict]) -> Optional[str]: |
|
"""Generate a response using the configured provider""" |
|
if not self.provider: |
|
raise ProviderNotAvailableError("No LLM provider available") |
|
|
|
try: |
|
return self.provider.generate(prompt, conversation_history) |
|
except Exception as e: |
|
logger.error(f"LLM generation failed: {e}") |
|
raise |
|
|
|
def stream_response(self, prompt: str, conversation_history: List[Dict]): |
|
"""Stream a response using the configured provider""" |
|
if not self.provider: |
|
raise ProviderNotAvailableError("No LLM provider available") |
|
|
|
try: |
|
return self.provider.stream_generate(prompt, conversation_history) |
|
except Exception as e: |
|
logger.error(f"LLM stream generation failed: {e}") |
|
raise |
|
|
|
|
|
chat_service = ChatService() |
|
|