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 "", "" | |