Spaces:
Paused
Paused
Download src/llm/__init__.py from CGIAR/PERI-AI-dev: direct link, hf CLI and curl.
- Browser
- Download file 1.83 kB
-
https://huggingface.co/spaces/CGIAR/PERI-AI-dev/resolve/main/src/llm/__init__.py
- Command line
-
hf download hf://spaces/CGIAR/PERI-AI-dev/src/llm/__init__.py
-
curl -L -o __init__.py https://huggingface.co/spaces/CGIAR/PERI-AI-dev/resolve/main/src/llm/__init__.py
1.83 kB
| """LLM provider registry.""" | |
| from src.llm import openai as _openai | |
| from src.llm import anthropic as _anthropic | |
| from src.llm import gemini as _gemini | |
| from src.llm import hugging_face as hf | |
| from src.config_loader import get_api_key | |
| PROVIDERS = { | |
| "openai": _openai, | |
| "anthropic": _anthropic, | |
| "gemini": _gemini, | |
| "hugging-face": hf, | |
| } | |
| def generate(system_prompt: str, user_message: str, cfg: dict, | |
| provider: str = None, max_tokens: int = None) -> str: | |
| llm_cfg = cfg.get("llm", {}) | |
| provider = provider or llm_cfg.get("provider", "openai") | |
| if provider not in PROVIDERS: | |
| raise ValueError(f"Unknown provider: {provider}. Available: {list(PROVIDERS.keys())}") | |
| api_key = get_api_key(cfg, provider) | |
| if not api_key: | |
| raise ValueError(f"API key not set for {provider}. Set it in .env or config.yaml.") | |
| model = llm_cfg.get("model") or None | |
| temperature = llm_cfg.get("temperature", 0.0) | |
| if max_tokens is None: | |
| max_tokens = llm_cfg.get("max_tokens", 8192) | |
| # Validate parameters | |
| try: | |
| temperature = max(0.0, min(float(temperature), 2.0)) | |
| except (ValueError, TypeError): | |
| temperature = 0.0 | |
| # Anthropic max temperature is 1.0 | |
| if provider == "anthropic": | |
| temperature = min(temperature, 1.0) | |
| try: | |
| max_tokens = max(1, min(int(max_tokens), 128000)) | |
| except (ValueError, TypeError): | |
| max_tokens = 8192 | |
| return PROVIDERS[provider].generate( | |
| system_prompt=system_prompt, user_message=user_message, | |
| api_key=api_key, model=model, temperature=temperature, max_tokens=max_tokens, | |
| ) | |
| def list_models(provider: str, api_key: str) -> list[str]: | |
| if provider not in PROVIDERS: | |
| raise ValueError(f"Unknown provider: {provider}") | |
| return PROVIDERS[provider].list_models(api_key) | |