File size: 3,575 Bytes
026b176
 
 
 
 
 
 
00f58d9
026b176
7cf6d55
 
026b176
7cf6d55
4a30359
7cf6d55
026b176
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4a30359
 
 
ea3503a
026b176
 
4a30359
 
 
 
026b176
 
 
 
4a30359
026b176
 
 
7cf6d55
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b1de12a
7cf6d55
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cbefa53
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#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 "", ""