grid-royale / backend /agent /llm_client.py
LokeshReddy001's picture
Update: Read Modal base_url from MODAL_BASE_URL env var
fa1da4a
Raw
History Blame Contribute Delete
1.67 kB
import os
from openai import AsyncOpenAI
from dotenv import load_dotenv
load_dotenv()
PROVIDER_CONFIG = {
"local": {
"base_url": "http://localhost:11434/v1",
"api_key": "OLLAMA_API_KEY",
"models": [
"qwen2.5:7b",
"qwen2.5:3b",
"llama3.1:8b",
],
},
"modal": {
"base_url": os.getenv("MODAL_BASE_URL"),
"api_key": "MODAL_API_KEY",
"models": [
"google/gemma-4-26B-A4B-it",
],
},
"nvidia": {
"base_url": "https://integrate.api.nvidia.com/v1",
"api_key": "NVIDIA_NIM_API_KEY",
"models": [
"minimaxai/minimax-m2.7",
"stepfun-ai/step-3.5-flash",
"z-ai/glm4.7",
"deepseek-ai/deepseek-v3.2",
"moonshotai/kimi-k2-thinking",
"mistralai/devstral-2-123b-instruct-2512",
"mistralai/mistral-large-3-675b-instruct-2512",
"bytedance/seed-oss-36b-instruct",
"qwen/qwen3-coder-480b-a35b-instruct",
"nvidia/nemotron-3-ultra-550b-a55b",
],
},
"zai": {
"base_url": "https://api.z.ai/api/paas/v4/",
"api_key": "ZAI_API_KEY",
"models": [
"glm-4.7-flash",
"glm-4.6v-flash",
],
},
}
DEFAULT_PROVIDER = os.getenv("LLM_PROVIDER", "modal")
def get_llm_client(provider: str | None = None) -> AsyncOpenAI:
provider = provider or DEFAULT_PROVIDER
cfg = PROVIDER_CONFIG.get(provider) or PROVIDER_CONFIG[DEFAULT_PROVIDER]
api_key = os.getenv(cfg["api_key"]) or "ollama"
return AsyncOpenAI(base_url=cfg["base_url"], api_key=api_key)