7a34807fa0
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
37 lines
1.3 KiB
Python
37 lines
1.3 KiB
Python
from ai.base import AIProvider, ClassificationResult
|
|
from ai.anthropic_provider import AnthropicProvider
|
|
from ai.openai_provider import OpenAIProvider
|
|
from ai.ollama_provider import OllamaProvider
|
|
from ai.lmstudio_provider import LMStudioProvider
|
|
|
|
|
|
def get_provider(settings: dict) -> AIProvider:
|
|
active = settings.get("active_provider", "lmstudio")
|
|
providers = settings.get("providers", {})
|
|
cfg = providers.get(active, {})
|
|
|
|
match active:
|
|
case "anthropic":
|
|
return AnthropicProvider(
|
|
api_key=cfg.get("api_key", ""),
|
|
model=cfg.get("model", "claude-sonnet-4-6"),
|
|
)
|
|
case "openai":
|
|
return OpenAIProvider(
|
|
api_key=cfg.get("api_key", ""),
|
|
model=cfg.get("model", "gpt-4o"),
|
|
base_url=cfg.get("base_url") or None,
|
|
)
|
|
case "ollama":
|
|
return OllamaProvider(
|
|
base_url=cfg.get("base_url", "http://host.docker.internal:11434"),
|
|
model=cfg.get("model", "llama3.2"),
|
|
)
|
|
case "lmstudio":
|
|
return LMStudioProvider(
|
|
base_url=cfg.get("base_url", "http://host.docker.internal:1234"),
|
|
model=cfg.get("model", "gemma-4-e4b-it"),
|
|
)
|
|
case _:
|
|
raise ValueError(f"Unknown AI provider: {active}")
|