fix: settings now can be set from cli

This commit is contained in:
Gabriel Almeida 2023-03-30 18:09:12 -03:00
commit 7c86f38fb3
2 changed files with 34 additions and 12 deletions

View file

@ -2,6 +2,7 @@ import logging
import multiprocessing
import platform
from pathlib import Path
from langflow.settings import settings
import typer
from fastapi.staticfiles import StaticFiles
@ -17,9 +18,20 @@ def get_number_of_workers(workers=None):
return workers
def update_settings(config: str):
"""Update the settings from a config file."""
if config:
settings.update_from_yaml(config)
def serve(
host: str = "127.0.0.1", workers: int = 1, timeout: int = 60, port: int = 7860
host: str = "127.0.0.1",
workers: int = 1,
timeout: int = 60,
port: int = 7860,
config: str = "config.yaml",
):
update_settings(config)
app = create_app()
# get the directory of the current file
path = Path(__file__).parent

View file

@ -2,28 +2,39 @@ import os
from typing import List
import yaml
from pydantic import BaseSettings, Field, root_validator
from pydantic import BaseSettings, root_validator
class Settings(BaseSettings):
chains: List[str] = Field(default=[])
agents: List[str] = Field(default=[])
prompts: List[str] = Field(default=[])
llms: List[str] = Field(default=[])
tools: List[str] = Field(default=[])
memories: List[str] = Field(default=[])
dev: bool = Field(default=False)
chains: List[str] = []
agents: List[str] = []
prompts: List[str] = []
llms: List[str] = []
tools: List[str] = []
memories: List[str] = []
dev: bool = False
class Config:
validate_assignment = True
extra = "ignore"
@root_validator
@root_validator(allow_reuse=True)
def validate_lists(cls, values):
for key, value in values.items():
if key != "dev" and not value:
values[key] = []
return values
def update_from_yaml(self, file_path: str):
new_settings = load_settings_from_yaml(file_path)
self.chains = new_settings.chains or []
self.agents = new_settings.agents or []
self.prompts = new_settings.prompts or []
self.llms = new_settings.llms or []
self.tools = new_settings.tools or []
self.memories = new_settings.memories or []
self.dev = new_settings.dev or False
def save_settings_to_yaml(settings: Settings, file_path: str):
with open(file_path, "w") as f:
@ -41,9 +52,8 @@ def load_settings_from_yaml(file_path: str) -> Settings:
with open(file_path, "r") as f:
settings_dict = yaml.safe_load(f)
a = Settings.parse_obj(settings_dict)
return a
return Settings(**settings_dict)
settings = load_settings_from_yaml("config.yaml")