fix(models): keep litellm sync schema-compatible
This commit is contained in:
@@ -232,6 +232,7 @@ def official_alias_metadata(model_id: str, official_models: dict[str, Any]) -> d
|
|||||||
|
|
||||||
def merge_metadata(existing: dict[str, Any], official: dict[str, Any], litellm_meta: dict[str, Any], model_id: str) -> tuple[dict[str, Any], str]:
|
def merge_metadata(existing: dict[str, Any], official: dict[str, Any], litellm_meta: dict[str, Any], model_id: str) -> tuple[dict[str, Any], str]:
|
||||||
merged = dict(existing)
|
merged = dict(existing)
|
||||||
|
merged.pop("metadataSource", None)
|
||||||
merged["id"] = model_id
|
merged["id"] = model_id
|
||||||
merged.setdefault("name", existing.get("name") if isinstance(existing.get("name"), str) else model_id)
|
merged.setdefault("name", existing.get("name") if isinstance(existing.get("name"), str) else model_id)
|
||||||
|
|
||||||
@@ -255,15 +256,14 @@ def merge_metadata(existing: dict[str, Any], official: dict[str, Any], litellm_m
|
|||||||
elif field == "reasoning":
|
elif field == "reasoning":
|
||||||
merged[field] = False
|
merged[field] = False
|
||||||
|
|
||||||
merged["metadataSource"] = source_used
|
|
||||||
return merged, source_used
|
return merged, source_used
|
||||||
|
|
||||||
|
|
||||||
def build_sync_report(models: list[dict[str, Any]], official_meta: dict[str, Any]):
|
def build_sync_report(models: list[dict[str, Any]], official_meta: dict[str, Any], source_map: dict[str, str]):
|
||||||
fallback = [m["id"] for m in models if m.get("metadataSource") == "fallback-default"]
|
fallback = [mid for mid, src in source_map.items() if src == "fallback-default"]
|
||||||
from_official = [m["id"] for m in models if str(m.get("metadataSource", "")).startswith("official-")]
|
from_official = [mid for mid, src in source_map.items() if src.startswith("official-")]
|
||||||
alias_derived = [m["id"] for m in models if str(m.get("metadataSource", "")).startswith("alias:")]
|
alias_derived = [mid for mid, src in source_map.items() if src.startswith("alias:")]
|
||||||
unresolved = [m["id"] for m in models if m.get("metadataSource") == "fallback-default"]
|
unresolved = list(fallback)
|
||||||
return {
|
return {
|
||||||
"total": len(models),
|
"total": len(models),
|
||||||
"officialCount": len(from_official),
|
"officialCount": len(from_official),
|
||||||
@@ -308,14 +308,16 @@ def main():
|
|||||||
}
|
}
|
||||||
|
|
||||||
new_models = []
|
new_models = []
|
||||||
|
source_map: dict[str, str] = {}
|
||||||
for mid in model_ids:
|
for mid in model_ids:
|
||||||
existing = dict(existing_by_id.get(mid, {}))
|
existing = dict(existing_by_id.get(mid, {}))
|
||||||
official = official_alias_metadata(mid, official_models)
|
official = official_alias_metadata(mid, official_models)
|
||||||
litellm_meta = metadata_from_litellm(mid, model_rows, model_info)
|
litellm_meta = metadata_from_litellm(mid, model_rows, model_info)
|
||||||
merged, _ = merge_metadata(existing, official, litellm_meta, mid)
|
merged, source_used = merge_metadata(existing, official, litellm_meta, mid)
|
||||||
new_models.append(merged)
|
new_models.append(merged)
|
||||||
|
source_map[mid] = source_used
|
||||||
|
|
||||||
report = build_sync_report(new_models, official_models)
|
report = build_sync_report(new_models, official_models, source_map)
|
||||||
if info_error:
|
if info_error:
|
||||||
report["modelInfoWarning"] = info_error
|
report["modelInfoWarning"] = info_error
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user