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) | |