Source code for llm_kit_pro.core.base

from abc import ABC, abstractmethod
from typing import Any, Dict, List, Optional, Type

from pydantic import BaseModel

from llm_kit_pro.core.inputs import LLMFile


[docs] class BaseLLMClient(ABC): """ Base contract for all LLM providers. Providers must implement text and structured generation. Files (PDFs, images, etc.) are optional first-class inputs. """
[docs] @abstractmethod async def generate_text( self, prompt: str, *, files: Optional[List[LLMFile]] = None, **kwargs: Any, ) -> str: """ Generate free-form text output. Args: prompt: User prompt / instruction. files: Optional list of attached files (PDF, image, etc.). **kwargs: Provider-specific options (temperature, max_tokens, etc.). Note: The model is typically set in the config during client initialization. Returns: Generated text. """ raise NotImplementedError
[docs] @abstractmethod async def generate_json( self, prompt: str, schema: Type[BaseModel], *, files: Optional[List[LLMFile]] = None, **kwargs: Any, ) -> Dict[str, Any]: """ Generate structured JSON output matching the provided Pydantic model. Args: prompt: User prompt / instruction. schema: Pydantic model class describing expected output. files: Optional list of attached files (PDF, image, etc.). **kwargs: Provider-specific options (temperature, max_tokens, etc.). Note: The model is typically set in the config during client initialization. Returns: Validated JSON output as a dictionary. """ raise NotImplementedError