Download src/ai_agent/ui/utils.py from SDSC/ai-agent: direct link, hf CLI and curl.
- Browser
- Download file 2.83 kB
-
https://huggingface.co/spaces/SDSC/ai-agent/resolve/main/src/ai_agent/ui/utils.py
- Command line
-
hf download hf://spaces/SDSC/ai-agent/src/ai_agent/ui/utils.py
-
curl -L -o utils.py https://huggingface.co/spaces/SDSC/ai-agent/resolve/main/src/ai_agent/ui/utils.py
2.83 kB
| """Utility functions for UI configuration management.""" | |
| import logging | |
| from typing import Dict, Optional | |
| from ai_agent.utils.config import get_config, get_available_models_config | |
| log = logging.getLogger("ui.utils") | |
| def get_agent_model() -> Dict[str, Optional[str]]: | |
| """ | |
| Get the default agent model configuration from config.yaml. | |
| Returns: | |
| Dictionary with 'name', 'base_url', and 'api_key_env' keys. | |
| Returns minimal default if config not available. | |
| """ | |
| agent_model = get_config().agent_model | |
| return { | |
| "name": agent_model.name, | |
| "base_url": agent_model.base_url, | |
| "api_key_env": agent_model.api_key_env, | |
| } | |
| def get_available_models() -> Dict[str, Dict[str, Optional[str]]]: | |
| """ | |
| Get available models from config.yaml for UI dropdown. | |
| Returns: | |
| Dictionary mapping display_name -> model config | |
| Returns minimal default if config not available. | |
| """ | |
| available_models = get_available_models_config() | |
| model_configs = {} | |
| for model in available_models: | |
| display_name = model.get("display_name") | |
| if display_name: | |
| model_configs[display_name] = { | |
| "name": model.get("name"), | |
| "base_url": model.get("base_url"), | |
| "provider": model.get("provider", "Unknown"), | |
| "api_key_env": model.get("api_key_env", "OPENAI_API_KEY"), | |
| } | |
| # Fallback to minimal default if no models found | |
| if not model_configs: | |
| log.warning("No models found in config.yaml, using fallback") | |
| agent_model = get_agent_model() | |
| model_name = agent_model["name"] | |
| model_configs[model_name] = { | |
| "name": model_name, | |
| "base_url": agent_model["base_url"], | |
| "provider": "OpenAI", | |
| "api_key_env": agent_model["api_key_env"], | |
| } | |
| log.info(f"Loaded {len(model_configs)} models from config: {list(model_configs.keys())}") | |
| return model_configs | |
| def get_default_model_display_name() -> str: | |
| """ | |
| Get the display name for the default agent model. | |
| Returns: | |
| Display name string that matches one of the available_models, | |
| or the agent_model name if not found in available_models. | |
| """ | |
| agent_model = get_agent_model() | |
| agent_name = agent_model["name"] | |
| available = get_available_models() | |
| # Try to find matching display name in available models | |
| for display_name, config in available.items(): | |
| if config["name"] == agent_name: | |
| return display_name | |
| # Fallback: use agent name directly | |
| log.warning(f"Agent model '{agent_name}' not found in available_models, using as-is") | |
| return agent_name | |