feat: default model metadata & params

This commit is contained in:
Timothy Jaeryang Baek
2026-02-22 16:54:34 -06:00
parent 32aabe6bae
commit c341f97cfe
8 changed files with 364 additions and 108 deletions
+24
View File
@@ -1,3 +1,4 @@
import copy
import time
import logging
import asyncio
@@ -307,6 +308,29 @@ async def get_all_models(request, refresh: bool = False, user: UserModel = None)
except Exception as e:
log.info(f"Failed to load function module for {function_id}: {e}")
# Apply global model defaults to all models
# Per-model overrides take precedence over global defaults
default_metadata = (
getattr(request.app.state.config, "DEFAULT_MODEL_METADATA", None) or {}
)
if default_metadata:
for model in models:
info = model.get("info")
if info is None:
model["info"] = {"meta": copy.deepcopy(default_metadata)}
continue
meta = info.setdefault("meta", {})
for key, value in default_metadata.items():
if key == "capabilities":
# Merge capabilities: defaults as base, per-model overrides win
existing = meta.get("capabilities") or {}
meta["capabilities"] = {**value, **existing}
elif meta.get(key) is None:
meta[key] = copy.deepcopy(value)
for model in models:
action_ids = [
action_id