for filling in model metadata for custom openai endpoints, this reads model metadata from the server's endpoints if available. if absent or partial, it fills in with models.dev
it reads openai compliant /models, as well as
- litellm's /model/info
- lm studio's /api/v0/models
- ollama's /api/tags and /api/show
for reasoning effort i read non-standard fields used by OpenAI's Codex backend: supported_reasoning_levels and default_reasoning_level, as well as OpenRouter's reasoning.supported_efforts and reasoning.default_effort. there's nothing in the /v1/models spec from openai relating to reasoning effort (probably because they wrote it before o1 lol) but what reading what the codex backend puts out is good enough imo?
tbqh this is an entirely selfish change. most real inference providers don't expose this metadata. i wanted this so thinking levels can work for custom model name strings (on my bridge :nitro literally just adds the fast mode header, but it's an entirely different model string)