Skip to content

Commit 18ff358

Browse files
committed
refac
1 parent 41b48b5 commit 18ff358

1 file changed

Lines changed: 9 additions & 35 deletions

File tree

backend/open_webui/routers/openai.py

Lines changed: 9 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -493,38 +493,6 @@ async def get_filtered_models(models, user, db=None):
493493
return filtered_models
494494

495495

496-
async def get_openai_loaded_models(request: Request, models: dict, api_base_urls: list):
497-
"""
498-
Fetch loaded-model state from providers that expose it and annotate
499-
each model dict with a ``loaded`` boolean.
500-
501-
Currently supports:
502-
- **llama.cpp** – queries ``GET /slots`` and matches slot model IDs.
503-
"""
504-
api_configs = request.app.state.config.OPENAI_API_CONFIGS
505-
api_keys = request.app.state.config.OPENAI_API_KEYS
506-
507-
for idx, url in enumerate(api_base_urls):
508-
api_config = api_configs.get(
509-
str(idx),
510-
api_configs.get(url, {}),
511-
)
512-
provider = api_config.get('provider', '')
513-
514-
if provider == 'llama.cpp':
515-
try:
516-
root_url = url.rstrip('/').removesuffix('/v1')
517-
key = api_keys[idx] if idx < len(api_keys) else None
518-
slots = await send_get_request(url=f'{root_url}/slots', key=key)
519-
loaded_model_ids = (
520-
{s.get('model') for s in slots if s.get('model')} if isinstance(slots, list) else set()
521-
)
522-
for model_id, model in models.items():
523-
if model.get('urlIdx') == idx:
524-
model['loaded'] = model_id in loaded_model_ids
525-
except Exception as e:
526-
log.debug(f'Failed to fetch llama.cpp slots for idx {idx}: {e}')
527-
528496

529497
@cached(
530498
ttl=MODELS_CACHE_TTL,
@@ -580,7 +548,7 @@ def get_merged_models(model_lists):
580548
continue
581549

582550
if model_id and model_id not in models:
583-
models[model_id] = {
551+
merged = {
584552
**model,
585553
'name': model.get('name', model_id),
586554
'owned_by': 'openai',
@@ -590,13 +558,19 @@ def get_merged_models(model_lists):
590558
'urlIdx': idx,
591559
}
592560

561+
# llama.cpp router mode: derive loaded state from
562+
# the status object returned by GET /v1/models.
563+
status = model.get('status')
564+
if isinstance(status, dict) and 'value' in status:
565+
merged['loaded'] = status['value'] in ('loaded', 'sleeping')
566+
567+
models[model_id] = merged
568+
593569
return models
594570

595571
models = get_merged_models(map(extract_data, responses))
596572
log.debug(f'models: {models}')
597573

598-
# Fetch loaded state for providers that support it (e.g. llama.cpp /slots)
599-
await get_openai_loaded_models(request, models, api_base_urls)
600574

601575
request.app.state.OPENAI_MODELS = models
602576
return {'data': list(models.values())}

0 commit comments

Comments
 (0)