Docfile commited on
Commit
6407653
·
verified ·
1 Parent(s): f2b1169

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +25 -29
app.py CHANGED
@@ -4,10 +4,6 @@ import os
4
  from PIL import Image
5
  import tempfile
6
  import PIL.Image
7
- import requests
8
- from urllib.parse import urlparse
9
- import ssl
10
- import time
11
 
12
  app = Flask(__name__)
13
 
@@ -27,6 +23,7 @@ safety_settings = [
27
  {"category": "HARM_CATEGORY_DANGEROUS_CONTENT", "threshold": "BLOCK_NONE"},
28
  ]
29
 
 
30
  @app.route('/')
31
  def generale():
32
  return render_template("generale.html")
@@ -52,23 +49,26 @@ def upload_and_process_file(file_path):
52
  raise ValueError(f"Le fichier {file_path} est vide")
53
 
54
  # Upload du fichier
55
- # Note: genai.upload_file n'existe pas dans l'API Gemini, tu dois utiliser des multipart
56
- # comme dans l'exemple ci-dessous pour uploader des fichiers.
57
- # Ici, je vais simuler l'upload avec un print pour l'exemple.
58
- print(f"Upload réussi (simulation): {file_path}")
59
 
60
- # Attente du traitement (simulation)
61
- # Dans une vraie implémentation, tu devrais vérifier l'état de l'upload
62
  timeout = 300 # 5 minutes
63
  start_time = time.time()
64
 
65
- while time.time() - start_time < timeout:
66
- print(f"En attente du traitement (simulation)... Temps écoulé: {int(time.time() - start_time)}s")
 
 
 
67
  time.sleep(10)
68
- break # Simule la fin du traitement
69
 
70
- print(f"Traitement terminé avec succès (simulation): {file_path}")
71
- return {"path": file_path, "status": "success"} # Retourne un objet similaire
 
 
 
72
 
73
  except ssl.SSLError as e:
74
  print(f"Erreur SSL lors de l'upload (tentative {attempt + 1}): {e}")
@@ -146,7 +146,6 @@ def submit_question():
146
  question = request.form.get('question')
147
  urls = request.form.getlist('urls')
148
  files = request.files.getlist('files')
149
- web_search = request.form.get('web_search') == 'true' # Récupère l'état de la recherche web
150
 
151
  print("URLs reçues:", urls)
152
  content = [question]
@@ -162,8 +161,7 @@ def submit_question():
162
  if file.filename.lower().endswith(('.png', '.jpg', '.jpeg', '.gif')):
163
  content.append(PIL.Image.open(temp_file.name))
164
  else:
165
- # Simulation de l'upload pour les autres types de fichiers
166
- uploaded_file = {"path": temp_file.name, "status": "success"}
167
  content.append(uploaded_file)
168
 
169
  # Traitement des URLs
@@ -173,29 +171,25 @@ def submit_question():
173
  video_path = download_youtube_video(url)
174
  if video_path:
175
  temp_files.append(video_path)
176
- # Simulation de l'upload pour les vidéos
177
- uploaded_file = {"path": video_path, "status": "success"}
178
  content.append(uploaded_file)
179
  elif url.lower().endswith('.pdf'):
180
  pdf_path = telecharger_pdf(url)
181
  if pdf_path:
182
  temp_files.append(pdf_path)
183
- # Simulation de l'upload pour les PDFs
184
- uploaded_file = {"path": pdf_path, "status": "success"}
185
  content.append(uploaded_file)
 
 
186
 
187
 
188
  # Génération de contenu avec Gemini
189
  model = genai.GenerativeModel(
190
- model_name="gemini-1.5-flash",
191
  safety_settings=safety_settings,
192
  system_instruction="Tu es un assistant intelligent. ton but est d'assister au mieux que tu peux. tu as été créé par Aenir et tu t'appelles Mariam."
193
  )
194
- # Intégration de la recherche web
195
- if web_search:
196
- response = model.generate_content(question,tools='google_search_retrieval',request_options={"timeout": 600})
197
- else:
198
- response = model.generate_content(content, request_options={"timeout": 600})
199
  return jsonify({"response": response.text})
200
 
201
  except Exception as e:
@@ -206,4 +200,6 @@ def submit_question():
206
  try:
207
  os.unlink(temp_file)
208
  except Exception as e:
209
- print(f"Erreur lors de la suppression du fichier temporaire {temp_file}: {e}")
 
 
 
4
  from PIL import Image
5
  import tempfile
6
  import PIL.Image
 
 
 
 
7
 
8
  app = Flask(__name__)
9
 
 
23
  {"category": "HARM_CATEGORY_DANGEROUS_CONTENT", "threshold": "BLOCK_NONE"},
24
  ]
25
 
26
+
27
  @app.route('/')
28
  def generale():
29
  return render_template("generale.html")
 
49
  raise ValueError(f"Le fichier {file_path} est vide")
50
 
51
  # Upload du fichier
52
+ uploaded_file = genai.upload_file(path=file_path)
53
+ print(f"Upload réussi: {uploaded_file.uri}")
 
 
54
 
55
+ # Attente du traitement
 
56
  timeout = 300 # 5 minutes
57
  start_time = time.time()
58
 
59
+ while uploaded_file.state.name == "PROCESSING":
60
+ if time.time() - start_time > timeout:
61
+ raise TimeoutError("Timeout pendant le traitement du fichier")
62
+
63
+ print(f"En attente du traitement... Temps écoulé: {int(time.time() - start_time)}s")
64
  time.sleep(10)
65
+ uploaded_file = genai.get_file(uploaded_file.name)
66
 
67
+ if uploaded_file.state.name == "FAILED":
68
+ raise ValueError(f"Échec du traitement: {uploaded_file.state.name}")
69
+
70
+ print(f"Traitement terminé avec succès: {uploaded_file.uri}")
71
+ return uploaded_file
72
 
73
  except ssl.SSLError as e:
74
  print(f"Erreur SSL lors de l'upload (tentative {attempt + 1}): {e}")
 
146
  question = request.form.get('question')
147
  urls = request.form.getlist('urls')
148
  files = request.files.getlist('files')
 
149
 
150
  print("URLs reçues:", urls)
151
  content = [question]
 
161
  if file.filename.lower().endswith(('.png', '.jpg', '.jpeg', '.gif')):
162
  content.append(PIL.Image.open(temp_file.name))
163
  else:
164
+ uploaded_file = upload_and_process_file(temp_file.name)
 
165
  content.append(uploaded_file)
166
 
167
  # Traitement des URLs
 
171
  video_path = download_youtube_video(url)
172
  if video_path:
173
  temp_files.append(video_path)
174
+ uploaded_file = upload_and_process_file(video_path)
 
175
  content.append(uploaded_file)
176
  elif url.lower().endswith('.pdf'):
177
  pdf_path = telecharger_pdf(url)
178
  if pdf_path:
179
  temp_files.append(pdf_path)
180
+ uploaded_file = upload_and_process_file(pdf_path)
 
181
  content.append(uploaded_file)
182
+
183
+
184
 
185
 
186
  # Génération de contenu avec Gemini
187
  model = genai.GenerativeModel(
188
+ model_name="models/gemini-1.5-flash-002",
189
  safety_settings=safety_settings,
190
  system_instruction="Tu es un assistant intelligent. ton but est d'assister au mieux que tu peux. tu as été créé par Aenir et tu t'appelles Mariam."
191
  )
192
+ response = model.generate_content(content, request_options={"timeout": 600})
 
 
 
 
193
  return jsonify({"response": response.text})
194
 
195
  except Exception as e:
 
200
  try:
201
  os.unlink(temp_file)
202
  except Exception as e:
203
+ print(f"Erreur lors de la suppression du fichier temporaire {temp_file}: {e}")
204
+
205
+