feat(model-selection): add support for Claude Opus 4.5 only for developers
What does this merge request do and why?
This merge request enables developers to use Anthropic's highest end model Claude Opus 4.5. This MR is needed because we need to test this new model under different conditions, making sure clients do not use a defective model.
This MR allows Claude Opus 4.5 for the features: Duo Agent Platform and Agentic Chat.
How to set up and validate locally
-
Check out to this merge request's branch.
-
Install and run the AI Gateway server locally by following How to run the server locally.
-
Call the API and verify that the
devgroup contains the proper information inselectable_modelsandgroup_ids:% curl -X GET "http://localhost:5052/v1/models/definitions" \ -H "Content-Type: application/json" | jq .If the API is working correctly, you should see the following fields in the shell output:
-
Duo Agent Platform:
{ "feature_setting": "duo_agent_platform", "default_model": "claude_sonnet_4_5_20250929_vertex", "selectable_models": [ "claude_sonnet_3_7_20250219", "claude_sonnet_4_20250514", "claude_sonnet_4_20250514_vertex", "claude_sonnet_4_5_20250929_vertex", "claude_haiku_4_5_20251001", "gpt_5", "gpt_5_codex", "gpt_5_mini" ], "beta_models": [], "dev": { "selectable_models": [ "claude_opus_4_5_20251101" ], "group_ids": [ 9970 ] }, "unit_primitives": [ "duo_agent_platform" ] }, -
Duo Agentic Chat:
{ "feature_setting": "duo_agent_platform_agentic_chat", "default_model": "claude_haiku_4_5_20251001", "selectable_models": [ "claude_haiku_4_5_20251001", "claude_sonnet_3_7_20250219", "claude_sonnet_4_20250514", "claude_sonnet_4_20250514_vertex", "claude_sonnet_4_5_20250929_vertex", "gpt_5", "gpt_5_codex", "gpt_5_mini" ], "beta_models": [], "dev": { "selectable_models": [ "claude_opus_4_5_20251101" ], "group_ids": [ 9970 ] }, "unit_primitives": [ "duo_agent_platform" ] },
-
Merge request checklist
- Tests added for new functionality. If not, please raise an issue to follow up.
- Documentation added/updated, if needed.
- If this change requires executor implementation: verified that issues/MRs exist for both Go executor and Node executor or confirmed that changes are backward-compatible and don't break existing executor functionality.
Edited by Fabrizio J. Piva