Skip to content

Commit 4ddc381

Browse files
committed
fix: /llm/provider route returns all providers (#8545)
1 parent 9947837 commit 4ddc381

File tree

4 files changed

+17
-22
lines changed

4 files changed

+17
-22
lines changed

backend/onyx/db/llm.py

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -428,38 +428,35 @@ def fetch_existing_models(
428428

429429
def fetch_existing_llm_providers(
430430
db_session: Session,
431-
flow_types: list[LLMModelFlowType],
431+
flow_type_filter: list[LLMModelFlowType],
432432
only_public: bool = False,
433433
exclude_image_generation_providers: bool = True,
434434
) -> list[LLMProviderModel]:
435435
"""Fetch all LLM providers with optional filtering.
436436
437437
Args:
438438
db_session: Database session
439-
flow_types: List of flow types to filter by
439+
flow_type_filter: List of flow types to filter by, empty list for no filter
440440
only_public: If True, only return public providers
441441
exclude_image_generation_providers: If True, exclude providers that are
442442
used for image generation configs
443443
"""
444-
providers_with_flows = (
445-
select(ModelConfiguration.llm_provider_id)
446-
.join(LLMModelFlow)
447-
.where(LLMModelFlow.llm_model_flow_type.in_(flow_types))
448-
.distinct()
449-
)
444+
stmt = select(LLMProviderModel)
445+
446+
if flow_type_filter:
447+
providers_with_flows = (
448+
select(ModelConfiguration.llm_provider_id)
449+
.join(LLMModelFlow)
450+
.where(LLMModelFlow.llm_model_flow_type.in_(flow_type_filter))
451+
.distinct()
452+
)
453+
stmt = stmt.where(LLMProviderModel.id.in_(providers_with_flows))
450454

451455
if exclude_image_generation_providers:
452-
stmt = select(LLMProviderModel).where(
453-
LLMProviderModel.id.in_(providers_with_flows)
454-
)
455-
else:
456456
image_gen_provider_ids = select(ModelConfiguration.llm_provider_id).join(
457457
ImageGenerationConfig
458458
)
459-
stmt = select(LLMProviderModel).where(
460-
LLMProviderModel.id.in_(providers_with_flows)
461-
| LLMProviderModel.id.in_(image_gen_provider_ids)
462-
)
459+
stmt = stmt.where(~LLMProviderModel.id.in_(image_gen_provider_ids))
463460

464461
stmt = stmt.options(
465462
selectinload(LLMProviderModel.model_configurations),

backend/onyx/server/manage/llm/api.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -255,7 +255,7 @@ def list_llm_providers(
255255
llm_provider_list: list[LLMProviderView] = []
256256
for llm_provider_model in fetch_existing_llm_providers(
257257
db_session=db_session,
258-
flow_types=[LLMModelFlowType.CHAT, LLMModelFlowType.VISION],
258+
flow_type_filter=[],
259259
exclude_image_generation_providers=not include_image_gen,
260260
):
261261
from_model_start = datetime.now(timezone.utc)
@@ -503,9 +503,7 @@ def list_llm_provider_basics(
503503
start_time = datetime.now(timezone.utc)
504504
logger.debug("Starting to fetch user-accessible LLM providers")
505505

506-
all_providers = fetch_existing_llm_providers(
507-
db_session, [LLMModelFlowType.CHAT, LLMModelFlowType.VISION]
508-
)
506+
all_providers = fetch_existing_llm_providers(db_session, [])
509507
user_group_ids = fetch_user_group_ids(db_session, user)
510508
is_admin = user.role == UserRole.ADMIN
511509

backend/tests/external_dependency_unit/llm/test_llm_provider.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -553,7 +553,7 @@ def test_no_default_provider_raises_exception(
553553

554554
try:
555555
existing_providers = fetch_existing_llm_providers(
556-
db_session, flow_types=[LLMModelFlowType.CHAT]
556+
db_session, flow_type_filter=[LLMModelFlowType.CHAT]
557557
)
558558
provider_names_to_restore: list[str] = []
559559

backend/tests/external_dependency_unit/llm/test_llm_provider_auto_mode.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -690,7 +690,7 @@ def test_sync_auto_mode_creates_flow_rows(
690690
# Step 4: The provider must appear in fetch_existing_llm_providers
691691
listed_providers = fetch_existing_llm_providers(
692692
db_session=db_session,
693-
flow_types=[LLMModelFlowType.CHAT],
693+
flow_type_filter=[LLMModelFlowType.CHAT],
694694
)
695695
listed_provider_names = {p.name for p in listed_providers}
696696
assert provider_name in listed_provider_names, (

0 commit comments

Comments
 (0)