# SPDX-License-Identifier: GPL-3.0-only """Build the configured providers from settings, applying sensible per-provider defaults.""" from __future__ import annotations from ..config import settings from .base import Summariser, Transcriber from .summary import AnthropicSummariser, OpenAICompatibleSummariser from .transcription import LocalWhisperTranscriber, OpenAICompatibleTranscriber def build_summariser() -> Summariser: provider = settings.llm_provider model = settings.llm_model if provider == "anthropic": return AnthropicSummariser(settings.llm_api_key, model or "claude-opus-4-8") if provider == "openai_compatible": return OpenAICompatibleSummariser( settings.llm_base_url, settings.llm_api_key, model or "gpt-4o-mini" ) # Default: Ollama via its OpenAI-compatible /v1 endpoint (fully self-hosted). base = settings.ollama_url.rstrip("/") + "/v1" return OpenAICompatibleSummariser( base, settings.llm_api_key or "ollama", model or settings.ollama_model or "llama3.1" ) def build_transcriber() -> Transcriber: if settings.transcription_provider == "openai_compatible": return OpenAICompatibleTranscriber( settings.transcription_base_url, settings.transcription_api_key, settings.transcription_model or "whisper-1", ) # Default: local faster-whisper (self-hosted). return LocalWhisperTranscriber( settings.whisper_model, settings.whisper_device, settings.whisper_compute_type )