From a51ced0a4f2c377fb980526b9364a6f5fee406e8 Mon Sep 17 00:00:00 2001 From: Xiangxuan Qu Date: Mon, 26 Jan 2026 15:50:14 +0900 Subject: [PATCH] refactor: pass BaseModel instances instead of dict (#31514) Co-authored-by: fghpdf Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> --- api/services/app_dsl_service.py | 9 +++++---- .../rag_pipeline/rag_pipeline_dsl_service.py | 9 +++++---- .../rag_pipeline/rag_pipeline_transform_service.py | 14 +++++++++----- 3 files changed, 19 insertions(+), 13 deletions(-) diff --git a/api/services/app_dsl_service.py b/api/services/app_dsl_service.py index da22464d39..edcb2a7870 100644 --- a/api/services/app_dsl_service.py +++ b/api/services/app_dsl_service.py @@ -781,15 +781,16 @@ class AppDslService: return dependencies @classmethod - def get_leaked_dependencies(cls, tenant_id: str, dsl_dependencies: list[dict]) -> list[PluginDependency]: + def get_leaked_dependencies( + cls, tenant_id: str, dsl_dependencies: list[PluginDependency] + ) -> list[PluginDependency]: """ Returns the leaked dependencies in current workspace """ - dependencies = [PluginDependency.model_validate(dep) for dep in dsl_dependencies] - if not dependencies: + if not dsl_dependencies: return [] - return DependenciesAnalysisService.get_leaked_dependencies(tenant_id=tenant_id, dependencies=dependencies) + return DependenciesAnalysisService.get_leaked_dependencies(tenant_id=tenant_id, dependencies=dsl_dependencies) @staticmethod def _generate_aes_key(tenant_id: str) -> bytes: diff --git a/api/services/rag_pipeline/rag_pipeline_dsl_service.py b/api/services/rag_pipeline/rag_pipeline_dsl_service.py index 06f294863d..c1c6e204fb 100644 --- a/api/services/rag_pipeline/rag_pipeline_dsl_service.py +++ b/api/services/rag_pipeline/rag_pipeline_dsl_service.py @@ -870,15 +870,16 @@ class RagPipelineDslService: return dependencies @classmethod - def get_leaked_dependencies(cls, tenant_id: str, dsl_dependencies: list[dict]) -> list[PluginDependency]: + def get_leaked_dependencies( + cls, tenant_id: str, dsl_dependencies: list[PluginDependency] + ) -> list[PluginDependency]: """ Returns the leaked dependencies in current workspace """ - dependencies = [PluginDependency.model_validate(dep) for dep in dsl_dependencies] - if not dependencies: + if not dsl_dependencies: return [] - return DependenciesAnalysisService.get_leaked_dependencies(tenant_id=tenant_id, dependencies=dependencies) + return DependenciesAnalysisService.get_leaked_dependencies(tenant_id=tenant_id, dependencies=dsl_dependencies) def _generate_aes_key(self, tenant_id: str) -> bytes: """Generate AES key based on tenant_id""" diff --git a/api/services/rag_pipeline/rag_pipeline_transform_service.py b/api/services/rag_pipeline/rag_pipeline_transform_service.py index 84f97907c0..8ea365e907 100644 --- a/api/services/rag_pipeline/rag_pipeline_transform_service.py +++ b/api/services/rag_pipeline/rag_pipeline_transform_service.py @@ -44,7 +44,7 @@ class RagPipelineTransformService: doc_form = dataset.doc_form if not doc_form: return self._transform_to_empty_pipeline(dataset) - retrieval_model = dataset.retrieval_model + retrieval_model = RetrievalSetting.model_validate(dataset.retrieval_model) if dataset.retrieval_model else None pipeline_yaml = self._get_transform_yaml(doc_form, datasource_type, indexing_technique) # deal dependencies self._deal_dependencies(pipeline_yaml, dataset.tenant_id) @@ -154,7 +154,12 @@ class RagPipelineTransformService: return node def _deal_knowledge_index( - self, dataset: Dataset, doc_form: str, indexing_technique: str | None, retrieval_model: dict, node: dict + self, + dataset: Dataset, + doc_form: str, + indexing_technique: str | None, + retrieval_model: RetrievalSetting | None, + node: dict, ): knowledge_configuration_dict = node.get("data", {}) knowledge_configuration = KnowledgeConfiguration.model_validate(knowledge_configuration_dict) @@ -163,10 +168,9 @@ class RagPipelineTransformService: knowledge_configuration.embedding_model = dataset.embedding_model knowledge_configuration.embedding_model_provider = dataset.embedding_model_provider if retrieval_model: - retrieval_setting = RetrievalSetting.model_validate(retrieval_model) if indexing_technique == "economy": - retrieval_setting.search_method = RetrievalMethod.KEYWORD_SEARCH - knowledge_configuration.retrieval_model = retrieval_setting + retrieval_model.search_method = RetrievalMethod.KEYWORD_SEARCH + knowledge_configuration.retrieval_model = retrieval_model else: dataset.retrieval_model = knowledge_configuration.retrieval_model.model_dump()