mirror of
https://github.com/langgenius/dify.git
synced 2025-12-19 22:28:46 +00:00
feat: add segments max number limit for SegmentApi.post (#27745)
This commit is contained in:
@@ -608,3 +608,6 @@ SWAGGER_UI_PATH=/swagger-ui.html
|
|||||||
# Whether to encrypt dataset IDs when exporting DSL files (default: true)
|
# Whether to encrypt dataset IDs when exporting DSL files (default: true)
|
||||||
# Set to false to export dataset IDs as plain text for easier cross-environment import
|
# Set to false to export dataset IDs as plain text for easier cross-environment import
|
||||||
DSL_EXPORT_ENCRYPT_DATASET_ID=true
|
DSL_EXPORT_ENCRYPT_DATASET_ID=true
|
||||||
|
|
||||||
|
# Maximum number of segments for dataset segments API (0 for unlimited)
|
||||||
|
DATASET_MAX_SEGMENTS_PER_REQUEST=0
|
||||||
|
|||||||
@@ -920,6 +920,11 @@ class DataSetConfig(BaseSettings):
|
|||||||
default=True,
|
default=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
DATASET_MAX_SEGMENTS_PER_REQUEST: NonNegativeInt = Field(
|
||||||
|
description="Maximum number of segments for dataset segments API (0 for unlimited)",
|
||||||
|
default=0,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class WorkspaceConfig(BaseSettings):
|
class WorkspaceConfig(BaseSettings):
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ from flask import request
|
|||||||
from flask_restx import marshal, reqparse
|
from flask_restx import marshal, reqparse
|
||||||
from werkzeug.exceptions import NotFound
|
from werkzeug.exceptions import NotFound
|
||||||
|
|
||||||
|
from configs import dify_config
|
||||||
from controllers.service_api import service_api_ns
|
from controllers.service_api import service_api_ns
|
||||||
from controllers.service_api.app.error import ProviderNotInitializeError
|
from controllers.service_api.app.error import ProviderNotInitializeError
|
||||||
from controllers.service_api.wraps import (
|
from controllers.service_api.wraps import (
|
||||||
@@ -107,6 +108,10 @@ class SegmentApi(DatasetApiResource):
|
|||||||
# validate args
|
# validate args
|
||||||
args = segment_create_parser.parse_args()
|
args = segment_create_parser.parse_args()
|
||||||
if args["segments"] is not None:
|
if args["segments"] is not None:
|
||||||
|
segments_limit = dify_config.DATASET_MAX_SEGMENTS_PER_REQUEST
|
||||||
|
if segments_limit > 0 and len(args["segments"]) > segments_limit:
|
||||||
|
raise ValueError(f"Exceeded maximum segments limit of {segments_limit}.")
|
||||||
|
|
||||||
for args_item in args["segments"]:
|
for args_item in args["segments"]:
|
||||||
SegmentService.segment_create_args_validate(args_item, document)
|
SegmentService.segment_create_args_validate(args_item, document)
|
||||||
segments = SegmentService.multi_create_segment(args["segments"], document, dataset)
|
segments = SegmentService.multi_create_segment(args["segments"], document, dataset)
|
||||||
|
|||||||
@@ -1351,6 +1351,9 @@ SWAGGER_UI_PATH=/swagger-ui.html
|
|||||||
# Set to false to export dataset IDs as plain text for easier cross-environment import
|
# Set to false to export dataset IDs as plain text for easier cross-environment import
|
||||||
DSL_EXPORT_ENCRYPT_DATASET_ID=true
|
DSL_EXPORT_ENCRYPT_DATASET_ID=true
|
||||||
|
|
||||||
|
# Maximum number of segments for dataset segments API (0 for unlimited)
|
||||||
|
DATASET_MAX_SEGMENTS_PER_REQUEST=0
|
||||||
|
|
||||||
# Celery schedule tasks configuration
|
# Celery schedule tasks configuration
|
||||||
ENABLE_CLEAN_EMBEDDING_CACHE_TASK=false
|
ENABLE_CLEAN_EMBEDDING_CACHE_TASK=false
|
||||||
ENABLE_CLEAN_UNUSED_DATASETS_TASK=false
|
ENABLE_CLEAN_UNUSED_DATASETS_TASK=false
|
||||||
|
|||||||
@@ -603,6 +603,7 @@ x-shared-env: &shared-api-worker-env
|
|||||||
SWAGGER_UI_ENABLED: ${SWAGGER_UI_ENABLED:-true}
|
SWAGGER_UI_ENABLED: ${SWAGGER_UI_ENABLED:-true}
|
||||||
SWAGGER_UI_PATH: ${SWAGGER_UI_PATH:-/swagger-ui.html}
|
SWAGGER_UI_PATH: ${SWAGGER_UI_PATH:-/swagger-ui.html}
|
||||||
DSL_EXPORT_ENCRYPT_DATASET_ID: ${DSL_EXPORT_ENCRYPT_DATASET_ID:-true}
|
DSL_EXPORT_ENCRYPT_DATASET_ID: ${DSL_EXPORT_ENCRYPT_DATASET_ID:-true}
|
||||||
|
DATASET_MAX_SEGMENTS_PER_REQUEST: ${DATASET_MAX_SEGMENTS_PER_REQUEST:-0}
|
||||||
ENABLE_CLEAN_EMBEDDING_CACHE_TASK: ${ENABLE_CLEAN_EMBEDDING_CACHE_TASK:-false}
|
ENABLE_CLEAN_EMBEDDING_CACHE_TASK: ${ENABLE_CLEAN_EMBEDDING_CACHE_TASK:-false}
|
||||||
ENABLE_CLEAN_UNUSED_DATASETS_TASK: ${ENABLE_CLEAN_UNUSED_DATASETS_TASK:-false}
|
ENABLE_CLEAN_UNUSED_DATASETS_TASK: ${ENABLE_CLEAN_UNUSED_DATASETS_TASK:-false}
|
||||||
ENABLE_CREATE_TIDB_SERVERLESS_TASK: ${ENABLE_CREATE_TIDB_SERVERLESS_TASK:-false}
|
ENABLE_CREATE_TIDB_SERVERLESS_TASK: ${ENABLE_CREATE_TIDB_SERVERLESS_TASK:-false}
|
||||||
|
|||||||
Reference in New Issue
Block a user