Model Settings Registry
This package applies model tuning settings independent of serving provider.
Goal
Use a bounded model list (OpenRouter catalog), then resolve parameter defaults by precedence:
- explicit request override
- creator recommendation (exact model)
- creator recommendation (model family)
- third-party fallback (OpenRouter model defaults)
- provider config fallback
If a parameter is undefined by creator docs, it remains unset (null / omitted).
Files
openrouter_model_settings.json: bounded model catalog snapshot from OpenRouter.
creator_recommendations.json: curated creator-sourced recommendations and family rules.
settings.go: resolver, normalization, and precedence merge.
Priority open-model families
Current creator-priority profiles focus on:
- DeepSeek (
deepseek-*, plus deepseek-r1* overrides)
- MiniMax (
minimax-m2*)
- Qwen (
qwen3*, qwen3.5*, qwen3.6*, qwen3.8*, qwen2.5*, qwen2.5-coder*)
- ZAI GLM (exact creator-backed rules currently for
glm-4.6 and glm-4-9b-chat)
Gemma currently has no accessible creator-published sampling defaults in this environment; values remain unset unless explicit overrides are provided.
Mode-aware parameters
Some models (Qwen3.6, Qwen3.8) publish different creator-recommended sampling for
thinking vs. non-thinking (instruct) mode. A profile can declare an optional
instruct_parameters block. ResolveModelSettingsForMode(model, instruct)
returns instruct_parameters when instruct is true and the profile defines
the block, otherwise the default parameters. The request builder passes
disableThinking as instruct, so non-thinking requests get the instruct
recommendation. ResolveModelSettings(model) is unchanged and resolves the
default (thinking) mode.
Normalization
Model names are normalized to base model IDs:
- strips provider prefix (
openai/gpt-oss-20b -> gpt-oss-20b)
- strips OpenRouter variants (
:free, :nitro, etc.)
- strips common quant suffixes (
_Q4, -int8, -gguf, etc.)
This makes variants like gpt-oss-20b_Q4 resolve to the same recommendation profile as openai/gpt-oss-20b.
Refresh OpenRouter catalog
curl -s https://openrouter.ai/api/v1/models > /tmp/openrouter_models.json
jq -c '{
generated_at: (now|todate),
source: "https://openrouter.ai/api/v1/models",
model_count: (.data|length),
models: [.data[] | {
id: .id,
slug: (.id|split("/")[1]),
supported_parameters: .supported_parameters,
default_parameters: {
temperature: .default_parameters.temperature,
top_p: .default_parameters.top_p,
frequency_penalty: .default_parameters.frequency_penalty
}
}]
}' /tmp/openrouter_models.json > pkg/model_settings/openrouter_model_settings.json