Spaces:
Paused
Paused
| #coding: utf-8 | |
| import re | |
| from os import getenv | |
| #from typing import Any | |
| #from typing import Dict | |
| #from typing import IO | |
| from typing import List | |
| from typing import Optional | |
| from typing import Tuple | |
| from typing import Union | |
| from core.files import load_ui_language | |
| from core.files import read_file | |
| from core.demorrha import DemorrhaAssistant | |
| from var_app import GlobalSystemPrompts | |
| import streamlit as st | |
| from openai import OpenAI | |
| from dotenv import load_dotenv | |
| # Charger les variables d'environnement depuis le fichier .env | |
| load_dotenv() | |
| class uiLang: | |
| # Dictionary to store translations | |
| translations = load_ui_language() | |
| translations=uiLang.translations | |
| client = OpenAI(api_key=getenv("OPENAI_API_KEY")) | |
| def get_translation(key: str) -> str: | |
| """ | |
| Obtient la traduction pour une clé donnée basée sur la langue d'interface sélectionnée. | |
| """ | |
| lang = st.session_state.get('interface_language', 'English') | |
| return translations.get(lang, {}).get(key, key) | |
| def process_message( | |
| message: str, | |
| operation_prompt_: Optional[str] = "", | |
| system_prompt_: Optional[str] = "" | |
| ): | |
| """ | |
| Traite les messages des utilisateurs et génère une réponse. | |
| Args: | |
| message (str): Le message d'entrée de l'utilisateur. | |
| operation_prompt (str, optional): Prompt supplémentaire pour l'opération. Par défaut "". | |
| tts_enabled (bool, optional): Si la synthèse vocale est activée. Par défaut False. | |
| """ | |
| demorrha = DemorrhaAssistant() | |
| demorrha.load_assistant("Demorrha") | |
| demorrha.set_payload(f"{message}", f"{operation_prompt_}") | |
| st.session_state["full_response"] = "" | |
| try: | |
| response_generator = demorrha.use_assistant() | |
| for response in response_generator: | |
| st.session_state.full_response = response | |
| yield st.session_state.full_response | |
| # Utiliser regex pour supprimer les trois premiers et derniers guillemets doubles | |
| st.session_state.full_response = re.sub(r'^"{3}|"{3}$', '', st.session_state.full_response.strip()) | |
| st.session_state.messages = [] | |
| yield st.session_state.full_response | |
| except Exception as e: | |
| st.error(f"Une erreur s'est produite lors de la génération de la réponse : {e}") | |
| return "" | |
| # Function to configure the translation mode | |
| def set_translation_mode(from_lang: str, dest_lang: str) -> Tuple[str, str]: | |
| """ | |
| Configure les prompts globaux pour le mode de traduction. | |
| Args: | |
| from_lang (str): La langue source. | |
| dest_lang (str): La langue de destination. | |
| Returns: | |
| Tuple[str, str]: Un tuple contenant le prompt système et le prompt d'opération. | |
| """ | |
| system_prompt_ = GlobalSystemPrompts.linguascribe() | |
| operation_prompt_ = f"Translate({from_lang} to {dest_lang})" | |
| return system_prompt_, operation_prompt_ | |
| def init_process_mode( | |
| from_lang: str, | |
| to_lang: str, | |
| process_mode: Optional[ Union[str, List[str]]] = "translator" | |
| ) -> Tuple[str, str]: | |
| """ | |
| Initialise le mode de traitement pour la traduction si nécessaire. | |
| Returns: | |
| Tuple[str, str]: Un tuple contenant le prompt système et le prompt d'opération. | |
| """ | |
| # from (e.g.: st.session_state.language_detected) | |
| # dest (e.g.: st.session_state.target_language) | |
| if "translator" in process_mode: | |
| system_prompt, operation_prompt = set_translation_mode( | |
| from_lang=f"{from_lang}", | |
| dest_lang=f"{to_lang}" | |
| ) | |
| return system_prompt, operation_prompt | |
| return "", "" | |