add features update api

refactor app model config validation
This commit is contained in:
takatost
2024-02-28 22:16:24 +08:00
parent cf9d2965bf
commit 9b1afb68eb
26 changed files with 1115 additions and 531 deletions

View File

@ -2,7 +2,7 @@ import json
from flask import request
from flask_login import current_user
from flask_restful import Resource
from flask_restful import Resource, reqparse
from controllers.console import api
from controllers.console.app.wraps import get_app_model
@ -14,7 +14,7 @@ from core.tools.utils.configuration import ToolParameterConfigurationManager
from events.app_event import app_model_config_was_updated
from extensions.ext_database import db
from libs.login import login_required
from models.model import AppModelConfig
from models.model import AppModelConfig, AppMode
from services.app_model_config_service import AppModelConfigService
@ -23,15 +23,14 @@ class ModelConfigResource(Resource):
@setup_required
@login_required
@account_initialization_required
@get_app_model
@get_app_model(mode=[AppMode.AGENT_CHAT, AppMode.CHAT, AppMode.COMPLETION])
def post(self, app_model):
"""Modify app model config"""
# validate config
model_configuration = AppModelConfigService.validate_configuration(
tenant_id=current_user.current_tenant_id,
account=current_user,
config=request.json,
app_mode=app_model.mode
app_mode=AppMode.value_of(app_model.mode)
)
new_app_model_config = AppModelConfig(
@ -129,4 +128,38 @@ class ModelConfigResource(Resource):
return {'result': 'success'}
class FeaturesResource(Resource):
@setup_required
@login_required
@account_initialization_required
@get_app_model(mode=[AppMode.ADVANCED_CHAT, AppMode.WORKFLOW])
def put(self, app_model):
"""Get app features"""
parser = reqparse.RequestParser()
parser.add_argument('features', type=dict, required=True, nullable=False, location='json')
args = parser.parse_args()
model_configuration = AppModelConfigService.validate_features(
tenant_id=current_user.current_tenant_id,
config=args.get('features'),
app_mode=AppMode.value_of(app_model.mode)
)
# update config
app_model_config = app_model.app_model_config
app_model_config.from_model_config_dict(model_configuration)
db.session.commit()
app_model_config_was_updated.send(
app_model,
app_model_config=app_model_config
)
return {
'result': 'success'
}
api.add_resource(ModelConfigResource, '/apps/<uuid:app_id>/model-config')
api.add_resource(FeaturesResource, '/apps/<uuid:app_id>/features')