41 lines
1.2 KiB
Python
41 lines
1.2 KiB
Python
"""Модуль 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) |