From 117240b858f5eab115be5ec3de8b2836b85250b1 Mon Sep 17 00:00:00 2001 From: 7000pctAUTO Date: Thu, 5 Feb 2026 06:34:39 +0000 Subject: [PATCH] Initial upload: Local AI Commit Reviewer CLI with CI/CD workflow --- src/llm/provider.py | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 src/llm/provider.py diff --git a/src/llm/provider.py b/src/llm/provider.py new file mode 100644 index 0000000..3c452f4 --- /dev/null +++ b/src/llm/provider.py @@ -0,0 +1,45 @@ +from abc import ABC, abstractmethod +from collections.abc import AsyncIterator +from dataclasses import dataclass + + +@dataclass +class LLMResponse: + text: str + model: str + tokens_used: int + finish_reason: str + + +@dataclass +class ModelInfo: + name: str + size: str + modified: str + digest: str + + +class LLMProvider(ABC): + @abstractmethod + def is_available(self) -> bool: + pass + + @abstractmethod + def generate(self, prompt: str, **kwargs) -> LLMResponse: + pass + + @abstractmethod + async def agenerate(self, prompt: str, **kwargs) -> LLMResponse: + pass + + @abstractmethod + def stream_generate(self, prompt: str, **kwargs) -> AsyncIterator[str]: + pass + + @abstractmethod + def list_models(self) -> list[ModelInfo]: + pass + + @abstractmethod + def health_check(self) -> bool: + pass