crazywoola 8 місяців тому
батько
коміт
4d4af00399

+ 11 - 8
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."""

+ 5 - 2
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(