| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 | import jsonfrom functools import wrapsfrom flask_login import current_userfrom libs.login import login_requiredfrom flask_restful import Resourcefrom controllers.console.setup import setup_requiredfrom controllers.console.wraps import account_initialization_requiredfrom extensions.ext_database import dbfrom 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]
 |