symfonic.agent.backend.model¶
model ¶
Resolving the ModelConfig one facade invocation runs with.
The simple facade's constructor is frozen at four parameters (T2.1.1 FAC-4),
so there is no model= seam on Agent โ the model name has to come from
the provider, not from a constant baked into the facade. Hardcoding
ModelConfig() would send Anthropic's default model name to every provider,
so Agent(OpenAIProvider()) would ask OpenAI for claude-sonnet-4-5 and
fail at request time with model_not_found.
T3.1.1 moved the resolution itself into
:func:symfonic.services.models.provider_default_config, where it is step 4
of the one precedence chain that also covers per-dispatch hooks, role tables
and caller defaults. This module is now the facade's import path onto that
function โ the same object, so the facade and the engine cannot resolve a
provider's declared default differently.