import gradio as gr import os import google.generativeai as genai import time # Configuration token = os.environ.get("TOKEN") genai.configure(api_key=token) generation_config = { "temperature": 1, "max_output_tokens": 8192, } safety_settings = [ { "category": "HARM_CATEGORY_HARASSMENT", "threshold": "BLOCK_NONE" }, { "category": "HARM_CATEGORY_HATE_SPEECH", "threshold": "BLOCK_NONE" }, { "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", "threshold": "BLOCK_NONE" }, { "category": "HARM_CATEGORY_DANGEROUS_CONTENT", "threshold": "BLOCK_NONE" }, ] model = genai.GenerativeModel( model_name="gemini-1.5-flash-002", generation_config=generation_config, safety_settings=safety_settings ) source_languages = ["Francais", "English", "Spanish"] #target_languages = ['nzebi', 'Fang(ntumu)','Fang(complet)', 'gisir', 'dikota', 'yipunu', 'akele', 'Ghétsogo', 'Shimo', 'omyene_nkomi', 'isangu', 'Liwanzi'] target_languages = ['Fang(ntumu)','dikota'] lang_files = { 'nzebi': 'Inzèbi.txt', 'gisir': 'Gisir.txt', 'dikota': 'dikota.txt', 'yipunu': 'yipunu.pdf', 'Fang(complet)':'document_modifie.pdf', 'omyene_nkomi': 'Omyènè_Nkomi.txt', 'Fang(ntumu)': 'Fang(ntumu).txt' } def main_fang(query): return "En maintenance" async def translate(input_text, source, target): if target == 'yipunu': try: pdf_path = lang_files[target] d = time.time() if not os.path.exists(pdf_path): return f"Erreur: Le fichier {pdf_path} n'existe pas." sample_file = genai.upload_file(path=pdf_path, display_name="yipunu-reference") s = time.time() print(s-d) prompt = f""" Using the provided Yipunu language reference PDF, translate the following text: Input text: {input_text} Please provide only the translation without any additional explanation. """ print(input_text) content = [sample_file, prompt] response = model.generate_content(content, request_options={"timeout": 600}) genai.delete_file(sample_file.name) print(response.text) return response.text except Exception as e: return f"Erreur lors de la traduction: {str(e)}" elif target == 'Fang(complet)': try: pdf_path = lang_files[target] d = time.time() if not os.path.exists(pdf_path): return f"Erreur: Le fichier {pdf_path} n'existe pas." sample_file = genai.upload_file(path=pdf_path, display_name="yipunu-reference") s = time.time() print(s-d) prompt = f""" Using the provided Fang language reference PDF, translate the following text: Input text: {input_text} Please provide only the translation without any additional explanation. """ print(input_text) content = [sample_file, prompt] response = model.generate_content(content, request_options={"timeout": 600}) genai.delete_file(sample_file.name) print(response.text) return response.text except Exception as e: return f"Erreur lors de la traduction: {str(e)}" else: chemin_fichier = lang_files[target] with open(chemin_fichier, 'r', encoding='utf-8') as fichier: contenu_langue_arrivee = fichier.read() tt = f""" contexte: {contenu_langue_arrivee} Utillisez les éléments de contexte suivants pour répondre à la question à la fin. Si vous ne connaissez pas la réponse, traduisez ce que vous pouvez et reecriver les autre comme ca, n'essayez pas d'inventer une réponse. Je veux que tu agisses comme un traducteur {target}. Je parle en français et tu traduis en {target} en te basant sur le contexte. Je ne veux aucune explication. Juste la réponse. Traduit ca < {input_text} > """ print(input_text) response = model.generate_content(tt) print(response.text) return response.text with gr.Blocks(theme=gr.themes.Default()) as demo: gr.HTML("""

BOMA LANGUE

""") with gr.Row(): with gr.Column(scale=1): source_language_dropdown = gr.Dropdown( choices=source_languages, value="Francais", label="Langue source", allow_custom_value=True, ) input_textbox = gr.Textbox( lines=5, placeholder="Entrez le texte à traduire", label="Texte source", ) with gr.Column(scale=1): target_language_dropdown = gr.Dropdown( choices=target_languages, value="dikota", label="Langue cible", allow_custom_value=True, ) translated_textbox = gr.Textbox( lines=5, placeholder="Traduction", label="Texte traduit", ) with gr.Row(): btn = gr.Button("Traduire ⇄") btn.click( translate, inputs=[input_textbox, source_language_dropdown, target_language_dropdown], outputs=translated_textbox ) if __name__ == "__main__": demo.launch()