diff --git a/src/llm/base.py b/src/llm/base.py new file mode 100644 index 0000000..1ab5910 --- /dev/null +++ b/src/llm/base.py @@ -0,0 +1,28 @@ +"""Base LLM client interface.""" + +from abc import ABC, abstractmethod +from collections.abc import Iterator + + +class LLMClient(ABC): + """Abstract base class for LLM clients.""" + + @abstractmethod + def generate(self, prompt: str, **kwargs) -> str: + """Generate a response from the LLM.""" + pass + + @abstractmethod + def stream_generate(self, prompt: str, **kwargs) -> Iterator[str]: + """Stream a response from the LLM.""" + pass + + @abstractmethod + def test_connection(self) -> bool: + """Test if the LLM service is available.""" + pass + + @abstractmethod + def get_available_models(self) -> list[str]: + """Get list of available models.""" + pass