diff --git a/api/controllers/service_api/dataset/segment.py b/api/controllers/service_api/dataset/segment.py index 0849eb72ba..0fa2aa65b2 100644 --- a/api/controllers/service_api/dataset/segment.py +++ b/api/controllers/service_api/dataset/segment.py @@ -53,19 +53,22 @@ class SegmentApi(DatasetApiResource): raise ProviderNotInitializeError( "No Embedding Model available. Please configure a valid provider " "in the Settings -> Model Provider.") - except ProviderTokenNotInitError as ex: + except ProviderTokenNotInitError as ex: raise ProviderNotInitializeError(ex.description) # validate args parser = reqparse.RequestParser() parser.add_argument('segments', type=list, required=False, nullable=True, location='json') args = parser.parse_args() - for args_item in args['segments']: - SegmentService.segment_create_args_validate(args_item, document) - segments = SegmentService.multi_create_segment(args['segments'], document, dataset) - return { - 'data': marshal(segments, segment_fields), - 'doc_form': document.doc_form - }, 200 + if args['segments'] is not None: + for args_item in args['segments']: + SegmentService.segment_create_args_validate(args_item, document) + segments = SegmentService.multi_create_segment(args['segments'], document, dataset) + return { + 'data': marshal(segments, segment_fields), + 'doc_form': document.doc_form + }, 200 + else: + return {"error": "Segemtns is required"}, 400 def get(self, tenant_id, dataset_id, document_id): """Create single segment.""" diff --git a/api/services/dataset_service.py b/api/services/dataset_service.py index 9052a0b785..12ae0e39a8 100644 --- a/api/services/dataset_service.py +++ b/api/services/dataset_service.py @@ -1429,7 +1429,10 @@ class SegmentService: segment_data_list.append(segment_document) pre_segment_data_list.append(segment_document) - keywords_list.append(segment_item['keywords']) + if 'keywords' in segment_item: + keywords_list.append(segment_item['keywords']) + else: + keywords_list.append(None) try: # save vector index @@ -1482,7 +1485,7 @@ class SegmentService: db.session.add(segment) db.session.commit() # update segment index task - if args['keywords']: + if 'keywords' in args: keyword = Keyword(dataset) keyword.delete_by_ids([segment.index_node_id]) document = RAGDocument(