Skip to content

Commit f4bbfd0

Browse files
feat: add is_active flag to model providers and update provider filtering (#8588)
* update model constants * [autofix.ci] apply automated fixes * update model input constants to reuse the filtered data * Update test_agent_component.py * [autofix.ci] apply automated fixes --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
1 parent aeebbd3 commit f4bbfd0

18 files changed

Lines changed: 48 additions & 114 deletions

src/backend/base/langflow/base/models/model_input_constants.py

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ class ModelProvidersDict(TypedDict):
1919
prefix: str
2020
component_class: LCModelComponent
2121
icon: str
22+
is_active: bool
2223

2324

2425
def get_filtered_inputs(component_class):
@@ -186,6 +187,7 @@ def _get_sambanova_inputs_and_fields():
186187
"prefix": "",
187188
"component_class": OpenAIModelComponent(),
188189
"icon": OpenAIModelComponent.icon,
190+
"is_active": True,
189191
}
190192
except ImportError:
191193
pass
@@ -198,6 +200,7 @@ def _get_sambanova_inputs_and_fields():
198200
"prefix": "",
199201
"component_class": AzureChatOpenAIComponent(),
200202
"icon": AzureChatOpenAIComponent.icon,
203+
"is_active": False,
201204
}
202205
except ImportError:
203206
pass
@@ -210,6 +213,7 @@ def _get_sambanova_inputs_and_fields():
210213
"prefix": "",
211214
"component_class": GroqModel(),
212215
"icon": GroqModel.icon,
216+
"is_active": True,
213217
}
214218
except ImportError:
215219
pass
@@ -222,6 +226,7 @@ def _get_sambanova_inputs_and_fields():
222226
"prefix": "",
223227
"component_class": AnthropicModelComponent(),
224228
"icon": AnthropicModelComponent.icon,
229+
"is_active": True,
225230
}
226231
except ImportError:
227232
pass
@@ -234,6 +239,7 @@ def _get_sambanova_inputs_and_fields():
234239
"prefix": "",
235240
"component_class": NVIDIAModelComponent(),
236241
"icon": NVIDIAModelComponent.icon,
242+
"is_active": False,
237243
}
238244
except ImportError:
239245
pass
@@ -246,6 +252,7 @@ def _get_sambanova_inputs_and_fields():
246252
"prefix": "",
247253
"component_class": AmazonBedrockComponent(),
248254
"icon": AmazonBedrockComponent.icon,
255+
"is_active": False,
249256
}
250257
except ImportError:
251258
pass
@@ -258,6 +265,7 @@ def _get_sambanova_inputs_and_fields():
258265
"prefix": "",
259266
"component_class": GoogleGenerativeAIComponent(),
260267
"icon": GoogleGenerativeAIComponent.icon,
268+
"is_active": True,
261269
}
262270
except ImportError:
263271
pass
@@ -270,17 +278,20 @@ def _get_sambanova_inputs_and_fields():
270278
"prefix": "",
271279
"component_class": SambaNovaComponent(),
272280
"icon": SambaNovaComponent.icon,
281+
"is_active": False,
273282
}
274283
except ImportError:
275284
pass
276285

277-
MODEL_PROVIDERS = list(MODEL_PROVIDERS_DICT.keys())
278-
ALL_PROVIDER_FIELDS: list[str] = [field for provider in MODEL_PROVIDERS_DICT.values() for field in provider["fields"]]
286+
# Expose only active providers ----------------------------------------------
287+
ACTIVE_MODEL_PROVIDERS_DICT: dict[str, ModelProvidersDict] = {
288+
name: prov for name, prov in MODEL_PROVIDERS_DICT.items() if prov.get("is_active", True)
289+
}
279290

280-
MODEL_DYNAMIC_UPDATE_FIELDS = ["api_key", "model", "tool_model_enabled", "base_url", "model_name"]
291+
MODEL_PROVIDERS: list[str] = list(ACTIVE_MODEL_PROVIDERS_DICT.keys())
281292

293+
ALL_PROVIDER_FIELDS: list[str] = [field for prov in ACTIVE_MODEL_PROVIDERS_DICT.values() for field in prov["fields"]]
282294

283-
MODELS_METADATA = {
284-
key: {"icon": MODEL_PROVIDERS_DICT[key]["icon"] if key in MODEL_PROVIDERS_DICT else None}
285-
for key in MODEL_PROVIDERS_DICT
286-
}
295+
MODEL_DYNAMIC_UPDATE_FIELDS = ["api_key", "model", "tool_model_enabled", "base_url", "model_name"]
296+
297+
MODELS_METADATA = {name: {"icon": prov["icon"]} for name, prov in ACTIVE_MODEL_PROVIDERS_DICT.items()}

src/backend/base/langflow/components/agents/agent.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from langflow.base.models.model_input_constants import (
66
ALL_PROVIDER_FIELDS,
77
MODEL_DYNAMIC_UPDATE_FIELDS,
8+
MODEL_PROVIDERS,
89
MODEL_PROVIDERS_DICT,
910
MODELS_METADATA,
1011
)
@@ -40,11 +41,11 @@ class AgentComponent(ToolCallingAgentComponent):
4041
name="agent_llm",
4142
display_name="Model Provider",
4243
info="The provider of the language model that the agent will use to generate responses.",
43-
options=[*sorted(MODEL_PROVIDERS_DICT.keys()), "Custom"],
44+
options=[*sorted(MODEL_PROVIDERS), "Custom"],
4445
value="OpenAI",
4546
real_time_refresh=True,
4647
input_types=[],
47-
options_metadata=[MODELS_METADATA[key] for key in sorted(MODELS_METADATA.keys())] + [{"icon": "brain"}],
48+
options_metadata=[MODELS_METADATA[key] for key in sorted(MODEL_PROVIDERS)] + [{"icon": "brain"}],
4849
),
4950
*MODEL_PROVIDERS_DICT["OpenAI"]["inputs"],
5051
MultilineInput(
@@ -221,7 +222,7 @@ async def update_build_config(
221222
custom_component = DropdownInput(
222223
name="agent_llm",
223224
display_name="Language Model",
224-
options=[*sorted(MODEL_PROVIDERS_DICT.keys()), "Custom"],
225+
options=[*sorted(MODEL_PROVIDERS), "Custom"],
225226
value="Custom",
226227
real_time_refresh=True,
227228
input_types=["LanguageModel"],

src/backend/base/langflow/initial_setup/starter_projects/Financial Agent.json

Lines changed: 2 additions & 10 deletions
Large diffs are not rendered by default.

src/backend/base/langflow/initial_setup/starter_projects/Instagram Copywriter.json

Lines changed: 1 addition & 5 deletions
Large diffs are not rendered by default.

src/backend/base/langflow/initial_setup/starter_projects/Invoice Summarizer.json

Lines changed: 1 addition & 5 deletions
Large diffs are not rendered by default.

src/backend/base/langflow/initial_setup/starter_projects/Market Research.json

Lines changed: 1 addition & 5 deletions
Large diffs are not rendered by default.

src/backend/base/langflow/initial_setup/starter_projects/News Aggregator.json

Lines changed: 1 addition & 5 deletions
Large diffs are not rendered by default.

src/backend/base/langflow/initial_setup/starter_projects/Pokédex Agent.json

Lines changed: 1 addition & 5 deletions
Large diffs are not rendered by default.

src/backend/base/langflow/initial_setup/starter_projects/Price Deal Finder.json

Lines changed: 1 addition & 5 deletions
Large diffs are not rendered by default.

src/backend/base/langflow/initial_setup/starter_projects/Research Agent.json

Lines changed: 1 addition & 5 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)