1414 ModelProvider ,
1515 get_model_resolution_settings ,
1616)
17- from claude_code_proxy .services .model_resolver import get_model_resolver
1817
1918
2019logger = get_logger (__name__ )
2524TEMPLATES_DIR = Path (__file__ ).parent .parent .parent / "ui" / "templates"
2625jinja_env = Environment (loader = FileSystemLoader (str (TEMPLATES_DIR )), autoescape = True )
2726
27+ # Provider-specific model configurations
28+ PROVIDER_MODELS : dict [str , dict [str , list [str ]]] = {
29+ "anthropic" : {
30+ "sonnet" : [
31+ "claude-sonnet-4-5-20250514" ,
32+ "claude-sonnet-4-20250514" ,
33+ "claude-3-5-sonnet-20241022" ,
34+ "claude-3-5-sonnet-latest" ,
35+ ],
36+ "opus" : [
37+ "claude-opus-4-5-20250514" ,
38+ "claude-opus-4-20250514" ,
39+ "claude-3-opus-20240229" ,
40+ "claude-3-opus-latest" ,
41+ ],
42+ "haiku" : [
43+ "claude-haiku-4-5-20250514" ,
44+ "claude-3-5-haiku-20241022" ,
45+ "claude-3-5-haiku-latest" ,
46+ ],
47+ },
48+ "openrouter" : {
49+ "sonnet" : [
50+ "anthropic/claude-sonnet-4" ,
51+ "anthropic/claude-3.5-sonnet" ,
52+ "anthropic/claude-3.5-sonnet:beta" ,
53+ ],
54+ "opus" : [
55+ "anthropic/claude-opus-4" ,
56+ "anthropic/claude-3-opus" ,
57+ "anthropic/claude-3-opus:beta" ,
58+ ],
59+ "haiku" : [
60+ "anthropic/claude-3.5-haiku" ,
61+ "anthropic/claude-3.5-haiku:beta" ,
62+ "anthropic/claude-3-haiku" ,
63+ ],
64+ },
65+ "litellm" : {
66+ "sonnet" : [
67+ "claude-sonnet-4-5-20250514" ,
68+ "anthropic/claude-sonnet-4-5-20250514" ,
69+ "claude-3-5-sonnet-latest" ,
70+ ],
71+ "opus" : [
72+ "claude-opus-4-5-20250514" ,
73+ "anthropic/claude-opus-4-5-20250514" ,
74+ "claude-3-opus-latest" ,
75+ ],
76+ "haiku" : [
77+ "claude-haiku-4-5-20250514" ,
78+ "anthropic/claude-haiku-4-5-20250514" ,
79+ "claude-3-5-haiku-latest" ,
80+ ],
81+ },
82+ }
83+
2884
2985def _get_current_settings () -> dict [str , Any ]:
3086 """Get current model resolution settings."""
@@ -49,26 +105,9 @@ def _get_current_settings() -> dict[str, Any]:
49105 }
50106
51107
52- def _get_available_models () -> dict [str , list [str ]]:
53- """Get available models by tier from the resolver."""
54- resolver = get_model_resolver ()
55- if resolver :
56- tier_models = resolver .get_models_by_tier ()
57- return {
58- "sonnet" : tier_models .get ("sonnet" , ["claude-sonnet-4-5" ]),
59- "opus" : tier_models .get ("opus" , ["claude-opus-4-5" ]),
60- "haiku" : tier_models .get ("haiku" , ["claude-haiku-4-5" ]),
61- }
62- # Fallback defaults
63- return {
64- "sonnet" : [
65- "claude-sonnet-4-5" ,
66- "claude-sonnet-4" ,
67- "claude-3-5-sonnet-20241022" ,
68- ],
69- "opus" : ["claude-opus-4-5" , "claude-opus-4" , "claude-3-opus-20240229" ],
70- "haiku" : ["claude-haiku-4-5" , "claude-3-5-haiku-20241022" ],
71- }
108+ def _get_available_models (provider : str = "anthropic" ) -> dict [str , list [str ]]:
109+ """Get available models by tier for the specified provider."""
110+ return PROVIDER_MODELS .get (provider , PROVIDER_MODELS ["anthropic" ])
72111
73112
74113@router .get ("" )
@@ -171,10 +210,11 @@ async def update_tier_defaults(
171210async def settings_modal (request : Request ) -> HTMLResponse :
172211 """Render the settings modal."""
173212 template = jinja_env .get_template ("settings_modal.html" )
213+ settings = _get_current_settings ()
174214
175215 content = template .render (
176- settings = _get_current_settings () ,
177- available_models = _get_available_models (),
216+ settings = settings ,
217+ available_models = _get_available_models (settings [ "provider" ] ),
178218 )
179219
180220 return HTMLResponse (content = content )
@@ -185,13 +225,11 @@ async def models_for_provider(
185225 request : Request , provider : str , tier : str
186226) -> HTMLResponse :
187227 """Return model options for a specific provider and tier."""
188- # TODO: Implement provider-specific model fetching
189- available_models = _get_available_models ()
228+ available_models = _get_available_models (provider )
190229 tier_models = available_models .get (tier , [])
191- current_settings = _get_current_settings ()
192- current_default = current_settings ["tier_defaults" ].get (
193- tier , tier_models [0 ] if tier_models else ""
194- )
230+
231+ # Use first model as default for new provider
232+ current_default = tier_models [0 ] if tier_models else ""
195233
196234 template = jinja_env .get_template ("partials/model_select.html" )
197235 return HTMLResponse (
0 commit comments