refactor: reduce logging of SQLite pragmas and enhance model provider type safety (#5235)

* feat: add ModelProvidersDict TypedDict and update MODEL_PROVIDERS_DICT type annotation

- Introduced ModelProvidersDict as a TypedDict to define the structure for model provider configurations.
- Updated MODEL_PROVIDERS_DICT to use the new TypedDict for improved type safety and clarity.
- Enhanced code readability and maintainability by specifying input types for model providers.

* fix: prevent duplicate logging of SQLite pragmas in DatabaseService

- Added a flag to track whether SQLite pragmas have been logged to avoid redundant log entries.
- Improved logging efficiency by ensuring that the debug message for setting pragmas is only logged once per session.
This commit is contained in:
Gabriel Luiz Freitas Almeida 2024-12-13 11:20:55 -03:00 • committed by GitHub
commit c40be15e9b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 16 additions and 3 deletions

View file

@ -1,3 +1,5 @@
from typing_extensions import TypedDict
from langflow.base.models.model import LCModelComponent from langflow.base.models.model import LCModelComponent
from langflow.components.models.amazon_bedrock import AmazonBedrockComponent from langflow.components.models.amazon_bedrock import AmazonBedrockComponent
from langflow.components.models.anthropic import AnthropicModelComponent from langflow.components.models.anthropic import AnthropicModelComponent
@ -5,7 +7,14 @@ from langflow.components.models.azure_openai import AzureChatOpenAIComponent
from langflow.components.models.groq import GroqModel from langflow.components.models.groq import GroqModel
from langflow.components.models.nvidia import NVIDIAModelComponent from langflow.components.models.nvidia import NVIDIAModelComponent
from langflow.components.models.openai import OpenAIModelComponent from langflow.components.models.openai import OpenAIModelComponent
from langflow.inputs.inputs import SecretStrInput from langflow.inputs.inputs import InputTypes, SecretStrInput
class ModelProvidersDict(TypedDict):
fields: dict
inputs: list[InputTypes]
prefix: str
component_class: LCModelComponent
def get_filtered_inputs(component_class): def get_filtered_inputs(component_class):
@ -99,7 +108,7 @@ def _get_amazon_bedrock_inputs_and_fields():
return amazon_bedrock_inputs, create_input_fields_dict(amazon_bedrock_inputs, "") return amazon_bedrock_inputs, create_input_fields_dict(amazon_bedrock_inputs, "")
MODEL_PROVIDERS_DICT = {} MODEL_PROVIDERS_DICT: dict[str, ModelProvidersDict] = {}
# Try to add each provider # Try to add each provider
try: try:
@ -168,5 +177,6 @@ try:
except ImportError: except ImportError:
pass pass
MODEL_PROVIDERS = list(MODEL_PROVIDERS_DICT.keys()) MODEL_PROVIDERS = list(MODEL_PROVIDERS_DICT.keys())
ALL_PROVIDER_FIELDS: list[str] = [field for provider in MODEL_PROVIDERS_DICT.values() for field in provider["fields"]] ALL_PROVIDER_FIELDS: list[str] = [field for provider in MODEL_PROVIDERS_DICT.values() for field in provider["fields"]]

View file

@ -62,6 +62,7 @@ class DatabaseService(Service):
else: else:
# Construct the path using the langflow directory. # Construct the path using the langflow directory.
self.alembic_log_path = Path(langflow_dir) / alembic_log_file self.alembic_log_path = Path(langflow_dir) / alembic_log_file
self._logged_pragma = False
def reload_engine(self) -> None: def reload_engine(self) -> None:
self._sanitize_database_url() self._sanitize_database_url()
@ -122,7 +123,9 @@ class DatabaseService(Service):
pragmas_list = [] pragmas_list = []
for key, val in pragmas.items(): for key, val in pragmas.items():
pragmas_list.append(f"PRAGMA {key} = {val}") pragmas_list.append(f"PRAGMA {key} = {val}")
if not self._logged_pragma:
logger.debug(f"sqlite connection, setting pragmas: {pragmas_list}") logger.debug(f"sqlite connection, setting pragmas: {pragmas_list}")
self._logged_pragma = True
if pragmas_list: if pragmas_list:
cursor = dbapi_connection.cursor() cursor = dbapi_connection.cursor()
try: try: