mirror of
https://git.mirrors.martin98.com/https://github.com/langgenius/dify.git
synced 2025-08-14 12:56:01 +08:00
fix update dataset failed when embedding model is not exist (#6920)
This commit is contained in:
parent
4d0a6cc382
commit
048bc4c06e
@ -189,8 +189,6 @@ class DatasetApi(Resource):
|
|||||||
dataset = DatasetService.get_dataset(dataset_id_str)
|
dataset = DatasetService.get_dataset(dataset_id_str)
|
||||||
if dataset is None:
|
if dataset is None:
|
||||||
raise NotFound("Dataset not found.")
|
raise NotFound("Dataset not found.")
|
||||||
# check user's model setting
|
|
||||||
DatasetService.check_dataset_model_setting(dataset)
|
|
||||||
|
|
||||||
parser = reqparse.RequestParser()
|
parser = reqparse.RequestParser()
|
||||||
parser.add_argument('name', nullable=False,
|
parser.add_argument('name', nullable=False,
|
||||||
@ -215,6 +213,13 @@ class DatasetApi(Resource):
|
|||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
data = request.get_json()
|
data = request.get_json()
|
||||||
|
|
||||||
|
# check embedding model setting
|
||||||
|
if data.get('indexing_technique') == 'high_quality':
|
||||||
|
DatasetService.check_embedding_model_setting(dataset.tenant_id,
|
||||||
|
data.get('embedding_model_provider'),
|
||||||
|
data.get('embedding_model')
|
||||||
|
)
|
||||||
|
|
||||||
# The role of the current user in the ta table must be admin, owner, editor, or dataset_operator
|
# The role of the current user in the ta table must be admin, owner, editor, or dataset_operator
|
||||||
DatasetPermissionService.check_permission(
|
DatasetPermissionService.check_permission(
|
||||||
current_user, dataset, data.get('permission'), data.get('partial_member_list')
|
current_user, dataset, data.get('permission'), data.get('partial_member_list')
|
||||||
|
@ -197,6 +197,28 @@ class DatasetService:
|
|||||||
f"{ex.description}"
|
f"{ex.description}"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def check_embedding_model_setting(tenant_id: str, embedding_model_provider: str, embedding_model:str):
|
||||||
|
try:
|
||||||
|
model_manager = ModelManager()
|
||||||
|
model_manager.get_model_instance(
|
||||||
|
tenant_id=tenant_id,
|
||||||
|
provider=embedding_model_provider,
|
||||||
|
model_type=ModelType.TEXT_EMBEDDING,
|
||||||
|
model=embedding_model
|
||||||
|
)
|
||||||
|
except LLMBadRequestError:
|
||||||
|
raise ValueError(
|
||||||
|
"No Embedding Model available. Please configure a valid provider "
|
||||||
|
"in the Settings -> Model Provider."
|
||||||
|
)
|
||||||
|
except ProviderTokenNotInitError as ex:
|
||||||
|
raise ValueError(
|
||||||
|
f"The dataset in unavailable, due to: "
|
||||||
|
f"{ex.description}"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def update_dataset(dataset_id, data, user):
|
def update_dataset(dataset_id, data, user):
|
||||||
data.pop('partial_member_list', None)
|
data.pop('partial_member_list', None)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user