| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 | import jsonfrom functools import wrapsfrom controllers.console.setup import setup_requiredfrom controllers.console.wraps import account_initialization_requiredfrom extensions.ext_database import dbfrom flask_login import current_userfrom flask_restful import Resourcefrom libs.login import login_requiredfrom models.model import App, AppModelConfigdef universal_chat_app_required(view=None):    def decorator(view):        @wraps(view)        def decorated(*args, **kwargs):            # get universal chat app            universal_app = db.session.query(App).filter(                App.tenant_id == current_user.current_tenant_id,                App.is_universal == True            ).first()            if universal_app is None:                # create universal app if not exists                universal_app = App(                    tenant_id=current_user.current_tenant_id,                    name='Universal Chat',                    mode='chat',                    is_universal=True,                    icon='',                    icon_background='',                    api_rpm=0,                    api_rph=0,                    enable_site=False,                    enable_api=False,                    status='normal'                )                db.session.add(universal_app)                db.session.flush()                app_model_config = AppModelConfig(                    provider="",                    model_id="",                    configs={},                    opening_statement='',                    suggested_questions=json.dumps([]),                    suggested_questions_after_answer=json.dumps({'enabled': True}),                    speech_to_text=json.dumps({'enabled': True}),                    retriever_resource=json.dumps({'enabled': True}),                    more_like_this=None,                    sensitive_word_avoidance=None,                    model=json.dumps({                        "provider": "openai",                        "name": "gpt-3.5-turbo-16k",                        "completion_params": {                            "max_tokens": 800,                            "temperature": 0.8,                            "top_p": 1,                            "presence_penalty": 0,                            "frequency_penalty": 0                        }                    }),                    user_input_form=json.dumps([]),                    pre_prompt='',                    agent_mode=json.dumps({"enabled": True, "strategy": "function_call", "tools": []}),                )                app_model_config.app_id = universal_app.id                db.session.add(app_model_config)                db.session.flush()                universal_app.app_model_config_id = app_model_config.id                db.session.commit()            return view(universal_app, *args, **kwargs)        return decorated    if view:        return decorator(view)    return decoratorclass UniversalChatResource(Resource):    # must be reversed if there are multiple decorators    method_decorators = [universal_chat_app_required, account_initialization_required, login_required, setup_required]
 |