from flask import Flask, render_template, request, jsonify import os import google.generativeai as genai import time app = Flask(__name__) # Configuration token = os.environ.get("TOKEN") if not token: raise ValueError("La variable d'environnement TOKEN n'est pas définie.") 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)','dikota', 'yipunu', 'omyene_nkomi'] lang_files = { 'nzebi': 'Inzèbi.txt', 'gisir': 'Gisir.txt', 'dikota': 'dd.txt', 'yipunu': 'yipunu.pdf', 'Fang(complet)':'document_modifie.pdf', 'akele': 'Akélé.txt', 'Ghétsogo': 'Ghétsogo.txt', 'Shimo': 'Shimo.txt', 'omyene_nkomi': 'Omyènè_Nkomi.txt', 'isangu': 'Isangu.txt', 'Liwanzi': 'Liwanzi.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 @app.route('/', methods=['GET', 'POST']) def index(): if request.method == 'POST': input_text = request.form['input_text'] source_language = request.form['source_language'] target_language = request.form['target_language'] translated_text = translate(input_text, source_language, target_language) return jsonify({'translated_text': translated_text}) return render_template('index.html', source_languages=source_languages, target_languages=target_languages) if __name__ == '__main__': app.run(debug=True)