Spaces:
Sleeping
Sleeping
| """Utility functions for working with the language model.""" | |
| import logging | |
| from langchain_google_genai import ChatGoogleGenerativeAI | |
| from config import settings | |
| logger = logging.getLogger(__name__) | |
| _API_KEYS: list[str] = [] | |
| _current_key_idx = 0 | |
| MODEL_NAME = "gemini-2.5-flash-preview-05-20" | |
| def _get_api_key() -> str: | |
| """Return an API key using round-robin selection.""" | |
| global _API_KEYS, _current_key_idx | |
| if not _API_KEYS: | |
| keys_str = settings.gemini_api_key.get_secret_value() | |
| if keys_str: | |
| _API_KEYS = [k.strip() for k in keys_str.split(",") if k.strip()] | |
| if not _API_KEYS: | |
| msg = "Google API keys are not configured or invalid" | |
| logger.error(msg) | |
| raise ValueError(msg) | |
| key = _API_KEYS[_current_key_idx] | |
| _current_key_idx = (_current_key_idx + 1) % len(_API_KEYS) | |
| logger.debug("Using Google API key index %s", _current_key_idx) | |
| return key | |
| def create_llm( | |
| temperature: float = settings.temperature, | |
| top_p: float = settings.top_p, | |
| ) -> ChatGoogleGenerativeAI: | |
| """Create a standard LLM instance.""" | |
| return ChatGoogleGenerativeAI( | |
| model=MODEL_NAME, | |
| google_api_key=_get_api_key(), | |
| temperature=temperature, | |
| top_p=top_p, | |
| thinking_budget=1024, | |
| ) | |
| def create_light_llm(temperature: float = settings.temperature, top_p: float = settings.top_p): | |
| return ChatGoogleGenerativeAI( | |
| model="gemini-2.0-flash", | |
| google_api_key=_get_api_key(), | |
| temperature=temperature, | |
| top_p=top_p | |
| ) | |
| def create_precise_llm() -> ChatGoogleGenerativeAI: | |
| """Return an LLM tuned for deterministic output.""" | |
| return create_llm(temperature=0, top_p=1) | |