From 23e02d8eb05d32983d5ddec57209aec76d8ed076 Mon Sep 17 00:00:00 2001 From: takatost Date: Tue, 23 Jan 2024 20:31:28 +0800 Subject: [PATCH] feat: remove universal chat app (#2140) --- api/commands.py | 61 ------------------ api/controllers/console/app/app.py | 1 + .../console/universal_chat/audio.py | 62 ------------------- .../console/universal_chat/chat.py | 0 4 files changed, 1 insertion(+), 123 deletions(-) delete mode 100644 api/controllers/console/universal_chat/audio.py delete mode 100644 api/controllers/console/universal_chat/chat.py diff --git a/api/commands.py b/api/commands.py index 1a2af23da2..218fc93ea7 100644 --- a/api/commands.py +++ b/api/commands.py @@ -775,66 +775,6 @@ def add_annotation_question_field_value(): click.echo( click.style(f'Congratulations! add annotation question value successful. Deal count {message_annotation_deal_count}', fg='green')) -@click.command('migrate-universal-chat-to-installed-app', help='Migrate universal chat to installed app.') -@click.option("--batch-size", default=500, help="Number of records to migrate in each batch.") -def migrate_universal_chat_to_installed_app(batch_size): - total_records = db.session.query(App).filter( - App.is_universal == True - ).count() - if total_records == 0: - click.secho("No data to migrate.", fg='green') - return - - num_batches = (total_records + batch_size - 1) // batch_size - - with tqdm(total=total_records, desc="Migrating Data") as pbar: - for i in range(num_batches): - offset = i * batch_size - limit = min(batch_size, total_records - offset) - - click.secho(f"Fetching batch {i + 1}/{num_batches} from source database...", fg='green') - - data_batch: list[App] = db.session.query(App) \ - .filter(App.is_universal == True) \ - .order_by(App.created_at) \ - .offset(offset).limit(limit).all() - - if not data_batch: - click.secho("No more data to migrate.", fg='green') - break - - try: - click.secho(f"Migrating {len(data_batch)} records...", fg='green') - for data in data_batch: - # check if the app is already installed - installed_app = db.session.query(InstalledApp).filter( - InstalledApp.app_id == data.id - ).first() - - if installed_app: - continue - - # insert installed app - installed_app = InstalledApp( - app_id=data.id, - tenant_id=data.tenant_id, - position=0, - app_owner_tenant_id=data.tenant_id, - is_pinned=True, - last_used_at=datetime.datetime.utcnow(), - ) - - db.session.add(installed_app) - - db.session.commit() - - except Exception as e: - click.secho(f"Error while migrating data: {e}, app_id: {data.id}", fg='red') - continue - - click.secho(f"Successfully migrated batch {i + 1}/{num_batches}.", fg='green') - - pbar.update(len(data_batch)) def register_commands(app): app.cli.add_command(reset_password) @@ -851,4 +791,3 @@ def register_commands(app): app.cli.add_command(migrate_default_input_to_dataset_query_variable) app.cli.add_command(add_qdrant_full_text_index) app.cli.add_command(add_annotation_question_field_value) - app.cli.add_command(migrate_universal_chat_to_installed_app) diff --git a/api/controllers/console/app/app.py b/api/controllers/console/app/app.py index fe3f145df1..65366e7855 100644 --- a/api/controllers/console/app/app.py +++ b/api/controllers/console/app/app.py @@ -49,6 +49,7 @@ class AppListApi(Resource): filters = [ App.tenant_id == current_user.current_tenant_id, + App.is_universal == False ] if args['mode'] == 'completion': diff --git a/api/controllers/console/universal_chat/audio.py b/api/controllers/console/universal_chat/audio.py deleted file mode 100644 index 0ef1e4ecee..0000000000 --- a/api/controllers/console/universal_chat/audio.py +++ /dev/null @@ -1,62 +0,0 @@ -# -*- coding:utf-8 -*- -import logging - -import services -from controllers.console import api -from controllers.console.app.error import (AppUnavailableError, AudioTooLargeError, CompletionRequestError, - NoAudioUploadedError, ProviderModelCurrentlyNotSupportError, - ProviderNotInitializeError, ProviderNotSupportSpeechToTextError, - ProviderQuotaExceededError, UnsupportedAudioTypeError) -from controllers.console.universal_chat.wraps import UniversalChatResource -from core.errors.error import ModelCurrentlyNotSupportError, ProviderTokenNotInitError, QuotaExceededError -from core.model_runtime.errors.invoke import InvokeError -from flask import request -from models.model import AppModelConfig -from services.audio_service import AudioService -from services.errors.audio import (AudioTooLargeServiceError, NoAudioUploadedServiceError, - ProviderNotSupportSpeechToTextServiceError, UnsupportedAudioTypeServiceError) -from werkzeug.exceptions import InternalServerError - - -class UniversalChatAudioApi(UniversalChatResource): - def post(self, universal_app): - app_model = universal_app - app_model_config: AppModelConfig = app_model.app_model_config - - if not app_model_config.speech_to_text_dict['enabled']: - raise AppUnavailableError() - - file = request.files['file'] - - try: - response = AudioService.transcript( - tenant_id=app_model.tenant_id, - file=file, - ) - - return response - except services.errors.app_model_config.AppModelConfigBrokenError: - logging.exception("App model config broken.") - raise AppUnavailableError() - except NoAudioUploadedServiceError: - raise NoAudioUploadedError() - except AudioTooLargeServiceError as e: - raise AudioTooLargeError(str(e)) - except UnsupportedAudioTypeServiceError: - raise UnsupportedAudioTypeError() - except ProviderNotSupportSpeechToTextServiceError: - raise ProviderNotSupportSpeechToTextError() - except ProviderTokenNotInitError: - raise ProviderNotInitializeError() - except QuotaExceededError: - raise ProviderQuotaExceededError() - except ModelCurrentlyNotSupportError: - raise ProviderModelCurrentlyNotSupportError() - except InvokeError as e: - raise CompletionRequestError(e.description) - except ValueError as e: - raise e - except Exception as e: - logging.exception("internal server error.") - raise InternalServerError() - diff --git a/api/controllers/console/universal_chat/chat.py b/api/controllers/console/universal_chat/chat.py deleted file mode 100644 index e69de29bb2..0000000000