"""Модуль 4: brain — «мозг» ассистента (LLM через OpenRouter) + очистка текста. Использование: from modules.brain import get_provider brain = get_provider("openrouter", model="openai/gpt-4o-mini") result = brain.ask("Какая погода?") print(result.cleaned_text) # чистый текст для озвучки """ from __future__ import annotations from .base import DialogHistory, LlmProvider, LlmResult from .clean_text import clean_for_speech from .prompts import SYSTEM_PROMPT from .provider_openrouter import OpenRouterProvider __all__ = [ "DialogHistory", "LlmProvider", "LlmResult", "OpenRouterProvider", "SYSTEM_PROMPT", "clean_for_speech", "get_provider", ] _PROVIDERS = { OpenRouterProvider.name: OpenRouterProvider, } def get_provider(name: str, **kwargs) -> LlmProvider: """Фабрика провайдеров по имени (выбор из конфига).""" try: provider_cls = _PROVIDERS[name] except KeyError: raise ValueError( f"Неизвестный LLM-провайдер: {name!r}. Доступны: {sorted(_PROVIDERS)}" ) from None return provider_cls(**kwargs)