Problem
With the introduction of Copilot as a provider, the assumption that a provider only serves its own models no longer holds. Copilot can forward requests to both OpenAI and Anthropic models, and it always uses OpenAI-compatible endpoints, even for Anthropic models. This means the provider field alone is insufficient to determine the model family.
coder/coder#22022 addressed this on the frontend by inferring the model family from the model name via substring matching. While this works as an interim solution, this logic should live in the backend instead.
Proposed Changes
- Store the model family (e.g.
openai, claude) alongside the model name in the database for each AI Bridge interception.
- For OpenAI and Anthropic providers, the model family can be inferred automatically since each provider only serves its own models.
- For Copilot (and other future multi-provider proxies), infer the model family from the model name string (e.g. substring matching on
claude, gpt, etc.), since Copilot uses OpenAI-compatible endpoints for all models regardless of the underlying provider.
- Remove the frontend model family inference once the backend provides this information.
References
Official model naming docs:
Problem
With the introduction of Copilot as a provider, the assumption that a provider only serves its own models no longer holds. Copilot can forward requests to both OpenAI and Anthropic models, and it always uses OpenAI-compatible endpoints, even for Anthropic models. This means the provider field alone is insufficient to determine the model family.
coder/coder#22022 addressed this on the frontend by inferring the model family from the model name via substring matching. While this works as an interim solution, this logic should live in the backend instead.
Proposed Changes
openai,claude) alongside the model name in the database for each AI Bridge interception.claude,gpt, etc.), since Copilot uses OpenAI-compatible endpoints for all models regardless of the underlying provider.References
Official model naming docs: