remove description

This commit is contained in:
jyong 2024-09-24 23:32:23 +08:00
parent a53b4fb2ff
commit a258f8dfdf
6 changed files with 160 additions and 80 deletions

View File

@ -234,6 +234,33 @@ class DatasetApi(Resource):
) )
parser.add_argument("retrieval_model", type=dict, location="json", help="Invalid retrieval model.") parser.add_argument("retrieval_model", type=dict, location="json", help="Invalid retrieval model.")
parser.add_argument("partial_member_list", type=list, location="json", help="Invalid parent user list.") parser.add_argument("partial_member_list", type=list, location="json", help="Invalid parent user list.")
parser.add_argument(
"external_retrieval_model",
type=dict,
required=False,
nullable=True,
location="json",
help="Invalid external retrieval model.",
)
parser.add_argument(
"external_knowledge_id",
type=str,
required=False,
nullable=True,
location="json",
help="Invalid external knowledge id.",
)
parser.add_argument(
"external_knowledge_api_id",
type=str,
required=False,
nullable=True,
location="json",
help="Invalid external knowledge api id.",
)
args = parser.parse_args() args = parser.parse_args()
data = request.get_json() data = request.get_json()

View File

@ -152,7 +152,9 @@ class ExternalApiUseCheckApi(Resource):
def get(self, external_knowledge_api_id): def get(self, external_knowledge_api_id):
external_knowledge_api_id = str(external_knowledge_api_id) external_knowledge_api_id = str(external_knowledge_api_id)
external_api_template_is_using, count = ExternalDatasetService.external_api_template_use_check(external_knowledge_api_id) external_api_template_is_using, count = ExternalDatasetService.external_api_template_use_check(
external_knowledge_api_id
)
return {"is_using": external_api_template_is_using, "count": count}, 200 return {"is_using": external_api_template_is_using, "count": count}, 200

View File

@ -112,11 +112,7 @@ class DatasetRetrieval:
continue continue
# pass if dataset is not available # pass if dataset is not available
if ( if dataset and dataset.available_document_count == 0 and dataset.provider != "external":
dataset
and dataset.available_document_count == 0
and dataset.provider != "external"
):
continue continue
available_datasets.append(dataset) available_datasets.append(dataset)

View File

@ -41,6 +41,13 @@ dataset_retrieval_model_fields = {
tag_fields = {"id": fields.String, "name": fields.String, "type": fields.String} tag_fields = {"id": fields.String, "name": fields.String, "type": fields.String}
external_knowledge_info_fields = {
"external_knowledge_id": fields.String,
"external_knowledge_api_id": fields.String,
"external_knowledge_api_name": fields.String,
"external_knowledge_api_endpoint": fields.String,
}
dataset_detail_fields = { dataset_detail_fields = {
"id": fields.String, "id": fields.String,
"name": fields.String, "name": fields.String,
@ -61,6 +68,7 @@ dataset_detail_fields = {
"embedding_available": fields.Boolean, "embedding_available": fields.Boolean,
"retrieval_model_dict": fields.Nested(dataset_retrieval_model_fields), "retrieval_model_dict": fields.Nested(dataset_retrieval_model_fields),
"tags": fields.List(fields.Nested(tag_fields)), "tags": fields.List(fields.Nested(tag_fields)),
"external_knowledge_info": fields.Nested(external_knowledge_info_fields),
} }
dataset_query_detail_fields = { dataset_query_detail_fields = {

View File

@ -171,6 +171,29 @@ class Dataset(db.Model):
return tags or [] return tags or []
@property
def external_knowledge_info(self):
if self.provider != "external":
return None
external_knowledge_binding = (
db.session.query(ExternalKnowledgeBindings).filter(ExternalKnowledgeBindings.dataset_id == self.id).first()
)
if not external_knowledge_binding:
return None
external_api_template = (
db.session.query(ExternalApiTemplates)
.filter(ExternalApiTemplates.id == external_knowledge_binding.external_api_template_id)
.first()
)
if not external_api_template:
return None
return {
"external_knowledge_id": external_knowledge_binding.external_knowledge_id,
"external_knowledge_api_id": external_api_template.id,
"external_knowledge_api_name": external_api_template.name,
"external_knowledge_api_endpoint": json.loads(external_api_template.settings).get("endpoint", ""),
}
@staticmethod @staticmethod
def gen_collection_name_by_id(dataset_id: str) -> str: def gen_collection_name_by_id(dataset_id: str) -> str:
normalized_dataset_id = dataset_id.replace("-", "_") normalized_dataset_id = dataset_id.replace("-", "_")
@ -737,18 +760,20 @@ class ExternalApiTemplates(db.Model):
@property @property
def dataset_bindings(self): def dataset_bindings(self):
external_knowledge_bindings = db.session.query(ExternalKnowledgeBindings).filter(ExternalKnowledgeBindings.external_api_template_id == self.id).all() external_knowledge_bindings = (
db.session.query(ExternalKnowledgeBindings)
.filter(ExternalKnowledgeBindings.external_api_template_id == self.id)
.all()
)
dataset_ids = [binding.dataset_id for binding in external_knowledge_bindings] dataset_ids = [binding.dataset_id for binding in external_knowledge_bindings]
datasets = db.session.query(Dataset).filter(Dataset.id.in_(dataset_ids)).all() datasets = db.session.query(Dataset).filter(Dataset.id.in_(dataset_ids)).all()
dataset_bindings = [] dataset_bindings = []
for dataset in datasets: for dataset in datasets:
dataset_bindings.append({ dataset_bindings.append({"id": dataset.id, "name": dataset.name})
"id": dataset.id,
"name": dataset.name
})
return dataset_bindings return dataset_bindings
class ExternalKnowledgeBindings(db.Model): class ExternalKnowledgeBindings(db.Model):
__tablename__ = "external_knowledge_bindings" __tablename__ = "external_knowledge_bindings"
__table_args__ = ( __table_args__ = (

View File

@ -184,7 +184,7 @@ class DatasetService:
return dataset return dataset
@staticmethod @staticmethod
def get_dataset(dataset_id): def get_dataset(dataset_id) -> Dataset:
return Dataset.query.filter_by(id=dataset_id).first() return Dataset.query.filter_by(id=dataset_id).first()
@staticmethod @staticmethod
@ -225,10 +225,32 @@ class DatasetService:
@staticmethod @staticmethod
def update_dataset(dataset_id, data, user): def update_dataset(dataset_id, data, user):
dataset = DatasetService.get_dataset(dataset_id)
DatasetService.check_dataset_permission(dataset, user)
if dataset.provider == "external":
dataset.retrieval_model = data.get("external_retrieval_model", None)
dataset.name = data.get("name", dataset.name)
dataset.description = data.get("description", "")
external_knowledge_id = data.get("external_knowledge_id", None)
db.session.add(dataset)
if not external_knowledge_id:
raise ValueError("External knowledge id is required.")
external_knowledge_api_id = data.get("external_knowledge_api_id", None)
if not external_knowledge_api_id:
raise ValueError("External knowledge api id is required.")
external_knowledge_binding = ExternalKnowledgeBindings.query.filter_by(dataset_id=dataset_id).first()
if (
external_knowledge_binding.external_knowledge_id != external_knowledge_id
or external_knowledge_binding.external_knowledge_api_id != external_knowledge_api_id
):
external_knowledge_binding.external_knowledge_id = external_knowledge_id
external_knowledge_binding.external_knowledge_api_id = external_knowledge_api_id
db.session.add(external_knowledge_binding)
db.session.commit()
else:
data.pop("partial_member_list", None) data.pop("partial_member_list", None)
filtered_data = {k: v for k, v in data.items() if v is not None or k == "description"} filtered_data = {k: v for k, v in data.items() if v is not None or k == "description"}
dataset = DatasetService.get_dataset(dataset_id)
DatasetService.check_dataset_permission(dataset, user)
action = None action = None
if dataset.indexing_technique != data["indexing_technique"]: if dataset.indexing_technique != data["indexing_technique"]:
# if update indexing_technique # if update indexing_technique