boma-page / app.py
Docfile's picture
Update app.py
e7dad75 verified
raw
history blame
5.11 kB
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)