Skip to content

Commit 6709d70

Browse files
committed
fetch relevant provider keys
1 parent bf41739 commit 6709d70

4 files changed

Lines changed: 36 additions & 17 deletions

File tree

src/backend/base/langflow/api/utils/core.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -117,9 +117,14 @@ def remove_api_keys(flow: dict):
117117
node_data = node.get("data").get("node")
118118
template = node_data.get("template")
119119
for value in template.values():
120-
if isinstance(value, dict) and "name" in value and has_api_terms(value["name"]) and value.get("password"):
121-
if value.get("name") != "api_key":
122-
value["value"] = None
120+
if (
121+
isinstance(value, dict)
122+
and "name" in value
123+
and has_api_terms(value["name"])
124+
and value.get("password")
125+
and value.get("name") != "api_key"
126+
):
127+
value["value"] = None
123128

124129
return flow
125130

src/lfx/src/lfx/base/models/unified_models.py

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -229,17 +229,15 @@ def apply_provider_variable_config_to_build_config(
229229

230230
env_var_key = var_info.get("variable_key")
231231
if env_var_key:
232-
current_value = field_config.get("value")
233-
if not current_value or (isinstance(current_value, str) and not current_value.strip()):
234-
env_value = os.environ.get(env_var_key)
235-
if env_value and env_value.strip():
236-
field_config["value"] = env_var_key
237-
field_config["load_from_db"] = True
238-
logger.debug(
239-
"Set field %s to env var name %s (value resolved at runtime)",
240-
field_name,
241-
env_var_key,
242-
)
232+
env_value = os.environ.get(env_var_key)
233+
if env_value and env_value.strip():
234+
field_config["value"] = env_var_key
235+
field_config["load_from_db"] = True
236+
logger.debug(
237+
"Set field %s to env var name %s (value resolved at runtime)",
238+
field_name,
239+
env_var_key,
240+
)
243241

244242
return build_config
245243

@@ -268,6 +266,17 @@ def get_model_providers() -> list[str]:
268266
return sorted({md.get("provider", "Unknown") for group in MODELS_DETAILED for md in group})
269267

270268

269+
def get_provider_for_model_name(model_name: str) -> str:
270+
"""Return the provider for a model name by searching MODELS_DETAILED."""
271+
if not model_name or not isinstance(model_name, str):
272+
return ""
273+
for group in MODELS_DETAILED:
274+
for md in group:
275+
if md.get("name") == model_name:
276+
return md.get("provider", "") or ""
277+
return ""
278+
279+
271280
def get_unified_models_detailed(
272281
providers: list[str] | None = None,
273282
model_name: str | None = None,

src/lfx/src/lfx/components/models_and_agents/agent.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
get_language_model_options,
1919
get_llm,
2020
get_model_providers,
21+
get_provider_for_model_name,
2122
update_model_options_in_build_config,
2223
)
2324
from lfx.base.models.watsonx_constants import IBM_WATSONX_URLS
@@ -495,7 +496,9 @@ def get_tool_calling_model_options(user_id=None):
495496
provider = ""
496497
if isinstance(current_model_value, list) and current_model_value:
497498
selected_model = current_model_value[0]
498-
provider = selected_model.get("provider", "") or ""
499+
provider = (selected_model.get("provider") or "").strip()
500+
if not provider and selected_model.get("name"):
501+
provider = get_provider_for_model_name(str(selected_model["name"]))
499502

500503
if provider:
501504
build_config = apply_provider_variable_config_to_build_config(build_config, provider)

src/lfx/src/lfx/components/models_and_agents/language_model.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
get_language_model_options,
55
get_llm,
66
get_model_providers,
7+
get_provider_for_model_name,
78
update_model_options_in_build_config,
89
)
910
from lfx.base.models.watsonx_constants import IBM_WATSONX_URLS
@@ -129,12 +130,13 @@ def update_build_config(self, build_config: dict, field_value: str, field_name:
129130
build_config[field]["show"] = False
130131
build_config[field]["required"] = False
131132

132-
# Show/configure provider-specific fields based on selected model
133133
current_model_value = field_value if field_name == "model" else build_config.get("model", {}).get("value")
134134
provider = ""
135135
if isinstance(current_model_value, list) and current_model_value:
136136
selected_model = current_model_value[0]
137-
provider = selected_model.get("provider", "") or ""
137+
provider = (selected_model.get("provider") or "").strip()
138+
if not provider and selected_model.get("name"):
139+
provider = get_provider_for_model_name(str(selected_model["name"]))
138140

139141
if provider:
140142
build_config = apply_provider_variable_config_to_build_config(build_config, provider)

0 commit comments

Comments
 (0)