""" Фабрика LLM — переключение между провайдерами через .env. LLM_PROVIDER=openai → gpt-oss-20b (пары) LLM_PROVIDER=gigachat → GigaChat (дома, бесплатные токены Сбера) """ import os from dotenv import load_dotenv load_dotenv() def get_llm(): provider = os.getenv("LLM_PROVIDER", "openai").lower() if provider == "gigachat": from langchain_community.chat_models import GigaChat print(f"[LLM] 🏠 GigaChat ({os.getenv('GIGACHAT_MODEL', 'GigaChat-MAX')})") return GigaChat( credentials=os.getenv("GIGACHAT_CREDENTIALS"), scope=os.getenv("GIGACHAT_SCOPE", "GIGACHAT_API_B2B"), model=os.getenv("GIGACHAT_MODEL", "GigaChat-MAX"), verify_ssl_certs=False, temperature=0.2, timeout=240, ) else: from langchain_openai import ChatOpenAI from pydantic import SecretStr model = os.getenv("OPENAI_MODEL", "openi/gpt-oss-20b") print(f"[LLM] 🏫 OpenAI-compatible ({model})") return ChatOpenAI( model=model, base_url=os.getenv("OPENAI_BASE_URL"), api_key=SecretStr(os.getenv("OPENAI_API_KEY", "fake")), temperature=0.2, timeout=360, )