Merge branch 'main' into sdks
This commit is contained in:
commit
e666077ec2
4 changed files with 100 additions and 1 deletions
|
|
@ -75,3 +75,10 @@ LANGFLOW_SUPERUSER=
|
||||||
LANGFLOW_SUPERUSER_PASSWORD=
|
LANGFLOW_SUPERUSER_PASSWORD=
|
||||||
LANGFLOW_NEW_USER_IS_ACTIVE=False
|
LANGFLOW_NEW_USER_IS_ACTIVE=False
|
||||||
LANGFLOW_ENABLE_SUPERUSER_CLI=False
|
LANGFLOW_ENABLE_SUPERUSER_CLI=False
|
||||||
|
|
||||||
|
# Langfuse tracing (optional)
|
||||||
|
# Get keys from https://cloud.langfuse.com or your self-hosted instance
|
||||||
|
LANGFUSE_SECRET_KEY=
|
||||||
|
LANGFUSE_PUBLIC_KEY=
|
||||||
|
# Leave empty for Langfuse Cloud, or set for self-hosted (e.g., http://localhost:3002)
|
||||||
|
LANGFUSE_HOST=
|
||||||
|
|
|
||||||
|
|
@ -110,7 +110,9 @@ services:
|
||||||
ports:
|
ports:
|
||||||
- "7860:7860"
|
- "7860:7860"
|
||||||
environment:
|
environment:
|
||||||
- LANGFLOW_DEACTIVATE_TRACING=true
|
- LANGFUSE_SECRET_KEY=${LANGFUSE_SECRET_KEY:-}
|
||||||
|
- LANGFUSE_PUBLIC_KEY=${LANGFUSE_PUBLIC_KEY:-}
|
||||||
|
- LANGFUSE_HOST=${LANGFUSE_HOST:-}
|
||||||
- OPENAI_API_KEY=${OPENAI_API_KEY:-None}
|
- OPENAI_API_KEY=${OPENAI_API_KEY:-None}
|
||||||
- ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY:-None}
|
- ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY:-None}
|
||||||
- WATSONX_API_KEY=${WATSONX_API_KEY:-None}
|
- WATSONX_API_KEY=${WATSONX_API_KEY:-None}
|
||||||
|
|
|
||||||
|
|
@ -55,6 +55,11 @@ class EnvConfig:
|
||||||
aws_secret_access_key: str = ""
|
aws_secret_access_key: str = ""
|
||||||
langflow_public_url: str = ""
|
langflow_public_url: str = ""
|
||||||
|
|
||||||
|
# Langfuse settings (optional)
|
||||||
|
langfuse_secret_key: str = ""
|
||||||
|
langfuse_public_key: str = ""
|
||||||
|
langfuse_host: str = ""
|
||||||
|
|
||||||
# Langflow auth settings
|
# Langflow auth settings
|
||||||
langflow_auto_login: str = "False"
|
langflow_auto_login: str = "False"
|
||||||
langflow_new_user_is_active: str = "False"
|
langflow_new_user_is_active: str = "False"
|
||||||
|
|
@ -190,6 +195,9 @@ class EnvManager:
|
||||||
"LANGFLOW_ENABLE_SUPERUSER_CLI": "langflow_enable_superuser_cli",
|
"LANGFLOW_ENABLE_SUPERUSER_CLI": "langflow_enable_superuser_cli",
|
||||||
"DISABLE_INGEST_WITH_LANGFLOW": "disable_ingest_with_langflow",
|
"DISABLE_INGEST_WITH_LANGFLOW": "disable_ingest_with_langflow",
|
||||||
"OPENRAG_VERSION": "openrag_version",
|
"OPENRAG_VERSION": "openrag_version",
|
||||||
|
"LANGFUSE_SECRET_KEY": "langfuse_secret_key", # pragma: allowlist secret
|
||||||
|
"LANGFUSE_PUBLIC_KEY": "langfuse_public_key", # pragma: allowlist secret
|
||||||
|
"LANGFUSE_HOST": "langfuse_host",
|
||||||
}
|
}
|
||||||
|
|
||||||
loaded_from_file = False
|
loaded_from_file = False
|
||||||
|
|
@ -503,6 +511,24 @@ class EnvManager:
|
||||||
if optional_written:
|
if optional_written:
|
||||||
f.write("\n")
|
f.write("\n")
|
||||||
|
|
||||||
|
# Langfuse settings (optional)
|
||||||
|
langfuse_vars = [
|
||||||
|
("LANGFUSE_SECRET_KEY", self.config.langfuse_secret_key),
|
||||||
|
("LANGFUSE_PUBLIC_KEY", self.config.langfuse_public_key),
|
||||||
|
("LANGFUSE_HOST", self.config.langfuse_host),
|
||||||
|
]
|
||||||
|
|
||||||
|
langfuse_written = False
|
||||||
|
for var_name, var_value in langfuse_vars:
|
||||||
|
if var_value:
|
||||||
|
if not langfuse_written:
|
||||||
|
f.write("# Langfuse settings\n")
|
||||||
|
langfuse_written = True
|
||||||
|
f.write(f"{var_name}={self._quote_env_value(var_value)}\n")
|
||||||
|
|
||||||
|
if langfuse_written:
|
||||||
|
f.write("\n")
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
|
|
||||||
|
|
@ -513,6 +513,58 @@ class ConfigScreen(Screen):
|
||||||
self.inputs["aws_secret_access_key"] = input_widget
|
self.inputs["aws_secret_access_key"] = input_widget
|
||||||
yield Static(" ")
|
yield Static(" ")
|
||||||
|
|
||||||
|
# Langfuse Section (available in both basic and full mode)
|
||||||
|
yield Static("Langfuse (Tracing)", classes="tab-header")
|
||||||
|
yield Static(" ")
|
||||||
|
|
||||||
|
# Langfuse Secret Key
|
||||||
|
yield Label("Langfuse Secret Key (optional)")
|
||||||
|
yield Static(
|
||||||
|
Text("Get keys from your Langfuse project settings", style="dim"),
|
||||||
|
classes="helper-text",
|
||||||
|
)
|
||||||
|
current_value = getattr(self.env_manager.config, "langfuse_secret_key", "")
|
||||||
|
with Horizontal(id="langfuse-secret-key-row"):
|
||||||
|
input_widget = Input(
|
||||||
|
placeholder="sk-lf-...",
|
||||||
|
value=current_value,
|
||||||
|
password=True,
|
||||||
|
id="input-langfuse_secret_key",
|
||||||
|
)
|
||||||
|
yield input_widget
|
||||||
|
self.inputs["langfuse_secret_key"] = input_widget
|
||||||
|
yield Button("Show", id="toggle-langfuse-secret-key", variant="default")
|
||||||
|
yield Static(" ")
|
||||||
|
|
||||||
|
# Langfuse Public Key
|
||||||
|
yield Label("Langfuse Public Key (optional)")
|
||||||
|
current_value = getattr(self.env_manager.config, "langfuse_public_key", "")
|
||||||
|
with Horizontal(id="langfuse-public-key-row"):
|
||||||
|
input_widget = Input(
|
||||||
|
placeholder="pk-lf-...",
|
||||||
|
value=current_value,
|
||||||
|
password=True,
|
||||||
|
id="input-langfuse_public_key",
|
||||||
|
)
|
||||||
|
yield input_widget
|
||||||
|
self.inputs["langfuse_public_key"] = input_widget
|
||||||
|
yield Button("Show", id="toggle-langfuse-public-key", variant="default")
|
||||||
|
yield Static(" ")
|
||||||
|
|
||||||
|
# Langfuse Base URL
|
||||||
|
yield Label("Langfuse Host (optional)")
|
||||||
|
yield Static(
|
||||||
|
Text("Leave empty for Langfuse Cloud, or set for self-hosted", style="dim"),
|
||||||
|
classes="helper-text",
|
||||||
|
)
|
||||||
|
current_value = getattr(self.env_manager.config, "langfuse_host", "")
|
||||||
|
input_widget = Input(
|
||||||
|
placeholder="https://cloud.langfuse.com",
|
||||||
|
value=current_value,
|
||||||
|
id="input-langfuse_host",
|
||||||
|
)
|
||||||
|
yield input_widget
|
||||||
|
self.inputs["langfuse_host"] = input_widget
|
||||||
yield Static(" ")
|
yield Static(" ")
|
||||||
|
|
||||||
# Other Settings Section
|
# Other Settings Section
|
||||||
|
|
@ -713,6 +765,18 @@ class ConfigScreen(Screen):
|
||||||
if input_widget:
|
if input_widget:
|
||||||
input_widget.password = not input_widget.password
|
input_widget.password = not input_widget.password
|
||||||
event.button.label = "Hide" if not input_widget.password else "Show"
|
event.button.label = "Hide" if not input_widget.password else "Show"
|
||||||
|
elif event.button.id == "toggle-langfuse-secret-key":
|
||||||
|
# Toggle Langfuse secret key visibility
|
||||||
|
input_widget = self.inputs.get("langfuse_secret_key")
|
||||||
|
if input_widget:
|
||||||
|
input_widget.password = not input_widget.password
|
||||||
|
event.button.label = "Hide" if not input_widget.password else "Show"
|
||||||
|
elif event.button.id == "toggle-langfuse-public-key":
|
||||||
|
# Toggle Langfuse public key visibility
|
||||||
|
input_widget = self.inputs.get("langfuse_public_key")
|
||||||
|
if input_widget:
|
||||||
|
input_widget.password = not input_widget.password
|
||||||
|
event.button.label = "Hide" if not input_widget.password else "Show"
|
||||||
|
|
||||||
def action_generate(self) -> None:
|
def action_generate(self) -> None:
|
||||||
"""Generate secure passwords for admin accounts."""
|
"""Generate secure passwords for admin accounts."""
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue