Parcourir la source

fix: add type hints for App model and improve error handling in audio services (#12677)

Signed-off-by: -LAN- <laipz8200@outlook.com>
tags/0.15.1
-LAN- il y a 9 mois
Parent
révision
cb34991663
Aucun compte lié à l'adresse e-mail de l'auteur
2 fichiers modifiés avec 9 ajouts et 3 suppressions
  1. 6
    2
      api/controllers/console/app/audio.py
  2. 3
    1
      api/services/audio_service.py

+ 6
- 2
api/controllers/console/app/audio.py Voir le fichier

from core.errors.error import ModelCurrentlyNotSupportError, ProviderTokenNotInitError, QuotaExceededError from core.errors.error import ModelCurrentlyNotSupportError, ProviderTokenNotInitError, QuotaExceededError
from core.model_runtime.errors.invoke import InvokeError from core.model_runtime.errors.invoke import InvokeError
from libs.login import login_required from libs.login import login_required
from models.model import AppMode
from models import App, AppMode
from services.audio_service import AudioService from services.audio_service import AudioService
from services.errors.audio import ( from services.errors.audio import (
AudioTooLargeServiceError, AudioTooLargeServiceError,
@login_required @login_required
@account_initialization_required @account_initialization_required
@get_app_model @get_app_model
def post(self, app_model):
def post(self, app_model: App):
from werkzeug.exceptions import InternalServerError from werkzeug.exceptions import InternalServerError


try: try:
and app_model.workflow.features_dict and app_model.workflow.features_dict
): ):
text_to_speech = app_model.workflow.features_dict.get("text_to_speech") text_to_speech = app_model.workflow.features_dict.get("text_to_speech")
if text_to_speech is None:
raise ValueError("TTS is not enabled")
voice = args.get("voice") or text_to_speech.get("voice") voice = args.get("voice") or text_to_speech.get("voice")
else: else:
try: try:
if app_model.app_model_config is None:
raise ValueError("AppModelConfig not found")
voice = args.get("voice") or app_model.app_model_config.text_to_speech_dict.get("voice") voice = args.get("voice") or app_model.app_model_config.text_to_speech_dict.get("voice")
except Exception: except Exception:
voice = None voice = None

+ 3
- 1
api/services/audio_service.py Voir le fichier

from app import app from app import app
from extensions.ext_database import db from extensions.ext_database import db


def invoke_tts(text_content: str, app_model, voice: Optional[str] = None):
def invoke_tts(text_content: str, app_model: App, voice: Optional[str] = None):
with app.app_context(): with app.app_context():
if app_model.mode in {AppMode.ADVANCED_CHAT.value, AppMode.WORKFLOW.value}: if app_model.mode in {AppMode.ADVANCED_CHAT.value, AppMode.WORKFLOW.value}:
workflow = app_model.workflow workflow = app_model.workflow


voice = features_dict["text_to_speech"].get("voice") if voice is None else voice voice = features_dict["text_to_speech"].get("voice") if voice is None else voice
else: else:
if app_model.app_model_config is None:
raise ValueError("AppModelConfig not found")
text_to_speech_dict = app_model.app_model_config.text_to_speech_dict text_to_speech_dict = app_model.app_model_config.text_to_speech_dict


if not text_to_speech_dict.get("enabled"): if not text_to_speech_dict.get("enabled"):

Chargement…
Annuler
Enregistrer