Skip to content

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.