Docfile commited on
Commit
24ccb55
·
verified ·
1 Parent(s): 6822891

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +13 -48
app.py CHANGED
@@ -1,11 +1,8 @@
1
- from flask import Flask, render_template, request, jsonify, Response
2
  import google.generativeai as genai
3
  import os
4
  from PIL import Image
5
  import tempfile
6
- import io
7
- import uuid
8
- import time
9
 
10
  app = Flask(__name__)
11
 
@@ -13,6 +10,7 @@ app = Flask(__name__)
13
  token = os.environ.get("TOKEN")
14
  genai.configure(api_key=token)
15
 
 
16
  safety_settings = [
17
  {"category": "HARM_CATEGORY_HARASSMENT", "threshold": "BLOCK_NONE"},
18
  {"category": "HARM_CATEGORY_HATE_SPEECH", "threshold": "BLOCK_NONE"},
@@ -27,9 +25,6 @@ model = genai.GenerativeModel(
27
  safety_settings=safety_settings
28
  )
29
 
30
- # Dictionnaire pour stocker les réponses en cours de génération
31
- pending_responses = {}
32
-
33
  @app.route('/')
34
  def home():
35
  return render_template('index.html')
@@ -38,55 +33,25 @@ def home():
38
  def generate():
39
  if 'image' not in request.files:
40
  return jsonify({'error': 'No image uploaded'}), 400
41
-
42
  image_file = request.files['image']
43
- request_id = str(uuid.uuid4()) # Générer un identifiant unique
44
-
45
  # Sauvegarder temporairement l'image
46
- with tempfile.NamedTemporaryFile(delete=False, suffix='.png') as temp_file:
47
  image_file.save(temp_file.name)
48
  try:
49
  image = Image.open(temp_file.name)
50
- # Convertir l'image en bytes pour le streaming
51
- img_byte_arr = io.BytesIO()
52
- image.save(img_byte_arr, format='PNG')
53
- img_byte_arr = img_byte_arr.getvalue()
54
-
55
- # Générer le contenu en streaming et obtenir l'itérateur
56
- response_iterator = model.generate_content([mm, {"mime_type": "image/png", "data": img_byte_arr}], stream=True)
57
-
58
- # Stocker l'itérateur dans le dictionnaire
59
- pending_responses[request_id] = {
60
- 'status': 'processing',
61
- 'iterator': response_iterator
62
- }
63
-
64
- return jsonify({'request_id': request_id})
65
  except Exception as e:
66
- return jsonify({'error': str(e)}), 500
67
  finally:
68
- # Nettoyer le fichier temporaire
69
  os.unlink(temp_file.name)
70
 
71
- @app.route('/stream/<request_id>')
72
- def stream(request_id):
73
- def generate_stream():
74
- while request_id in pending_responses and pending_responses[request_id]['status'] == 'processing':
75
- try:
76
- # Utiliser l'itérateur stocké pour obtenir le prochain chunk
77
- chunk = next(pending_responses[request_id]['iterator'])
78
- yield f"data: {chunk.text}\n\n"
79
- except StopIteration:
80
- pending_responses[request_id]['status'] = 'completed'
81
- except Exception as e:
82
- yield f"data: Error: {str(e)}\n\n"
83
- pending_responses[request_id]['status'] = 'error'
84
- time.sleep(0.1) # Attendre un peu avant de vérifier à nouveau
85
-
86
- if request_id in pending_responses:
87
- del pending_responses[request_id]
88
-
89
- return Response(generate_stream(), mimetype='text/event-stream')
90
-
91
  if __name__ == '__main__':
92
  app.run(debug=True)
 
1
+ from flask import Flask, render_template, request, jsonify
2
  import google.generativeai as genai
3
  import os
4
  from PIL import Image
5
  import tempfile
 
 
 
6
 
7
  app = Flask(__name__)
8
 
 
10
  token = os.environ.get("TOKEN")
11
  genai.configure(api_key=token)
12
 
13
+
14
  safety_settings = [
15
  {"category": "HARM_CATEGORY_HARASSMENT", "threshold": "BLOCK_NONE"},
16
  {"category": "HARM_CATEGORY_HATE_SPEECH", "threshold": "BLOCK_NONE"},
 
25
  safety_settings=safety_settings
26
  )
27
 
 
 
 
28
  @app.route('/')
29
  def home():
30
  return render_template('index.html')
 
33
  def generate():
34
  if 'image' not in request.files:
35
  return jsonify({'error': 'No image uploaded'}), 400
36
+
37
  image_file = request.files['image']
38
+
 
39
  # Sauvegarder temporairement l'image
40
+ with tempfile.NamedTemporaryFile(delete=False) as temp_file:
41
  image_file.save(temp_file.name)
42
  try:
43
  image = Image.open(temp_file.name)
44
+
45
+ # Générer le contenu
46
+ response = model.generate_content([mm, image])
47
+ result = response.text
48
+
49
+ return jsonify({"result": result})
 
 
 
 
 
 
 
 
 
50
  except Exception as e:
51
+ return jsonify({'error': str(e)}), 500
52
  finally:
53
+ # Nettoyer le fichier temporaire
54
  os.unlink(temp_file.name)
55
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
56
  if __name__ == '__main__':
57
  app.run(debug=True)