AMRYB's picture
Upload 91 files
287f3d3 verified
Raw
History Blame Contribute Delete
1.23 kB
"""LLM layer: provider abstraction, concrete providers, service and fake."""
from .base import (
FakeLLMProvider,
LLMGenerationError,
LLMProvider,
LLMProviderError,
StructuredOutputError,
)
from .cursor_provider import CursorCloudProvider
from .kimi_provider import KimiProvider
from .openrouter_provider import OpenRouterProvider
from .service import LLMService, extract_json_object
def create_llm_provider(settings):
"""Construct the provider selected in configuration."""
provider_name = (settings.llm_provider or "cursor").strip().lower()
if provider_name == "cursor":
return CursorCloudProvider(settings)
if provider_name == "kimi":
return KimiProvider(settings)
if provider_name in ("openrouter", "groq", "gemini", "openai"):
return OpenRouterProvider(settings)
raise RuntimeError(f"Unsupported LLM provider: {provider_name!r}")
__all__ = [
"CursorCloudProvider",
"FakeLLMProvider",
"KimiProvider",
"LLMGenerationError",
"LLMProvider",
"LLMProviderError",
"LLMService",
"OpenRouterProvider",
"StructuredOutputError",
"create_llm_provider",
"extract_json_object",
]