llm-arithmetic-explorer / fetch_openrouter_model_info.py
hoololi's picture
Upload 7 files
29f893d verified
Raw
History Blame Contribute Delete
1.53 kB
"""Fetch an OpenRouter model metadata snapshot for the Space.
Run when you want to refresh model_info_snapshot.json:
python fetch_openrouter_model_info.py
No API key is required for the public /models endpoint at the time of writing.
"""
import json
from pathlib import Path
import requests
MODEL_FAMILIES_PATH = Path("model_families.json")
OUTPUT = Path("model_info_snapshot.json")
OPENROUTER_MODELS_URL = "https://openrouter.ai/api/v1/models"
def load_model_families() -> dict:
return json.loads(MODEL_FAMILIES_PATH.read_text(encoding="utf-8"))
def main() -> None:
model_families = load_model_families()
wanted = {model for models in model_families.values() for model in models}
response = requests.get(OPENROUTER_MODELS_URL, timeout=30)
response.raise_for_status()
data = response.json().get("data", [])
by_id = {item.get("id"): item for item in data}
snapshot = {}
for family, models in model_families.items():
for model in models:
item = by_id.get(model, {"id": model, "name": model})
item = dict(item)
item["model_family"] = family
snapshot[model] = item
missing = sorted(wanted - set(by_id))
OUTPUT.write_text(json.dumps(snapshot, ensure_ascii=False, indent=2), encoding="utf-8")
print(f"Wrote {len(snapshot)} models to {OUTPUT}")
if missing:
print("Missing from OpenRouter response:")
for model in missing:
print(f"- {model}")
if __name__ == "__main__":
main()