From 4545f509a598ec433f672d77351da41ea8732a35 Mon Sep 17 00:00:00 2001 From: jyong <718720800@qq.com> Date: Thu, 21 Aug 2025 19:15:16 +0800 Subject: [PATCH] support name generate --- .../rag_pipeline/rag_pipeline_datasets.py | 57 ++++--------------- api/services/dataset_service.py | 26 ++++++--- 2 files changed, 30 insertions(+), 53 deletions(-) diff --git a/api/controllers/console/datasets/rag_pipeline/rag_pipeline_datasets.py b/api/controllers/console/datasets/rag_pipeline/rag_pipeline_datasets.py index f502157eda..8f3daf4716 100644 --- a/api/controllers/console/datasets/rag_pipeline/rag_pipeline_datasets.py +++ b/api/controllers/console/datasets/rag_pipeline/rag_pipeline_datasets.py @@ -14,7 +14,7 @@ from fields.dataset_fields import dataset_detail_fields from libs.login import login_required from models.dataset import DatasetPermissionEnum from services.dataset_service import DatasetPermissionService, DatasetService -from services.entities.knowledge_entities.rag_pipeline_entities import RagPipelineDatasetCreateEntity +from services.entities.knowledge_entities.rag_pipeline_entities import IconInfo, RagPipelineDatasetCreateEntity from services.rag_pipeline.rag_pipeline_dsl_service import RagPipelineDslService @@ -117,52 +117,19 @@ class CreateEmptyRagPipelineDatasetApi(Resource): # The role of the current user in the ta table must be admin, owner, or editor, or dataset_operator if not current_user.is_dataset_editor: raise Forbidden() - - parser = reqparse.RequestParser() - parser.add_argument( - "name", - nullable=False, - required=True, - help="type is required. Name must be between 1 to 40 characters.", - type=_validate_name, - ) - parser.add_argument( - "description", - type=str, - nullable=True, - required=False, - default="", - ) - - parser.add_argument( - "icon_info", - type=dict, - nullable=True, - required=False, - default={}, - ) - - parser.add_argument( - "permission", - type=str, - choices=(DatasetPermissionEnum.ONLY_ME, DatasetPermissionEnum.ALL_TEAM, DatasetPermissionEnum.PARTIAL_TEAM), - nullable=True, - required=False, - default=DatasetPermissionEnum.ONLY_ME, - ) - - parser.add_argument( - "partial_member_list", - type=list, - nullable=True, - required=False, - default=[], - ) - - args = parser.parse_args() dataset = DatasetService.create_empty_rag_pipeline_dataset( tenant_id=current_user.current_tenant_id, - rag_pipeline_dataset_create_entity=RagPipelineDatasetCreateEntity(**args), + rag_pipeline_dataset_create_entity=RagPipelineDatasetCreateEntity( + name="", + description="", + icon_info=IconInfo( + icon="📙", + icon_background="#FFF4ED", + icon_type="emoji", + ), + permission=DatasetPermissionEnum.ONLY_ME, + partial_member_list=None, + ), ) return marshal(dataset, dataset_detail_fields), 201 diff --git a/api/services/dataset_service.py b/api/services/dataset_service.py index 0d2ed1e6b4..79f8efa360 100644 --- a/api/services/dataset_service.py +++ b/api/services/dataset_service.py @@ -15,6 +15,7 @@ from werkzeug.exceptions import NotFound from configs import dify_config from core.errors.error import LLMBadRequestError, ProviderTokenNotInitError +from core.helper.name_generator import generate_incremental_name from core.model_manager import ModelManager from core.model_runtime.entities.model_entities import ModelType from core.plugin.entities.plugin import ModelProviderID @@ -255,14 +256,23 @@ class DatasetService: tenant_id: str, rag_pipeline_dataset_create_entity: RagPipelineDatasetCreateEntity, ): - # check if dataset name already exists - if ( - db.session.query(Dataset) - .filter_by(name=rag_pipeline_dataset_create_entity.name, tenant_id=tenant_id) - .first() - ): - raise DatasetNameDuplicateError( - f"Dataset with name {rag_pipeline_dataset_create_entity.name} already exists." + if rag_pipeline_dataset_create_entity.name: + # check if dataset name already exists + if ( + db.session.query(Dataset) + .filter_by(name=rag_pipeline_dataset_create_entity.name, tenant_id=tenant_id) + .first() + ): + raise DatasetNameDuplicateError( + f"Dataset with name {rag_pipeline_dataset_create_entity.name} already exists." + ) + else: + # generate a random name as Untitled 1 2 3 ... + datasets = db.session.query(Dataset).filter_by(tenant_id=tenant_id).all() + names = [dataset.name for dataset in datasets] + rag_pipeline_dataset_create_entity.name = generate_incremental_name( + names, + "Untitled", ) pipeline = Pipeline(