-
Notifications
You must be signed in to change notification settings - Fork 56
Description
What problem does this address?
Model selection is currently hardcoded in helpers.php via three static priority lists (get_preferred_models_for_text_generation(), get_preferred_image_models(), get_preferred_vision_models()). While this was an intentional design decision to prevent surprise model upgrades from breaking things or inflating costs, it creates a few pain points:
- Users with multiple API keys configured have no visibility into which provider is actually handling their tasks.
- There is no UI-level way to express a preference — customization is only possible via PHP filters, which is inaccessible to most users.
- Hardcoding specific model names is brittle given how fast the AI landscape changes, and it forces the team to make opinionated model-tier recommendations that may quickly become outdated.
What is your proposed solution?
Introduce provider-level bucketing as a middle ground between full model selection and the current fully hardcoded approach:
- Let users select a preferred provider (Anthropic, Google, or OpenAI) for text and image generation tasks, rather than picking a specific model.
- The internal model priority order within each provider remains intact — preserving the stability guarantees that were the motivation for the original design.
- Default provider values are pre-set based on the current priority logic, so behavior is unchanged for users who don't configure anything.
- This gives users meaningful visibility and control without exposing them to the complexity of individual model names.
As a longer-term direction, a capability-tier bucketing approach (e.g. fast/cheap vs. high-reasoning) could complement this — borrowing from patterns used by tools like oh-my-opencode — with an escape hatch for users who disagree with a bucket's default assignment.
This work also has natural overlap with the Playground feature (#32), which will require dynamic model input regardless, and should be designed in alignment with whatever bucketing approach we land on here.
Metadata
Metadata
Assignees
Labels
Type
Fields
Give feedbackProjects
Status