demorrha / core /core.py
ImPolymath's picture
update process_message
4a30359
raw
history blame
3.58 kB
#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 "", ""